Send call data to your system
After every call, send the summary, transcript and collected data to your CRM, webhook or database.
API Call sends the call to your own system once it has ended — the summary, transcript, mood and everything the agent collected. Use it to create a lead in your CRM, start an automation or keep your own records. If your system is down, the request is retried and nothing is lost.
Set it up
- Add the action
Open the agent → Actions → Add Tool → Post call → API Call.
- Point it at your endpoint
Field What to enter Name e.g. CRM lead sync Condition When to send it, e.g. if the caller wants to buy. Empty: after every call API Endpoint URL Your endpoint, e.g. https://hooks.example.com/hancHTTP Method POSTfor most systems;GET,PUT,PATCH,DELETEwork tooHeaders, Query Parameters Optional, e.g. an API key - Shape the request (optional)
- Body (JSON) — your own fields. Type
{{to insert a call variable, e.g.{"lead": "{{firstname}} {{lastname}}", "phone": "{{call_from}}"}. - Send only my fields — leaves out the standard call data, for a system that accepts only its own structure.
- Body (JSON) — your own fields. Type
- Decide what happens on failure
- Retries on failure — the pauses before each new attempt when your endpoint does not answer with
2xx. Default: 1 min, 5 min, 30 min, 2 h, 6 h, 24 h, 48 h. - Failure notification — an email after the last attempt (default), after every failed attempt, or never. Send to: empty means the account owner.
- Retries on failure — the pauses before each new attempt when your endpoint does not answer with
What will my endpoint receive? in the editor shows the exact request.
What your endpoint receives
For POST, PUT and PATCH, a JSON body — your fields merged with the call's fields:
{
"id": "6ac7ea6eca60c6024b465c70",
"agent_id": "6ac2a93e36bad261cf088684",
"call_from": "+431234567890",
"call_to": "+439876543210",
"direction": "inbound",
"call_type": "phone",
"call_status": "success",
"start_timestamp": 1730000000000,
"end_timestamp": 1730000187000,
"duration": 187000,
"transcription": [
{ "speaker": "agent", "content": "Hello…", "timestamp": 1730000001000 },
{ "speaker": "user", "content": "Hi…", "timestamp": 1730000003000 }
],
"call_summary": "Customer asked about pricing…",
"task_achieved": true,
"sentiment": { "sentiment": "positive", "explanation": "…" },
"custom_analysis_data": { "name": "John", "email": "john@example.com" },
"collected_data": {},
"transfer_history": [],
"recording_url": "https://…",
"disconnection_reason": "user_hangup",
"is_anonymous": false,
"is_simulation": false,
"created_at": 1730000000000,
"updated_at": 1730000187000
}
For GET and DELETE the same fields go into the query string, without the nested ones (transcript, sentiment, collected data).
Every request carries X-Hanc-Delivery-Id — the same on every attempt of one delivery, so you can skip duplicates — plus X-Hanc-Attempt with the number of the attempt. Each attempt times out after 30 seconds. Every attempt is listed in CRM → Communications, where a failed delivery can be sent again. Details: Webhooks & delivery.
Use cases
- Create a lead or a ticket in your CRM.
- Start a no-code automation with the call's data.
- Keep your own call archive.