List calls
Calls
List calls
GET /v1/calls
GET
List calls
Returns your calls, newest first. 50 per page by default - page through the rest with
Fetch one call by ID with Get call.
limit and offset.
Request
Query parameters
The response is a bare array, not an object with a
total or has_more. Page
until you get fewer rows back than you asked for.Response
200 OK returns a JSON array:
Response fields
duration_ms is time CONNECTED, not dial-to-hangup. Ring time is excluded, so
it matches what your carrier bills you and it matches the recording length. On an
outbound call start_timestamp is when dialling began, so
end_timestamp - start_timestamp will be LARGER than duration_ms by however long
the phone rang. Use answered_at if you want the ring time:
answered_at - start_timestamp.The response includes internal fields that are not part of this contract. You
will see
id, api_key_id and system_prompt_used in the JSON. They are yours,
but they are engine plumbing rather than API surface - do not build against them, as
they may change or be removed without a version bump.Older calls stay reachable with
offset, but call data is deleted after 90 days -
see Data retention. To keep full history, subscribe to
the call.completed webhook and store each call in your own
backend as it arrives.