Listing Calls
UseGET /calls to retrieve a paginated list of calls across your account. You can filter by agent, status, direction, or date range.
Endpoint
Query Parameters
| Parameter | Type | Description |
|---|---|---|
agent_id | string | Filter to calls handled by a specific agent |
status | string | Filter by call status: queued, ringing, in-progress, ended, failed, cancelled |
direction | string | Filter by direction: outbound, inbound, webrtc |
created_after | string | ISO 8601 datetime — return only calls created after this time |
created_before | string | ISO 8601 datetime — return only calls created before this time |
limit | integer | Number of records per page. Default: 20. Maximum: 100 |
offset | integer | Number of records to skip for pagination. Default: 0 |
Response Structure
meta.total field gives the total number of calls matching your filters — use this with limit and offset to paginate through all results.
Getting a Single Call
UseGET /calls/{id} to fetch the complete record for one call by its ID.
Endpoint
Code Examples
Working with Transcripts
Thetranscript field on a completed call is an ordered array of conversation turns. Each turn has three properties:
| Property | Type | Description |
|---|---|---|
speaker | string | Either "agent" or "contact" |
text | string | The words spoken in this turn |
timestamp | number | Seconds from the start of the call when this turn began |
Example Transcript
Transcripts are generated asynchronously after the call ends. If you retrieve a call immediately after it completes, the
transcript field may be null for a few seconds while processing finishes. The call.analyzed webhook event fires once the transcript is ready.Extracting a Plain-Text Transcript
If you need to store or display the transcript as plain text, join the turns with speaker labels:Python
Accessing Recordings
Therecording_url field on an ended call contains a signed URL pointing to the MP3 audio recording of the conversation.
Downloading a Recording
Call Analytics Fields
In addition to the transcript and recording, each ended call includes analytics metadata:| Field | Type | Description |
|---|---|---|
duration_seconds | integer | Total call duration from answer to hang-up |
cost_cents | integer | Cost of the call in USD cents. Useful for billing reconciliation |
outcome | string | Post-call analysis label applied by Truedy AI (e.g. interested, not-interested, voicemail, no-answer, callback-requested) |
Pagination
The calls list endpoint returns up to 100 records per request. Uselimit and offset to paginate through large result sets.
Python — Fetch all calls with pagination
Filtering by Date
Use thecreated_after and created_before query parameters to narrow results to a specific time window. Both accept ISO 8601 datetime strings.
All timestamps in the Truedy API are in UTC. Make sure to convert local times to UTC before constructing date filter parameters.
Exporting Call Data
Truedy does not currently provide a bulk CSV export endpoint. There are two recommended patterns for building your own export pipeline:Pattern 1: Paginated API Pull
Write a script that paginates throughGET /calls for your desired date range and writes results to a file or database. The Python pagination example above demonstrates this approach. Run it on a schedule (e.g. nightly) to keep an external data store up to date.
Pattern 2: Webhook + Store
For real-time exports, configure acall.analyzed webhook endpoint on your server. Each time a call completes, Truedy pushes the full call object — including transcript, outcome, and analytics — to your endpoint. Your server writes the record to your database, data warehouse, or CRM immediately.
This pattern requires a publicly accessible server but avoids the need to poll the API.
See Webhooks Overview for webhook configuration details.
Data Retention
Truedy retains call records (metadata, transcripts) for 12 months from the call date. Recording audio files are available via signed URL for 24 hours after the call ends — after that, the link expires and the audio is no longer accessible through the API. If you need to retain recordings beyond 24 hours or call records beyond 12 months, implement your own archival process using the webhook + store pattern described above.Next Steps
Calls Overview
Call statuses, directions, and lifecycle
Making Outbound Calls
Place individual outbound calls via the API
Webhooks Overview
Receive real-time call events on your server
Post-Call Analysis
Understand outcome labels and call summaries

