curl https://api.60db.ai/agents/calls/CALL_ID \
-H "Authorization: Bearer your-api-key"
const call = await client.agents.calls.get(callId);
call = client.agents.calls.get(call_id)
{
"status": "<string>",
"reason": {},
"duration_secs": {},
"connected_at": {},
"has_recording": true,
"has_transcript": true,
"summary": {},
"cost": {},
"source": "<string>"
}Agents
Get Call
Status, result, duration, summary and cost of one call
GET
/
agents
/
calls
/
{callId}
curl https://api.60db.ai/agents/calls/CALL_ID \
-H "Authorization: Bearer your-api-key"
const call = await client.agents.calls.get(callId);
call = client.agents.calls.get(call_id)
{
"status": "<string>",
"reason": {},
"duration_secs": {},
"connected_at": {},
"has_recording": true,
"has_transcript": true,
"summary": {},
"cost": {},
"source": "<string>"
}Get one call. Poll this until
status is completed or failed, or use the call.completed and call.failed events instead.
Request
Headers
string
required
Bearer token with your API key (scope
agents)Path
string
required
The call
id (UUID), from Place callResponse
200 OK{
"success": true,
"data": {
"id": "6b1f0c52-4d7e-4b8a-9d3e-2a1c8e7f0a11",
"agent_id": "9c2e1d7a-0b3f-4e6a-8f1d-5a7b9c0e2d44",
"agent_name": "Front desk",
"phone_line_id": "2d8e4f10-6a3b-4c9d-8e7f-0b1a2c3d4e5f",
"direction": "outbound",
"to": "+919999999999",
"from": "+919876543210",
"status": "completed",
"reason": null,
"duration_secs": 62,
"started_at": "2026-11-03T10:16:30.000Z",
"connected_at": "2026-11-03T10:16:38.000Z",
"ended_at": "2026-11-03T10:17:40.000Z",
"record": true,
"has_recording": true,
"has_transcript": true,
"summary": { "turns": 6, "tool_calls": 1, "tool_failures": 0 },
"cost": { "runtime_usd": 0, "runtime_billing_status": "skipped" },
"source": "api",
"metadata": { "crm_lead_id": "L-1042" },
"created_at": "2026-11-03T10:16:30.000Z"
}
}
Fields
string
queued, dialing, in_progress, completed or failed. See call lifecyclestring | null
Short code set when the call ends, such as
dial_unconfirmed, stale or lost. Treat it as informationalinteger | null
Connected seconds.
null until the call endsstring | null
When the call connected.
null if it never didboolean
true when the recording is availableboolean
true when the transcript is availableobject | null
Call summary from the runtime (for example
turns, tool_calls, tool_failures, hung_up, error). null while runningobject
runtime_usd is the agent runtime fee as charged. runtime_billing_status is pending, billed, skipped or failedstring
dashboard, api or mcpErrors
| Status | Code | Meaning |
|---|---|---|
| 404 | CALL_NOT_FOUND | No call with this ID in your workspace (also returned for a non-UUID ID) |
Example
curl https://api.60db.ai/agents/calls/CALL_ID \
-H "Authorization: Bearer your-api-key"
const call = await client.agents.calls.get(callId);
call = client.agents.calls.get(call_id)