Endpoints
| Method | Path | Description |
|---|---|---|
GET | /v1/calls | List calls (paginated, filterable) |
GET | /v1/calls/export | Bulk export up to 1,000 calls as CSV or JSON |
GET | /v1/calls/{call_id} | Retrieve a single call |
GET | /v1/calls/{call_id}/audio | Get a time-limited recording URL |
GET | /v1/calls/{call_id}/transcript | Fetch the transcript |
GET | /v1/calls/{call_id}/history | Fetch the full structured turn history |
GET | /v1/calls/{call_id}/grade | Fetch the latest AI quality grade |
POST | /v1/calls/{call_id}/grade | Run (or re-run) AI grading |
GET | /v1/calls/{call_id}/issue-reports | List issue reports for a call |
POST | /v1/calls/{call_id}/issue-reports | File an issue report |
Call object
| Field | Type | Description |
|---|---|---|
call_id | integer | Server-assigned call id (also the key in every other endpoint on this page) |
agent_id | integer | null | Agent that handled the call |
direction | string | inbound, outbound, mic, or widget |
from_number | string | E.164 caller number. mic sessions use an internal identifier |
to_number | string | E.164 destination number |
start_time, end_time | timestamp | null | ISO 8601 UTC. end_time is null while status="in_progress" |
duration_seconds | integer | null | Derived |
status | string | in_progress, completed, or failed |
end_reason | string | null | Free-form reason e.g. caller_hangup, agent_end, timeout |
recording_url | string | null | Internal GCS path. Use /audio for a playable URL |
is_test_call | boolean | True if the call is part of a test-calls run |
product, voice | string | The Agent config in effect at call time |
billable_minutes | integer | null | Rounded-up minute count used for billing |
billing_total_cents | integer | null | Final bill in USD cents |
billed_at | timestamp | null | When billing finalised |
grade_score | number | null | 0.0–1.0 quality score from latest AI grading |
grade_status | string | null | pending, completed, or failed |
grade_updated_at | timestamp | null | Last grading run |
issue_count | integer | Total issue reports filed against this call |
critical_issue_count | integer | Subset with severity critical |
List calls
Query parameters
| Param | Type | Default | Description |
|---|---|---|---|
limit | integer | 50 | Page size (1–200) |
offset | integer | 0 | |
agent_id | integer | Filter by agent | |
direction | string | inbound, outbound, mic, widget | |
status | string | in_progress, completed, failed | |
from_number | string | E.164 | |
to_number | string | E.164 | |
start_date | ISO 8601 | Earliest start_time | |
end_date | ISO 8601 | Latest start_time |
Paginated response
offset + limit to page forward; check total to know when
you’ve reached the end.
Export calls
Bulk-download up to 1,000 of the most recent completed calls as either CSV (metadata only) or JSON (includes transcripts).| Query param | Required | Description |
|---|---|---|
export_format | yes | csv or json |
Content-Disposition: attachment header with a
dated filename (calls-export-YYYY-MM-DD.csv). Exports cap at 1,000
rows — use the list endpoint with offset pagination for larger windows.
Retrieve a call
200 OK with a Call object, or 404 if the
call does not belong to your organization.
Get recording audio
Returns a short-lived signed URL to the MP3 recording on Google Cloud Storage. Stream the URL directly to your audio player — do not store it (it expires).Response
| Status | Condition |
|---|---|
200 | Recording exists, URL returned |
404 | Call or recording not found |
Get transcript
Simplified, user-facing transcript (role-tagged speech only; no system events). For the full structured history including function calls, interruptions, and latency metrics use/history.
Response
| Field | Type | Description |
|---|---|---|
role | string | user, assistant, tool_call, or tool_response |
content_type | string | text, function, or function_response |
content | string | Human-readable content |
start_ms, end_ms | integer | Offset from call start in milliseconds |
Get history
Full structured turn history. Use this when you need raw function-call arguments, interruption markers, ack-prompt annotations, or first-byte latencies.span, completion,
patch, function_call, function_response, interrupt, and
acknowledgement.
AI call grading
Get latest grade
Response
200 OK with the latest grade row, or 404 if the call has
not been graded.
Run grading
Trigger an asynchronous re-grade of the call. Passforce=true to
ignore recent grades and re-run unconditionally.
200 OK with the grade row in status="pending" — poll the
GET endpoint until status="completed" (usually under 30 s).
Issue reports
Issue reports let your team (or automated grading) flag specific calls for review. Reports have a severity and optional title/description and appear in the org-wide Issue Reports feed.List reports for a call
File a report
| Field | Type | Required | Allowed values |
|---|---|---|---|
title | string | yes | 1–120 chars |
description | string | no | Free-form |
severity | string | yes | info, warning, critical |
201 Created with the Issue Report object.
Related
Outbound Calls
Trigger a new outbound call via
POST /v1/call.Mic Sessions
Test an agent live from a browser.
Issue Reports
Org-wide feed of issue reports across calls.
Test Calls
Programmatic batched smoke tests against an agent.