Call Directions
Truedy supports three call directions, each representing a different way a conversation is initiated.Outbound
Your agent places a call to a contact’s phone number. Used for proactive outreach, follow-ups, appointment reminders, and campaigns.
Inbound
A contact dials one of your Truedy phone numbers and the call is routed to the configured agent. Used for support lines, hotlines, and always-on reception.
WebRTC
A contact connects through a browser-based widget embedded on your website or app. No phone number required on either side — audio is transmitted over the internet.
The Call Lifecycle
Every call moves through a defined sequence of statuses from creation to completion. Understanding this lifecycle helps you build reliable integrations and interpret webhook payloads correctly.queued
The call has been created in Truedy’s system and is waiting to be dialled. For outbound calls, this is the initial state after you call
POST /calls. The call will transition out of this state within seconds under normal conditions.ringing
Truedy has initiated the connection and is waiting for the recipient to answer. For inbound and WebRTC calls, this state is brief or may be skipped entirely.
in-progress
The call has been answered and the agent is actively speaking with the contact. Transcription and recording begin at this point.
ended
The call completed normally. The transcript, recording URL, duration, and outcome are now available on the call object.
WebRTC calls skip the
ringing state entirely and move directly from queued to in-progress once the browser widget establishes the connection.Call Status Reference
| Status | Meaning | Terminal? |
|---|---|---|
queued | Call created, waiting to be dialled | No |
ringing | Dialling the recipient, awaiting answer | No |
in-progress | Active conversation underway | No |
ended | Call completed successfully | Yes |
failed | Call could not connect or was interrupted | Yes |
cancelled | Call was cancelled before it could be dialled | Yes |
The Call Object
When you retrieve a call from the API, you receive a call object with the following fields:| Field | Type | Description |
|---|---|---|
id | string | Unique identifier for the call (UUID) |
status | string | Current call status (see table above) |
direction | string | outbound, inbound, or webrtc |
agent_id | string | The agent that handled this call |
phone_number | string | The E.164 phone number dialled or that called in. null for WebRTC calls |
from_number | string | The Truedy number the call was placed from (outbound) or received on (inbound) |
duration_seconds | integer | Total call duration from answer to hangup. null if the call never connected |
transcript | array | Ordered array of {speaker, text, timestamp} objects. Available after the call ends |
recording_url | string | Signed URL to the call recording audio file. Time-limited — download promptly |
cost_cents | integer | The cost of this call in USD cents |
outcome | string | Post-call analysis outcome label (e.g. interested, not-interested, voicemail) |
variables | object | Template variables that were passed when the call was created |
failure_reason | string | Machine-readable reason the call failed. Present only when status is failed |
started_at | string | ISO 8601 timestamp when the call moved to in-progress |
ended_at | string | ISO 8601 timestamp when the call reached a terminal status |
created_at | string | ISO 8601 timestamp when the call object was created |
Example: A Completed Call Object
Retrieving a Call
UseGET /calls/{id} to fetch the current state of any call by its ID.
Polling vs. Webhooks
After creating a call, you have two options for tracking when it completes: Polling — repeatedly callGET /calls/{id} until the status reaches a terminal state. Simple to implement but inefficient at scale.
Webhooks — register a webhook endpoint and Truedy will push a call.ended or call.analyzed event to your server the moment the call finishes. This is the recommended approach for production integrations.
For any integration that processes more than a handful of calls per day, webhooks are strongly preferred over polling. See the Webhooks Overview guide for setup instructions.
Next Steps
Making Outbound Calls
Place individual outbound calls via the API
Setting Up Inbound Calls
Route incoming callers to your agents
WebRTC Widget
Embed a browser-based voice widget
Call Management
List, filter, and export call records

