Skip to content

Get a conversation

GET /hooks/api_v1.php?r=conversations/{lead_id} merges messages, calls, and appointment events into one oldest-first timeline.

Required scope: conversations:read

Terminal window
curl --fail-with-body \
-H "X-Api-Key: $DIALDOZER_API_KEY" \
"https://app.dialdozer.com/hooks/api_v1.php?r=conversations/48219"
{
"ok": true,
"lead": {"lead_id":48219,"name":"Maya Chen","phone":"6025550142","status":"NEW"},
"entries": [
{"kind":"msg","id":901,"channel":"sms","direction":"in","actor_type":"contact","actor_id":"","subject":"","body":"Tomorrow works","status":"received","error":"","meta":null,"epoch":1784228400},
{"kind":"call","status":"SALE","secs":243,"agent":"agent7","recording_id":771,"ai_summary":"Customer requested a morning visit.","epoch":1784231000},
{"kind":"event","event":"booked","label":"Booked","actor":"agent7","actor_role":"setter","note":"","epoch":1784231300}
]
}
  • msg: id, channel, direction, actor_type, actor_id, subject, body, status, error, meta, epoch.
  • call: status, secs, agent, nullable recording_id, nullable ai_summary, epoch.
  • event: event, label, actor, actor_role, note, epoch.

epoch values are Unix seconds. The endpoint has no cursor today. It reads up to 200 rows from each backing source, merges them, then keeps the latest 200 entries. Missing/out-of-organization leads return not_found.