Skip to content

Call summaries

Use an API key or REST OAuth access token. Scopes and your current workspace permissions apply together. All examples are illustrative.

List stored call summaries

GET /api/external/v1/call-summaries

Scope: call-summaries:read

Reads stored call summaries for a time range.

  • Selects by call start: from inclusive, to exclusive. Include a timezone in both bounds.
  • Fetch every page. Results contain stored nonblank summaries and redacted records.
  • Redacted entries have null summary and phone numbers. No transcripts or newly generated summaries are returned.

An empty result does not prove there were no calls.

Parameters

Name Location Type Required Description
from Query string (date-time) Yes Inclusive call-start bound with timezone.
Example: 2026-11-02T00:00:00+01:00
to Query string (date-time) Yes Exclusive call-start bound with timezone; must be after from.
Example: 2026-11-03T00:00:00+01:00
page Query integer (int32) No Page index, starting at 0.
Rules: 0–100000
Default: 0
size Query integer (int32) No Results per page.
Rules: 1–100
Default: 25

Response 200

Success.

Header Type Description
Cache-Control string The response must not be cached.
Example: no-store

application/json

Field Type Description
items List of object Results on this page.
page integer (int32) Current page index, starting at 0.
size integer (int32) Number of results requested per page.
totalElements integer (int64) Total number of matching results.
totalPages integer (int32) Total number of result pages.
items — fields
Field Type Description
callRecordId string (uuid) ID of the call record.
fromNumber string Stored caller number; null when redacted.
toNumber string Stored destination number; null when redacted.
startTime string (date-time) Start time of the call.
endTime string (date-time) Call end time; null if the call has not ended.
durationSeconds integer (int64) Call duration in seconds; null if it is not yet available.
direction string Direction of the call.
purpose string Purpose assigned to the call.
Values: INBOUND_AI, OUTBOUND_CAMPAIGN, FORWARDING_LEG, SCREENING_LEG
isForwarded boolean Whether the call was forwarded.
isConferenceCall boolean Whether the call used a conference.
excludedFromBilling boolean Whether this call is excluded from billing.
piiRedacted boolean Whether personal call data was redacted.
summary string Stored call summary; null when redacted.
{
  "items": [
    {
      "callRecordId": "00000000-0000-0000-0000-000000000001",
      "fromNumber": null,
      "toNumber": null,
      "startTime": "2026-11-02T09:00:00Z",
      "endTime": "2026-11-02T09:03:00Z",
      "durationSeconds": 180,
      "direction": "string",
      "purpose": "INBOUND_AI",
      "isForwarded": false,
      "isConferenceCall": false,
      "excludedFromBilling": false,
      "piiRedacted": false,
      "summary": "The caller requested a callback about a service appointment."
    }
  ],
  "page": 0,
  "size": 25,
  "totalElements": 1,
  "totalPages": 1
}
Error responses
Status Meaning
400 Invalid input, unsupported selection or time range.
401 Missing, expired or invalid credential. The body may be empty.
403 Required scope or current user permission missing. The body may be empty.
429 Shared workspace budget exceeded. Honor Retry-After; do not blindly replay uncertain writes.
503 Temporarily unavailable. Check uncertain writes before retrying.

Error body

Field Type Description
status integer HTTP status code.
error string Description of the error.
details any Additional error details, when available.
Rules: null allowed
code string Machine-readable error code.
params object Additional values associated with the error code.
fieldErrors object Validation errors grouped by input field.

For 429 or 503, honor the Retry-After header (seconds). Check uncertain writes before retrying.