Skip to content
TriedDocs
Calls

Get call

Retrieve one call with its transcript, analysis, latency and cost.

GEThttps://api.tried.com.au/v2/get-call/{call_id}

Returns the full call object for one call in your workspace. Poll it after a call ends to read the transcript, post-call analysis and cost, or use webhooks to have it pushed to you. The guide Call object explains each field in context.

Request#

Path parameters#

Parameter Type Required Description
call_id string Yes The call ID, for example call_8d1e0f2a3b4c5d6e7f8a9b0c.

Example request#

curl "https://api.tried.com.au/v2/get-call/call_8d1e0f2a3b4c5d6e7f8a9b0c" \
  -H "Authorization: Bearer $TRIED_API_KEY"
const res = await fetch("https://api.tried.com.au/v2/get-call/call_8d1e0f2a3b4c5d6e7f8a9b0c", {
  headers: { Authorization: `Bearer ${process.env.TRIED_API_KEY}` },
});
const data = await res.json();
import os, requests

res = requests.get(
    "https://api.tried.com.au/v2/get-call/call_8d1e0f2a3b4c5d6e7f8a9b0c",
    headers={"Authorization": f"Bearer {os.environ['TRIED_API_KEY']}"},
)
data = res.json()

Response#

200 OK

{
  "call_id": "call_8d1e0f2a3b4c5d6e7f8a9b0c",
  "call_type": "phone_call",
  "agent_id": "agent_3f9a1c0b2d4e5f6a7b8c9d0e",
  "agent_version": 4,
  "agent_name": "Appointment reminders",
  "call_status": "ended",
  "direction": "outbound",
  "from_number": "+61291234567",
  "to_number": "+61412345678",
  "metadata": { "crm_id": "A-1042" },
  "retell_llm_dynamic_variables": { "customer_name": "Sam" },
  "collected_dynamic_variables": { "confirmed": "yes" },
  "start_timestamp": 1792310400000,
  "end_timestamp": 1792310465000,
  "duration_ms": 65000,
  "transcript": "Agent: Hi Sam, this is Bright Dental.\nUser: Hi, yes I can still make it.",
  "transcript_object": [
    { "role": "agent", "content": "Hi Sam, this is Bright Dental.", "words": [{ "word": "Hi", "start": 0.12, "end": 0.3 }] },
    { "role": "user", "content": "Hi, yes I can still make it.", "words": [] }
  ],
  "transcript_with_tool_calls": [
    { "role": "agent", "content": "Hi Sam, this is Bright Dental.", "ts": 1792310401200 },
    { "role": "user", "content": "Hi, yes I can still make it.", "ts": 1792310405800 },
    { "role": "tool_call_invocation", "tool_call_id": "tc_1", "name": "confirm_booking", "arguments": "{\"booking_id\":\"B-77\"}", "ts": 1792310406500 },
    { "role": "tool_call_result", "tool_call_id": "tc_1", "content": "{\"ok\":true}", "ts": 1792310407100 }
  ],
  "recording_url": "https://api.tried.com.au/recordings/call_8d1e0f2a3b4c5d6e7f8a9b0c.wav?exp=1792396865000&sig=...",
  "recording_multi_channel_url": null,
  "public_log_url": "https://api.tried.com.au/public/calls/call_8d1e0f2a3b4c5d6e7f8a9b0c/log?exp=1792915265000&sig=...",
  "knowledge_base_retrieved_contents_url": "https://api.tried.com.au/public/calls/call_8d1e0f2a3b4c5d6e7f8a9b0c/kb-retrievals?exp=1792915265000&sig=...",
  "transfer_destination": null,
  "llm_token_usage": { "values": [1820, 1904], "average": 1862, "num_requests": 2 },
  "disconnection_reason": "agent_hangup",
  "call_analysis": {
    "call_summary": "Sam confirmed the Thursday 2:30 pm appointment.",
    "in_voicemail": false,
    "user_sentiment": "Positive",
    "call_successful": true,
    "custom_analysis_data": { "confirmed": true }
  },
  "latency": {
    "e2e": { "p50": 720, "p90": 940, "p95": 940, "p99": 940, "max": 940, "min": 610, "num": 4, "values": [610, 720, 800, 940] }
  },
  "call_cost": {
    "product_costs": [
      { "product": "voice_infra", "unit_price": 0.08, "cost": 0.086667 },
      { "product": "gpt-5.6-terra", "unit_price": 0.1, "cost": 0.108333 },
      { "product": "voice_standard", "unit_price": 0.06, "cost": 0.065 }
    ],
    "total_duration_seconds": 65,
    "combined_cost": 0.26
  },
  "batch_call_id": null,
  "contact_id": "contact_5a6b7c8d9e0f1a2b3c4d5e6f"
}

Unit prices come from the PRICE_PER_MIN table in packages/shared (AUD per minute) and cost is charged per second.

Call object fields#

Field Type Description
call_id string Unique ID, call_ plus 24 hex characters.
call_type string phone_call or web_call.
agent_id string Agent that handled the call.
agent_version integer Agent version that ran.
agent_name string Name of the agent's latest version. Present on get, list and create responses.
call_status string registered (created, not connected yet), ongoing, ended, error or not_connected (never answered: busy, no answer, invalid number, timeout and similar).
direction string or null inbound or outbound for phone calls, null for web calls.
from_number string or null Caller number (E.164).
to_number string or null Called number (E.164).
metadata object The metadata you set. Live take-over adds taken_over_by and taken_over_at; environment tags add environment_tag.
retell_llm_dynamic_variables object Variables passed in at creation or by updates. All values are strings.
collected_dynamic_variables object Variables collected during the call (extract tools, flow nodes, SMS replies).
start_timestamp integer or null When the call connected, epoch ms.
end_timestamp integer or null When the call ended, epoch ms.
duration_ms integer or null Connected duration. 0 for calls that never started.
transcript string Plain text transcript, one Agent: ... or User: ... line per utterance.
transcript_object array Utterances: role (agent or user), content, and words (word, start, end in seconds) when the STT provider returned word timing.
transcript_with_tool_calls array Utterances plus events, each with ts (epoch ms). See Transcript items.
recording_url string or null Signed URL of the mixed recording: a presigned S3 URL when recordings are in S3, or an API /recordings/ link with exp and sig for local storage.
recording_multi_channel_url string or null Signed URL of the multi-channel recording, when one exists.
public_log_url string or null Signed link (valid 7 days from the response) to the call's runtime event log. null while registered.
knowledge_base_retrieved_contents_url string or null Signed link (valid 7 days) to the knowledge base chunks retrieved on each turn. null while registered.
transfer_destination string or null Destination of the last transfer that started.
custom_sip_headers object Present when the call was created with custom SIP headers.
concurrency_burst boolean Present and true when the call was admitted above the base concurrency limit.
stir_shaken_attestation string A, B or C. Present when the carrier provided it.
caller_cnam string Caller name. Present when the carrier provided it.
llm_token_usage object or null values (total tokens per LLM request), average and num_requests.
disconnection_reason string or null Why the call ended. See Disconnection reasons.
call_analysis object or null Post-call analysis, filled after the call ends. See call_analysis.
latency object Percentile stats per stage. Keys appear only when measured: e2e, asr, llm, tts, knowledge_base, llm_websocket_network_rtt, s2s. Each has p50, p90, p95, p99, max, min, num and values, in ms.
call_cost object or null Set when the call ends. See call_cost.
batch_call_id string or null Batch the call belongs to.
contact_id string or null Built-in contact linked to the call (phone calls).

Transcript items#

Every item in transcript_with_tool_calls has a role and an optional ts:

role Other fields
agent, user content
tool_call_invocation tool_call_id, name, arguments (JSON string)
tool_call_result tool_call_id, content
node_transition former_node_id, new_node_id, transition_type (normal, global, global_go_back, interrupt_go_back)
dtmf digit
transfer event (transfer_started, transfer_bridged, transfer_cancelled, transfer_ended), destination, reason
agent_swap former_agent_id, new_agent_id
sms content, to_number
injected content (context added with Update live call)

call_analysis#

Field Type Description
call_summary string Summary of the call.
in_voicemail boolean Whether the call reached voicemail.
user_sentiment string Positive, Negative, Neutral or Unknown.
call_successful boolean Whether the agent completed the task.
custom_analysis_data object Values for the agent's post_call_analysis_data fields, keyed by field name.

call_cost#

Field Type Description
product_costs array One line per product: product, unit_price (AUD per minute), and cost (AUD). Products are voice_infra, the LLM model ID, voice_premium or voice_standard, and knowledge_base (agents with a knowledge base).
total_duration_seconds integer Billed seconds (duration rounded up).
combined_cost number Sum of product_costs, AUD.

Disconnection reasons#

user_hangup, agent_hangup, call_transfer, voicemail_reached, inactivity, max_duration_reached, concurrency_limit_reached, dial_busy, dial_failed, dial_no_answer, invalid_destination, manual_stopped, error_llm, error_asr, error_tts, error_no_audio_received, error_unknown, user_requested_dnc, user_requested_callback, ivr_reached, no_concurrency_fallback, no_valid_payment, credit_exhausted, budget_reached, scam_detected, telephony_provider_permission_denied, telephony_provider_unavailable, sip_routing_error, marked_as_spam, network_blocked, user_declined, error_llm_websocket_open, error_llm_websocket_lost_connection, error_llm_websocket_runtime, error_llm_websocket_corrupt_payload, error_retell, error_user_not_joined, registered_call_timeout, transfer_bridged, transfer_cancelled, call_take_over, guardrail_triggered.

Errors#

Status When
401 Missing or invalid API key.
403 The key's IP allowlist or scopes reject the request. This route needs the calls scope.
404 No call with this ID in the workspace.
429 Rate limit exceeded. See Rate limits.

See Errors for the body format.

Compatibility notes#

GET /get-call/{call_id} is an alias.