Skip to main content
GET
cURL

Authorizations

Authorization
string
header
required

Project API key (sk_api_…).

Path Parameters

sessionId
string
required

Returned as sessionId by the call dispatch, or as callId on a campaign's calls list, like 7b2e91c4-xxxx-xxxx-xxxx-xxxxxxxxxxxx#+923001234567#a2. Always percent-encode it in the path, encodeURIComponent(sessionId) in JavaScript. Campaign call ids embed # and +, and an unencoded # truncates the id.

Query Parameters

include_audio_url
boolean

Adds audioUrl, a recording link valid for one hour. Any value switches it on, including false, so omit the parameter instead. The link is signed without checking a recording exists, so it 404s on calls that were never recorded.

Response

The session as it stands right now.

One conversation — a browser session or a phone call.

sessionId
string<uuid>
realtimeAssistantId
string<uuid>

The assistant that ran the session. Still returned after that assistant is deleted.

organizationId
string<uuid>
projectId
string<uuid>
channel
enum<string>
Available options:
web,
telephony,
whatsapp
direction
enum<string>

Browser sessions are inbound by convention — the user opens them.

Available options:
inbound,
outbound
state
enum<string>

Each channel walks its own path:

  • Web session: created → active → completed
  • Phone call: dispatched → dialing → ringing → answered → completed, or failed

The dial hops come from the carrier, which may skip any of them.

Available options:
created,
dispatched,
dialing,
ringing,
answered,
active,
completed,
failed
connected
boolean

Whether audio was ever bridged — false for everything up to and including ringing.

outcome
enum<string>

Why no conversation happened; present exactly when connected is false. An in-flight call reads no_answer simply because it has not connected yet, so treat it as a verdict only once state is failed.

Available options:
busy,
no_answer,
unreachable,
voicemail,
silent_pickup,
failed
endedBy
enum<string>

Who hung up.

Available options:
callee,
agent,
supervisor,
system
toNumber
string

E.164. Telephony only.

Example:

"+923001234567"

fromNumber
string

E.164 caller id the callee saw. Telephony only.

Example:

"+924232591000"

calleeName
string

Display name of the person called, stamped at dial time from the campaign contact.

roomName
string

Server-generated, {prefix}-{sessionId}.

participantIdentity
string

Identifies the human on the call: the token identity for a browser session, the SIP participant for a phone call.

transportProvider
string

Carrier that placed the call, e.g. twilio.

Example:

"twilio"

variables
object

The values you supplied when the session was created, returned verbatim.

campaignId
string<uuid>

Set on calls a campaign dialed.

runId
string<uuid>

The campaign run that dialed this call.

contactId
string

The campaign contact that was dialed.

createdAt
string<date-time>

When the record was created — for an outbound call, when it was dispatched, not when it rang.

dialingAt
string<date-time>

Carrier accepted the dial request. Reported by the carrier, so it can be absent even on a call that connected.

ringingAt
string<date-time>

Callee's phone started ringing. Same carrier caveat as dialingAt.

connectedAt
string<date-time>

Audio bridged (SIP answer).

answeredAt
string<date-time>

When the callee first spoke. connectedAt set while this stays absent is a phantom answer — the line opened and nobody spoke.

endedAt
string<date-time>
durationSec
integer

Talk time, answeredAt to endedAt. Absent until the call ends, and on calls that never got an answeredAt.

failureReason
enum<string>

Why the call failed, on state: failed. The confusable ones: no_answer rang out, unreachable never rang (phone off), silent_pickup was answered but carried no callee audio, and network_error is a carrier or trunk fault rather than anything the callee did.

Available options:
wrong_number,
busy,
declined,
no_answer,
unreachable,
voicemail,
silent_pickup,
network_error,
call_failed
failureReasonWithCode
string

failureReason with the carrier's SIP code appended when there is one, as in busy:486.

Example:

"busy:486"

adhoc
boolean

The session ran on an inline config rather than a stored assistant.

public
boolean

The session was opened without an API key.

audioUrl
string<uri>

Recording link, valid one hour. Only when requested with include_audio_url.

assistantVersion
integer

The assistant version this session ran. Absent on sessions from before versions.

assistantAlias
enum<string>

The alias the session was launched on. Absent when it was launched by an exact version number, and on sessions from before versions.

Available options:
prod,
draft
summary
object

On list rows only, with include_summary=true. Absent, not null, when there is none.