call.transferred
The assistant transferred a call to a person. Sent when the call ends, once per transfer. Sent to the account’s webhooks, and to an OAuth app that subscribes to it while its installation grants calls:read.
Parameters
Section titled “ Parameters ”Header Parameters
Section titled “Header Parameters”t=<unix seconds>,v1=<hex HMAC-SHA256>, the HMAC computed over <t>.<raw body> with the signing secret. During a secret rotation it carries one v1 per secret: accept the request if any matches.
The event type, as in type.
The event ID, as in id.
Request Bodyrequired
Section titled “Request Bodyrequired”object
The event’s ID, evt_ and 32 hex characters. Equal to the X-Talki-Delivery header and unchanged on a redelivery: deduplicate on it.
When the event was written, ISO 8601 with a +00:00 offset, possibly with microseconds. Parse it as an instant.
The dated contract version data is shaped for: the endpoint’s version on a webhook, the app’s on an app event.
The Talki account the event happened on.
false for an event from a sandbox account.
object
Where the change came from: voice (the assistant, during a call), dashboard (a person in the Talki web or mobile app), api (a credential through the API) or system (a rule Talki applied on its own). New values may be added; treat one you do not recognise as unknown.
The event’s payload.
object
The Call object, as the REST API returns it.
object
Opaque Talki call identifier. Decided when the call arrives: the call.ringing event sent while it rang carries the same id as data.call_id.
The location the call was for: the one whose Talki number the caller dialled (GET /v1/locations). Never null: a call to the account’s own number, and every call from before locations existed, is the main location’s. It never changes.
Who called, as far as the account knows. Always present; its fields may be null. display_name is set only for a name the owner entered or imported, never for one the assistant heard.
When the call ARRIVED, before the assistant picked up. RFC 3339 UTC. This is the ordering key for GET /v1/calls.
Appointments booked during this call, oldest first. Empty for a call that booked nothing. Includes appointments since cancelled — the link records what the call did, not the appointment’s current state.
A hand-over of the call to a person, in the order it happened.
An existing appointment the call moved or cancelled.
object
The appointment.
rescheduled or cancelled.
When this record was written, RFC 3339 UTC: after the call ended, so a long call can be written after a shorter call that started later. created_after filters on this field. Do not use it as a sync watermark: records do not become visible in created_at order, so a watermark on it can skip a call permanently. Resume a sync with GET /v1/calls?sync=true and its cursor.
The destination the assistant transferred to, by the name the owner gave it in Talki (e.g. Reception). Never the number behind it. Compare it case-insensitively.
Example
{ "id": "evt_04d8e87897db4ecab459a456ea55e754", "type": "call.transferred", "created_at": "2026-09-22T15:04:06.218734+00:00", "api_version": "2026-10-01", "account_id": "f7e39b9a-1ac8-45e4-93da-2600f17cb286", "livemode": true, "origin": { "source": "voice", "credential_id": null, "idempotency_key": null }, "data": { "object": { "id": "38d23d84-02d2-4418-b169-3608aa04a8f8", "location_id": "0b7d4e19-8a2c-4f61-9d3e-5c1a7b2f8e40", "caller": { "contact_id": "8fbb25f2-4f3b-4496-8aea-f0fc66de512d", "phone_number": "+393331234567", "display_name": "Giulia Bianchi" }, "started_at": "2026-09-15T09:14:31Z", "answered_at": "2026-09-15T09:14:34Z", "ended_at": "2026-09-15T09:18:02Z", "duration_seconds": 208, "summary": "Giulia booked a haircut for the morning of 8 October.", "appointment_ids": [ "a3fe45ee-572f-4677-b1dd-f36c21bb47de" ], "outcome": "transferred", "transfers": [ { "target_label": "Reception", "at": "2026-09-22T15:03:30.512417Z" } ], "appointment_changes": [], "unresolved_request_ids": [], "created_at": "2026-09-15T09:18:03Z", "read_at": "2026-09-15T10:02:11Z", "archived_at": null }, "target_label": "Reception", "transferred_at": "2026-09-22T15:03:30.512417Z" }}Responses
Section titled “ Responses ”Any 2xx acknowledges the event. Any other status, a redirect, or no answer within 10 seconds is a failure and is retried; 410 disables a webhook endpoint at once.
