Fetch a single call
The full call detail record: outcome, duration, what was billed, the agent version that ran it, your declared output variables, the evaluation verdicts and the per-call variables it was given.
Requires the read scope. A key with less gets 403 insufficient_scope.
Authorization: Bearer tone_live_… or tone_test_…. The prefix IS the environment: a test key reaches only the sandbox, and no request field bridges the two.
In: header
Path Parameters
The call's id.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/v1/calls/string"{ "data": { "agent": { "id": "9f1c2d84-4e3a-4f6c-b902-7d1e8a33c451", "name": "Order confirmation" }, "agentVersion": 3, "answeredAt": "2026-08-25T09:14:31Z", "billedPaise": 375, "campaignId": null, "channel": "pstn", "compliance": "passed", "createdAt": "2026-08-25T09:14:22Z", "direction": "outbound", "disposition": "answered", "durationSeconds": 45, "endReason": "agent_ended", "endedAt": "2026-08-25T09:15:11Z", "environment": "live", "evaluations": {}, "hasRecording": true, "hasTranscript": true, "id": "9f1c2d84-4e3a-4f6c-b902-7d1e8a33c451", "initiator": { "id": "key_8f14a2c9", "type": "api_key" }, "number": { "e164": "+918045678901", "id": "4b7c1a02-9de5-4f31-bb07-2c1a5e9f0d43" }, "outputs": { "confirmed": true, "delivery_day": "Thursday" }, "peer": "+919876543210", "quality": { "answerP50Ms": 480, "perceivedP50Ms": 0, "turns": 6 }, "ratePaisePerMinute": 500, "startedAt": "2026-08-25T09:14:26Z", "status": "ended", "summary": "Customer confirmed the order and asked for Thursday delivery.", "transfer": { "acceptedAt": null, "answeredAt": "2026-10-13T10:01:41Z", "attempt": 1, "bridgedAt": "2026-10-13T10:01:52Z", "brief": "Transfer from Acme's digital assistant, about a complaint. This call is recorded. Press 1 to take the call.", "destination": { "label": "Delivery team" }, "endedAt": "2026-10-13T10:05:12Z", "hasRecording": true, "hasReturnRecording": false, "humanSeconds": 200, "id": "5b2c1e3d-9a4f-4e6b-8c7d-1f2e3a4b5c6d", "mode": "screened", "outcome": null, "reason": "out_of_scope", "requestedAt": "2026-10-13T10:01:30Z", "status": "bridged", "trigger": "model" }, "variables": { "customer_name": "Priya", "order_id": "AC-4417" }, "verdict": "success" }}Export the filtered call log as CSV (newest first, max 10,000 rows)
Takes the same filters as the list endpoint and streams a CSV rather than JSON. The column order is deliberately frozen — new fields are appended, never inserted — so a positional parser keeps working.
List calls, newest first (cursor-paginated)
Every call, inbound and outbound, including campaign calls. Filter by agent, number, campaign, direction, disposition or date range. A campaign filter here returns every ATTEMPT including retries, which the recipient list cannot give you.