Skip to main content
GET
Get Call

Authorizations

Authorization
string
header
required

Your API key (ta_live_…) from Settings → API keys, sent as Authorization: Bearer <key>. Keep it on a server: it can message every customer you have. A key is full, build or read-only; a request its level does not allow is refused with 403.

Headers

Thinnest-Workspace
string

Developers only: the customer workspace this request acts in — its org_… id from POST /customers. Leave it out to act in your own workspace. Refused with 404 (Workspace not found.) when the id is unknown, is not one of your customers, or is not an org_… id; 410 when that customer was deleted (restore it with POST /customers/{id}/restore until it is erased); 403 when the key belongs to one customer workspace (it cannot act as another); 400 when your workspace is not a developer workspace. /customers/* and GET /customers/usage are your own workspace's and refuse the header with 400: call them without it.

Example:

"org_3fKq9TzQ1mN8vB2xR7cLpA"

Path Parameters

id
string
required

The call's id as Place Call or List Calls gave it: out_… or sch_… for a call you placed, the call reference for any other.

Example:

"out_9f2c1a44-6b0e-4c1d-8a7f-2e5b3c9d1f60"

Response

The call.

One call and what it learned — the same object call.analysed delivers.

billing
object | null
required

What the call was billed as. Null for a booked call that has not rung.

Carrier-only calls. A call that ended before the agent spoke, and a call forwarded to another number without an agent, run no agent (no recogniser, model or voice), so they are charged the phone carrier's fee only: ₹0.38 a minute in INR, charged in 30-second blocks (₹0.19 each; in USD at our conversion rate). billedSeconds is the length rounded up to the block. For these calls voicePlan and ratePerMinuteMicro still show the plan and rate the call was set up on, which is not what was charged: reconcile such a call by costMicro.

Free trial calls. voicePlan, ratePerMinuteMicro and billedSeconds are null for a call paid from a free-plan workspace's trial minutes. A call in a workspace on a paid plan, a developer's own test calls included, is billed from its balance and carries them.

id
string
required

The id to open it by: out_… / sch_… for a call you placed, the call reference otherwise.

callRef
string | null
required

The reference of the attempt that actually rang. Null on a call that has not rung.

reference
string | null
required

Your reference from Place Call.

metadata
object | null
required

Your metadata from Place Call, untouched.

attempt
integer
required

1 for the first try, 2 for the first retry.

Required range: x >= 1
status
enum<string>
required

Where the call is. scheduled and cancelled only appear on calls you placed for later.

Available options:
scheduled,
ringing,
connected,
completed,
missed,
failed,
cancelled
direction
enum<string>
required

Who rang whom.

Available options:
inbound,
outbound
phone
string | null
required

The customer's number.

from
string | null
required

Your number the call rang from. Null until it rings, unless the request chose one, and always null on a call that came in.

agent
object | null
required

The agent on the call. Null on a call forwarded to a phone when no agent answered the number (forwardedTo is set).

scheduledFor
string<date-time> | null
required

When a booked call will ring. Null once it has.

startedAt
string<date-time> | null
required

When it started ringing.

answeredAt
string<date-time> | null
required

When it was picked up.

endedAt
string<date-time> | null
required

When it ended.

seconds
integer
required

How long it lasted. On a call forwarded to a phone (forwardedTo) this is how long the caller was connected - answer to hang-up - even when nothing was billed (a number you brought bills nothing for a forward). 0 for a forward nobody picked up (status missed).

Required range: x >= 0
hangup
enum<string> | null
required

Why it ended. Null while live; not_placed for a booked call that never rang.

Available options:
answered,
no_answer,
busy,
rejected,
unreachable,
cancelled,
voicemail,
before_agent,
failed,
not_placed,
null
variables
object
required

The {{name}} values the call used.

summary
string | null
required

Two or three sentences about the call, when summarised.

fields
object
required

The collected details, keyed by field name. Empty when nothing was said.

analysedAt
string<date-time> | null
required

When the summary and fields were written. Null means they may still arrive.

handedTo
object[]
required

Every agent the call was handed to mid-call, oldest first (set on the agent's Actions page, under Hand calls to another agent). Empty when it stayed with agent, which is always the agent the call was placed or answered as. A hand-off to another agent is not a hand-over to a person: it sends no conversation.escalated.

forwardedTo
string | null
required

The phone this call was forwarded to, when the number forwards every call (forwardTo on the phone number) and no agent answered it. Null on every other call. A forwarded call has no transcript, summary or fields.

contentDeleted
boolean
required

True once the call's recording and transcript were deleted — by Delete Call Content, or by the workspace's callRetentionDays. The summary, fields, transcript and recording are then empty; when it happened, how long it lasted and what it cost stay.

contentDeletedAt
string<date-time> | null
required

When its content was deleted; null while it is kept.

error
string | null
required

Why a booked call could not be placed, in words. Null otherwise.

transcript
object[]
required

This call's spoken turns, oldest first.

recording
object | null
required

A signed link to the audio that needs no key — Get Recording By Signed Link. Null when the call was not recorded.

retryScheduledFor
string<date-time> | null
required

When the next try will ring, if this one did not reach them and another is queued.

costMicro
integer | null
required

What this call cost the workspace, in millionths of currency (6370000 is 6.37) — the figure GET /usage/calls gives, at a white-label reseller's price for its clients. Null until the call is settled. Settlement runs before call.analysed is sent, so the webhook normally carries it, but it is null there too when the call has not settled; read Get Call later for the figure.

currency
enum<string> | null
required

The currency costMicro is in — the workspace's. Null only for a booked call that has not rung.

Available options:
INR,
USD,
null
quality
object | null
required

How the call went, in numbers, written once when it ends. Null for a call that was not measured — a call from before call quality was recorded, a call that never connected, or one whose voice connection never reported. A figure inside is null when the part of the call that measures it did not report.

usage
object
required

What the call used: the language-model tokens its replies used, whether the model is ours or your own key's (BYOK), and the characters sent to the voice. Each is null when it was not recorded: a call that never reached the model (a missed call, a forward, a booked call that has not rung). The input count is what the provider reported; where a provider reports none it is estimated from the prompt's length, and inputTokensEstimated says so. The call's summary and field extraction after it ends are not counted.