Skip to main content
GET
cURL

When to use this endpoint

Call webhooks include data.callId and basic metadata (direction, duration, transfer flags). CALL events from GET /leads/{leadId}/events carry the same metadata, and the event’s top-level id field is the call ID. Neither includes the full transcript or every transfer detail. Use GET /calls/{callId} to enrich a call after a webhook fires — for example, to pull the AI-generated summary and full transcript into your CRM or data warehouse. After a transfer, transferStatus and transferFailureCode match the final outcome in call.completed and the dedicated transfer webhooks. For failed transfers, transferInitiatedAt records when Apten began the transfer attempt and transferWaitDurationSeconds records the elapsed time until Apten recorded the terminal failure. midCallTransferDuration is different: it measures time connected to a transfer recipient after a successful mid-call transfer.

Recordings

This endpoint never returns a recording URL. To download a completed recording, use GET /calls/{callId}/recording. The download URL is temporary; store the downloaded file, not the URL.

Webchat calls

For webchat voice calls, the response includes sessionId instead of leadId.

Authorizations

x-api-key
string
header
required

Path Parameters

callId
string
required

Call ID from data.callId (webhooks) or the event id (CALL events).

Response

Call details fetched successfully.

Full call record returned by GET /calls/{callId}.

id
string
required

Stable unique identifier for the call.

direction
enum<string>
required
Available options:
INBOUND,
OUTBOUND
callStatus
string
required

Current or final status of the call (e.g. COMPLETE, NO_ANSWER, IN_PROGRESS).

durationSeconds
integer
required

Length of the call in seconds.

createdAt
string<date-time>
required
updatedAt
string<date-time>
required
transcript
object[]
required

Ordered transcript turns. Empty array if no transcript is stored yet.

leadId
string

The lead (room) this call belongs to. Absent for webchat-only calls.

sessionId
string

The webchat session ID. Present for webchat voice calls instead of leadId.

summary
string

AI-generated summary of the conversation. Present after the call is processed; may be absent immediately after a terminal webhook if processing is still in flight.

isTransfer
boolean

true if this was a transfer to a human agent.

midCallTransfer
boolean

true if a transfer happened mid-call.

hasVoicemail
boolean

true if the call left a voicemail.

transferNumber
string

E.164 number the call was transferred to, if applicable.

fallbackTransferNumber
string

Fallback transfer number used when the primary transfer failed.

transferAnswerStatus
enum<string>
Available options:
answered,
no_answer,
pending
transferAnsweredBy
enum<string>
Available options:
human,
machine_start,
machine_end_beep,
machine_end_silence,
machine_end_other,
unknown
transferFallbackAttempted
boolean
transferFallbackAnswerStatus
enum<string>
Available options:
answered,
no_answer,
pending
transferFallbackAnsweredBy
enum<string>
Available options:
human,
machine_start,
machine_end_beep,
machine_end_silence,
machine_end_other,
unknown
midCallTransferDuration
integer

Seconds the lead was connected to a transfer recipient during a mid-call transfer.

endedBy
enum<string>

Who ended the call. Only populated for warm transfers (where the lead is bridged into a live conference with a human agent); omitted for cold transfers and ordinary calls. LEAD — the lead hung up. AGENT — the human agent hung up. UNKNOWN — the call ended but the hangup could not be attributed to either party.

Available options:
LEAD,
AGENT,
UNKNOWN
transferInitiatedAt
string<date-time>

When Apten began the transfer attempt and the lead began waiting. Absent if no transfer was started.

agentConnected
boolean

true if a warm-transfer agent was bridged to the lead.

transferFailureCode
enum<string>

Why the transfer failed after the agent was dialed. Absent if the transfer connected or was never started.

Available options:
agent_not_connected,
lead_disconnected
transferWaitDurationSeconds
integer

Seconds from transfer initiation until Apten recorded the terminal failure, rounded to the nearest whole second. Present when failure timing is available.

Required range: x >= 0
transferStatus
enum<string>

Terminal transfer outcome after an agent was dialed. Absent if no transfer was started.

Available options:
connected,
failed
aiCallWithoutHumanResponse
boolean

true if the lead never spoke during an AI-initiated call.

isFollowUp
boolean
isAiInitiated
boolean
hitCallScreening
boolean
reachedHumanAfterScreening
boolean
isForward
boolean