VocalDocscontracts 1.65.0

List the events of a Call

GET /v1/calls/{call_id}/events

PropertyValue
Operationlist_call_events
GroupCalls
Scopecalls:read
Route classread
IdempotencyNo Idempotency-Key
AuditNot audited: A metadata read; Call events carry no content.
Released in1.18.0
Phase 0 hostServed (the hosted api pins 1.65.0)

The events of one Call, oldest first by at and then seq, as identifiers, codes, numbers and booleans, never content (1.18.0). From 1.27.0 the api stores each event when it records the change the event describes (workspace ADR 0076), so a Call answers its events so far while it runs: its creation, ringing, answer, an end request, its end and what LiveKit reported before the end. The events the worker reports through its trace marks (settings.resolved, provider.failover, recording.uploaded, dial.answered and disclosure.played) are recorded at finalize and take their place by at, so a page read before finalize can lack events that a later read shows before the last row it returned; a reader that needs every event reads the list again once the Call has ended. A Call finalized before the api stored its events is served from its trace marks, with the five earlier types only.

Request

Set VOCAL_API to the base URL of your API and VOCAL_API_KEY to an API key with the calls:read scope (Authentication and keys). Replace each placeholder, such as agt_... or <name>, with your own value.

curl "$VOCAL_API/v1/calls/call_.../events" \
  -H "Authorization: Bearer $VOCAL_API_KEY"

Parameters

NameInTypeRequiredDescription
call_idpathCallIdyesThe id of a Call: call_ and the row's UUIDv7 in 26 Crockford base32 characters. Opaque and safe to log.
limitqueryintegernoThe page size, 1 to 100.
cursorquerystringnoThe opaque next_cursor of the previous page; it binds the filters it was issued under.

Responses

StatusContent typeShapeError codes
200application/jsonCallEventList
400application/jsonErrorEnvelopeinvalid_request, invalid_cursor
401application/jsonErrorEnvelopeunauthenticated
403application/jsonErrorEnvelopeforbidden
404application/jsonErrorEnvelopenot_found
429application/jsonErrorEnveloperate_limited
500application/jsonErrorEnvelopeinternal_error

Fields of the 200 answer

The shape is CallEventList.

FieldTypeRequiredDescription
dataarray of CallEventyesThe Call events of this page, oldest first, by at and then seq.
has_morebooleanyesTrue when a further page exists.
next_cursorstring or nullyesThe cursor of the next page, or null on the last page.
object"list"yes