Read or run Dex Research on a contact
POST /v2/contacts/{contactId}/research
Parameters
Path parameters
Header parameters
apps/rest-api/src/shared/idempotency.ts.Request body
Content-Type: application/json
Example
{
"run": false,
"force": false
}
Responses
200 — Successful response
Content-Type: application/json
"success", "no_data_found""missing_name", "fetch_failed", "insufficient_info", "wrong_person_suspected""current_focus", "background", "interests""high", "medium", "low""linkedin", "website", "email", "phone""high", "medium", "low""pending", "auto_applied", "applied", "already_present"Example
{
"data": {
"research": {
"run_id": "string",
"status": "success",
"reason": "missing_name",
"researched_at": "string",
"one_line_summary": "string",
"sections": [
{
"key": "current_focus",
"title": "string",
"bullets": [
"string"
]
}
],
"sources": {},
"identity_confidence": "high",
"fields": [
{
"field": "linkedin",
"value": "string",
"display": "string",
"citations": [
0
],
"confidence": "high",
"evidence": "string",
"status": "pending"
}
]
},
"applied": {
"linkedin": false,
"website": false
},
"in_progress": false
}
}
400 — Request body failed validation.
Content-Type: application/json
401 — Missing or invalid API key.
Content-Type: application/json
403 — Valid key, insufficient permission.
Content-Type: application/json
404 — Resource does not exist.
Content-Type: application/json
409 — Request conflicts with the current state of the resource.
Content-Type: application/json
429 — Rate limit exceeded.
Content-Type: application/json
500 — Unexpected server error.
Content-Type: application/json
Code samples
curl https://api.prod.getdex.com/v2/contacts/00000000-0000-0000-0000-000000000000/research \
--request POST \
--header 'Authorization: Bearer YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data '{
"run": false,
"force": false
}'
fetch('https://api.prod.getdex.com/v2/contacts/00000000-0000-0000-0000-000000000000/research', {
method: 'POST',
headers: {
Authorization: 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
run: false,
force: false
})
})
requests.post(
"https://api.prod.getdex.com/v2/contacts/00000000-0000-0000-0000-000000000000/research",
headers={
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
},
json={
"run": False,
"force": False
}
)
Merge duplicate contacts
Merge one or more groups of duplicate contacts. The request body is `{ contactIds: Group[] }` where each group is either a plain array of ≥2 contact IDs (the OLDEST record survives) or `{ contact_ids:
Update a contact
Partially update a contact by its ID. **Requires `Idempotency-Key`.** Returns `{ data: { contact: {...} } }` with the post-update row. Also fires a Pub/Sub message to auto-add the contact to social gr

