Skip to navigation

List call history

Stable descending creation time/ID order. UTC [start,end), maximum 93 days. Includes this workspace’s call records; no diagnostic payloads. updated_since selects changes polling; otherwise creation order applies. Cursor binds every filter and workspace. Metadata lookup supports recovery after intent-key expiry; reconcile all matches and do not automatically redial when ambiguous. ID-list filters use repeated query names. Raw supplied ID count across fields is at most 100. Cursor binds normalized filters; filtered lists are not exact batch retrieval. Changes to transcript, extraction, summary or tool outcomes advance updated_at, including after call terminality. Summary states can be filtered. updated_at is computed at read time from the call, its stored results and its tool outcomes; a GET never starts generation. For more than 100 ID values, use POST /calls/search with the same filter names. In updated_since mode start/end bound updated_at, not created_at; the creation-time default range does not apply. updated_since is the inclusive lower bound; if start is also supplied it must equal updated_since. end is an optional exclusive upper bound, capped by the server visibility watermark. The 93-day maximum scan span remains. Pagination holds its original watermark.

Authentication

AuthorizationBearer

Create and manage workspace-owned keys through the existing app session routes, outside this public API. Creator and manager identities are audit actors only. Key validity follows workspace policy, expiry and explicit revocation, independently of creator membership. Do not include a workspace-selection header.

Query parameters

limitintegerOptional1-200Defaults to 50

Page size; 50 by default, at most 200.

cursorstringOptional
Opaque cursor bound to the workspace, every filter, grouping and limit. Send them unchanged with it. Expires after 24 hours.
statelist of stringsOptional

Exact canonical state filter. Known values: admitted, active, evidence_pending, complete, incomplete, aborted. Invalid filters are refused, not ignored. Repeat for OR within this field; AND with other fields. These are not ID entries; at most 16 values per field, the same bound as the POST form. An empty array is invalid and refused: SDKs refuse it before sending, and the server refuses an empty or blank value. Omission means no filter.

startdatetimeOptional
Inclusive UTC timestamp. Range must be at most 93 days.
enddatetimeOptional
Exclusive UTC timestamp. Default range is trailing 30 days.
updated_sincedatetimeOptional

Changes polling mode. Inclusive lower bound. Orders by updated_at then id ascending; cursor retains a fixed scan upper bound. After the last page use the returned scanned_through as the next updated_since and deduplicate by (id,updated_at). Updates after the bound appear on the next scan. This is current-state reconciliation, not a lossless event log.

terminalbooleanOptional
Filter terminality.
transcript_statelist of stringsOptional

Exact known transcript state; unsupported values refused. Repeat for OR within this field; AND with other fields. These are not ID entries; at most 16 values per field, the same bound as the POST form. An empty array is invalid and refused: SDKs refuse it before sending, and the server refuses an empty or blank value. Omission means no filter.

extraction_statelist of stringsOptional

Exact known extraction state; unsupported values refused. Repeat for OR within this field; AND with other fields. These are not ID entries; at most 16 values per field, the same bound as the POST form. An empty array is invalid and refused: SDKs refuse it before sending, and the server refuses an empty or blank value. Omission means no filter.

metadata_keystringOptionalformat: "^[a-z][a-z0-9_]{0,63}$"1-64 characters

Use with metadata_value for exact customer correlation. Both fields must be supplied.

metadata_valuelist of stringsOptional

Exact metadata values for metadata_key (OR). Repeat the name for several values; they count toward the 100 raw filter values. Multiple calls may match one value. An empty array is invalid and refused: SDKs refuse it before sending, and the server refuses an empty or blank value. Omission means no filter.

call_idlist of stringsOptional

Repeat the query name for multiple IDs. OR within this field; AND across fields. Maximum 100 raw ID entries total across all ID filters. Blank values are invalid. Unknown/inaccessible IDs produce no rows, not an existence disclosure. An empty array is invalid and refused: SDKs refuse it before sending, and the server refuses an empty or blank value. Omission means no filter.

agent_idlist of stringsOptional

Repeat the query name for multiple IDs. OR within this field; AND across fields. Maximum 100 raw ID entries total across all ID filters. Blank values are invalid. Unknown/inaccessible IDs produce no rows, not an existence disclosure. An empty array is invalid and refused: SDKs refuse it before sending, and the server refuses an empty or blank value. Omission means no filter.

summary_statelist of stringsOptional

Repeat for OR within state; AND across filters. Unsupported states or blank values are refused. An empty array is invalid and refused: SDKs refuse it before sending, and the server refuses an empty or blank value. Omission means no filter.

Response headers

X-Request-IdstringOptional
Safe server request correlation ID.
RateLimit-LimitintegerOptional
Requests allowed in the current window for the tightest applicable limit.
RateLimit-RemainingintegerOptional
Requests left in the current window.
RateLimit-ResetintegerOptional
Seconds until the current window resets.

Response

List call history.
itemslist of objects
next_cursorstring or null
Opaque continuation cursor. Null means the last page.
scanned_throughdatetime or null
poll_after_secondsinteger>=1

Errors

400
Bad Request Error
401
Unauthorized Error
403
Forbidden Error
429
Too Many Requests Error
500
Internal Server Error
503
Service Unavailable Error