GET
/
get-call
/
{call_id}
curl --request GET \
  --url https://api.retellai.com/get-call/{call_id} \
  --header 'Authorization: Bearer <token>'
{
  "call_id": "Jabr9TXYYJHfvl6Syypi88rdAHYHmcq6",
  "agent_id": "oBeDLoLOeuAbiuaMFXRtDOLriTJ5tSxD",
  "audio_websocket_protocol": "twilio",
  "audio_encoding": "s16le",
  "sample_rate": 24000,
  "call_status": "registered",
  "end_call_after_silence_ms": 600000,
  "from_number": "+12137771234",
  "to_number": "+12137771235",
  "direction": "inbound",
  "metadata": {},
  "retell_llm_dynamic_variables": {
    "customer_name": "John Doe"
  },
  "drop_call_if_machine_detected": true,
  "opt_out_sensitive_data_storage": true,
  "start_timestamp": 1703302407333,
  "end_timestamp": 1703302428855,
  "transcript": "Agent: hi how are you doing?\nUser: Doing pretty well. How are you?\nAgent: That's great to hear! I'm doing well too, thanks! What's up?\nUser: I don't have anything in particular.\nAgent: Got it, just checking in!\nUser: Alright. See you.\nAgent: have a nice day\n ",
  "transcript_object": [
    {
      "role": "agent",
      "content": "hi how are you doing?",
      "words": [
        {
          "word": "hi",
          "start": 0.7,
          "end": 1.3
        }
      ]
    }
  ],
  "transcript_with_tool_calls": [
    {
      "role": "agent",
      "content": "hi how are you doing?",
      "words": [
        {
          "word": "hi",
          "start": 0.7,
          "end": 1.3
        }
      ]
    }
  ],
  "recording_url": "https://retellai.s3.us-west-2.amazonaws.com/Jabr9TXYYJHfvl6Syypi88rdAHYHmcq6/recording.wav",
  "public_log_url": "https://retellai.s3.us-west-2.amazonaws.com/Jabr9TXYYJHfvl6Syypi88rdAHYHmcq6/public_log.txt",
  "e2e_latency": {
    "p50": 800,
    "p90": 1200,
    "p95": 1500,
    "p99": 2500,
    "max": 2700,
    "min": 500,
    "num": 10
  },
  "llm_latency": {
    "p50": 800,
    "p90": 1200,
    "p95": 1500,
    "p99": 2500,
    "max": 2700,
    "min": 500,
    "num": 10
  },
  "llm_websocket_network_rtt_latency": {
    "p50": 800,
    "p90": 1200,
    "p95": 1500,
    "p99": 2500,
    "max": 2700,
    "min": 500,
    "num": 10
  },
  "disconnection_reason": "agent_hangup",
  "call_analysis": {
    "call_summary": "The agent called the user to ask question about his purchase inquiry. The agent asked several questions regarding his preference and asked if user would like to book an appointment. The user happily agreed and scheduled an appointment next Monday 10am.",
    "user_sentiment": "Positive",
    "agent_sentiment": "Friendly",
    "agent_task_completion_rating": "Complete",
    "agent_task_completion_rating_reason": "User answered all of the question asked by the AI agent. User has an appointment set next Monday at 10am",
    "call_completion_rating": "Complete",
    "call_completion_rating_reason": "call was ended by the user. User said goodbye and hung up."
  }
}

Authorizations

Authorization
string
headerrequired

Authentication header containing API key (find it in dashboard). The format is "Bearer YOUR_API_KEY"

Path Parameters

call_id
string
required

The call id to retrieve call history for.

Response

200 - application/json
call_id
string
required

Unique id of the call. Used to identify in LLM websocket and used to authenticate in audio websocket.

agent_id
string
required

Corresponding agent id of this call.

audio_websocket_protocol
enum<string>
required

Where the audio websocket would connect from would determine the format / protocol of websocket messages, and would determine how our server read audio bytes and send audio bytes.:

  • web: The protocol defined by Retell, commonly used for connecting from web frontend. Also useful for those who want to manipulate audio bytes directly.

  • twilio: The websocket protocol defined by Twilio, used when your system uses Twilio, and supplies Retell audio websocket url to Twilio.

Available options:
web,
twilio
audio_encoding
enum<string>
required

The audio encoding of the call. The following formats are supported:

  • s16le 16 bit linear PCM audio, the native format for web audio capture and playback.

  • mulaw non-linear audio encoding technique used in telephony. Commonly used by Twilio.

Available options:
s16le,
mulaw
sample_rate
integer
required

Sample rate of the conversation, the input and output audio bytes will all conform to this rate. Check the audio source, audio format, and voice used for the agent to select one that works. supports value ranging from [8000, 48000]. Note for Twilio mulaw encoding, the sample rate has to be 8000.

  • s16le sample rate recommendation (natively supported, lowest latency):
    • elevenlabs voices: 16000, 22050, 24000, 44100.

    • openai voices: 24000.

    • deepgram voices: 8000, 16000, 24000, 32000, 48000.

call_status
enum<string>
required

Status of call.

  • registered: Call id issued, ready to make a call using this id.

  • ongoing: Call connected and ongoing.

  • ended: The underlying websocket has ended for the call. Either user or agent hanged up, or call transferred.

  • error: Call encountered error.

Available options:
registered,
ongoing,
ended,
error
end_call_after_silence_ms
integer

If users stay silent for a period after agent speech, end the call. The minimum value allowed is 10,000 ms (10 s). This value, if set, would overwrite the agent level end_call_after_silence_ms parameter.

from_number
string

The caller number.

to_number
string

The callee number.

direction
enum<string>

Direction of the phone call. Not populated for web call.

Available options:
inbound,
outbound
metadata
object

An arbitrary object for storage purpose only. You can put anything here like your internal customer id associated with the call. Not used for processing. You can later get this field from the call object.

retell_llm_dynamic_variables
object

Add optional dynamic variables in key value pairs of string that injects into your Retell LLM prompt and tool description. Only applicable for Retell LLM.

drop_call_if_machine_detected
boolean

If set, will drop the call if machine (voicemail, IVR) is detected. If not set, default value of false will apply.

opt_out_sensitive_data_storage
boolean

Whether this call opts out of sensitive data storage like transcript, recording, logging.

start_timestamp
integer

Begin timestamp (milliseconds since epoch) of the call. Available after call starts.

end_timestamp
integer

End timestamp (milliseconds since epoch) of the call. Available after call ends.

transcript
string

Transcription of the call. Available after call ends.

transcript_object
object[]

Transcript of the call in the format of a list of utterance, with timestamp. Available after call ends.

transcript_with_tool_calls
object[]

Transcript of the call weaved with tool call invocation and results. It precisely captures when (at what utterance, which word) the tool was invoked and what was the result. Available after call ends.

recording_url
string

Recording of the call. Available after call ends.

public_log_url
string

Public log of the call, containing details about all the requests and responses received in LLM WebSocket, latency tracking for each turntaking, helpful for debugging and tracing. Available after call ends.

e2e_latency
object

End to end latency (from user stops talking to agent start talking) tracking of the call, available after call ends. This latency does not account for the network trip time from Retell server to user frontend. The latency is tracked every time turn change between user and agent.

llm_latency
object

LLM latency (from issue of LLM call to first token received) tracking of the call, available after call ends. When using custom LLM. this latency includes LLM websocket roundtrip time between user server and Retell server.

llm_websocket_network_rtt_latency
object

LLM websocket roundtrip latency (between user server and Retell server) tracking of the call, available after call ends. Only populated for calls using custom LLM.

disconnection_reason
enum<string>

The reason for the disconnection of the call. Read details desciption about reasons listed here at Disconnection Reason Doc.

Available options:
user_hangup,
agent_hangup,
call_transfer,
inactivity,
machine_detected,
concurrency_limit_reached,
dial_busy,
dial_failed,
dial_no_answer,
error_llm_websocket_open,
error_llm_websocket_lost_connection,
error_llm_websocket_runtime,
error_llm_websocket_corrupt_payload,
error_frontend_corrupted_payload,
error_twilio,
error_no_audio_received,
error_asr,
error_retell,
error_unknown
call_analysis
object
  • BETA feature, schema might change, might not always be populated. Please do not rely on this object schema for post processing. Post conversation evaluation of the call. Including information such as sentiment, intent, call completion status and other metrics. Available after call ends. Subscribe to call_analyzed webhook event type to receive it once ready.