JavaScript
import Retell from 'retell-sdk';
const client = new Retell({
apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted
});
const calls = await client.call.list();
console.log(calls.has_more);import os
from retell import Retell
client = Retell(
api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted
)
calls = client.call.list()
print(calls.has_more)curl --request POST \
--url https://api.retellai.com/v3/list-calls \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"filter_criteria": {
"agent": [
{
"agent_id": "<string>",
"version": [
123
]
}
],
"call_id": {
"type": "string",
"value": "<string>"
},
"start_timestamp": {
"type": "number",
"value": 123
},
"end_timestamp": {
"type": "number",
"value": 123
},
"duration_ms": {
"type": "number",
"value": 123
},
"combined_cost": {
"type": "number",
"value": 123
},
"e2e_latency_p50": {
"type": "number",
"value": 123
},
"tool_calls": [
{
"name": "<string>",
"type": "<string>",
"latency_ms": {
"type": "number",
"value": 123
}
}
],
"custom_analysis_data": [
{
"type": "string",
"value": "<string>",
"key": "<string>"
}
],
"custom_attributes": [
{
"type": "string",
"value": "<string>",
"key": "<string>"
}
],
"metadata": [
{
"type": "string",
"value": "<string>",
"key": "<string>"
}
],
"dynamic_variables": [
{
"type": "string",
"value": "<string>",
"key": "<string>"
}
]
},
"sort_order": "descending",
"limit": 50,
"skip": 0,
"pagination_key": "<string>",
"include_total": false
}
'<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.retellai.com/v3/list-calls",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'filter_criteria' => [
'agent' => [
[
'agent_id' => '<string>',
'version' => [
123
]
]
],
'call_id' => [
'type' => 'string',
'value' => '<string>'
],
'start_timestamp' => [
'type' => 'number',
'value' => 123
],
'end_timestamp' => [
'type' => 'number',
'value' => 123
],
'duration_ms' => [
'type' => 'number',
'value' => 123
],
'combined_cost' => [
'type' => 'number',
'value' => 123
],
'e2e_latency_p50' => [
'type' => 'number',
'value' => 123
],
'tool_calls' => [
[
'name' => '<string>',
'type' => '<string>',
'latency_ms' => [
'type' => 'number',
'value' => 123
]
]
],
'custom_analysis_data' => [
[
'type' => 'string',
'value' => '<string>',
'key' => '<string>'
]
],
'custom_attributes' => [
[
'type' => 'string',
'value' => '<string>',
'key' => '<string>'
]
],
'metadata' => [
[
'type' => 'string',
'value' => '<string>',
'key' => '<string>'
]
],
'dynamic_variables' => [
[
'type' => 'string',
'value' => '<string>',
'key' => '<string>'
]
]
],
'sort_order' => 'descending',
'limit' => 50,
'skip' => 0,
'pagination_key' => '<string>',
'include_total' => false
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.retellai.com/v3/list-calls"
payload := strings.NewReader("{\n \"filter_criteria\": {\n \"agent\": [\n {\n \"agent_id\": \"<string>\",\n \"version\": [\n 123\n ]\n }\n ],\n \"call_id\": {\n \"type\": \"string\",\n \"value\": \"<string>\"\n },\n \"start_timestamp\": {\n \"type\": \"number\",\n \"value\": 123\n },\n \"end_timestamp\": {\n \"type\": \"number\",\n \"value\": 123\n },\n \"duration_ms\": {\n \"type\": \"number\",\n \"value\": 123\n },\n \"combined_cost\": {\n \"type\": \"number\",\n \"value\": 123\n },\n \"e2e_latency_p50\": {\n \"type\": \"number\",\n \"value\": 123\n },\n \"tool_calls\": [\n {\n \"name\": \"<string>\",\n \"type\": \"<string>\",\n \"latency_ms\": {\n \"type\": \"number\",\n \"value\": 123\n }\n }\n ],\n \"custom_analysis_data\": [\n {\n \"type\": \"string\",\n \"value\": \"<string>\",\n \"key\": \"<string>\"\n }\n ],\n \"custom_attributes\": [\n {\n \"type\": \"string\",\n \"value\": \"<string>\",\n \"key\": \"<string>\"\n }\n ],\n \"metadata\": [\n {\n \"type\": \"string\",\n \"value\": \"<string>\",\n \"key\": \"<string>\"\n }\n ],\n \"dynamic_variables\": [\n {\n \"type\": \"string\",\n \"value\": \"<string>\",\n \"key\": \"<string>\"\n }\n ]\n },\n \"sort_order\": \"descending\",\n \"limit\": 50,\n \"skip\": 0,\n \"pagination_key\": \"<string>\",\n \"include_total\": false\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.retellai.com/v3/list-calls")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"filter_criteria\": {\n \"agent\": [\n {\n \"agent_id\": \"<string>\",\n \"version\": [\n 123\n ]\n }\n ],\n \"call_id\": {\n \"type\": \"string\",\n \"value\": \"<string>\"\n },\n \"start_timestamp\": {\n \"type\": \"number\",\n \"value\": 123\n },\n \"end_timestamp\": {\n \"type\": \"number\",\n \"value\": 123\n },\n \"duration_ms\": {\n \"type\": \"number\",\n \"value\": 123\n },\n \"combined_cost\": {\n \"type\": \"number\",\n \"value\": 123\n },\n \"e2e_latency_p50\": {\n \"type\": \"number\",\n \"value\": 123\n },\n \"tool_calls\": [\n {\n \"name\": \"<string>\",\n \"type\": \"<string>\",\n \"latency_ms\": {\n \"type\": \"number\",\n \"value\": 123\n }\n }\n ],\n \"custom_analysis_data\": [\n {\n \"type\": \"string\",\n \"value\": \"<string>\",\n \"key\": \"<string>\"\n }\n ],\n \"custom_attributes\": [\n {\n \"type\": \"string\",\n \"value\": \"<string>\",\n \"key\": \"<string>\"\n }\n ],\n \"metadata\": [\n {\n \"type\": \"string\",\n \"value\": \"<string>\",\n \"key\": \"<string>\"\n }\n ],\n \"dynamic_variables\": [\n {\n \"type\": \"string\",\n \"value\": \"<string>\",\n \"key\": \"<string>\"\n }\n ]\n },\n \"sort_order\": \"descending\",\n \"limit\": 50,\n \"skip\": 0,\n \"pagination_key\": \"<string>\",\n \"include_total\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.retellai.com/v3/list-calls")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"filter_criteria\": {\n \"agent\": [\n {\n \"agent_id\": \"<string>\",\n \"version\": [\n 123\n ]\n }\n ],\n \"call_id\": {\n \"type\": \"string\",\n \"value\": \"<string>\"\n },\n \"start_timestamp\": {\n \"type\": \"number\",\n \"value\": 123\n },\n \"end_timestamp\": {\n \"type\": \"number\",\n \"value\": 123\n },\n \"duration_ms\": {\n \"type\": \"number\",\n \"value\": 123\n },\n \"combined_cost\": {\n \"type\": \"number\",\n \"value\": 123\n },\n \"e2e_latency_p50\": {\n \"type\": \"number\",\n \"value\": 123\n },\n \"tool_calls\": [\n {\n \"name\": \"<string>\",\n \"type\": \"<string>\",\n \"latency_ms\": {\n \"type\": \"number\",\n \"value\": 123\n }\n }\n ],\n \"custom_analysis_data\": [\n {\n \"type\": \"string\",\n \"value\": \"<string>\",\n \"key\": \"<string>\"\n }\n ],\n \"custom_attributes\": [\n {\n \"type\": \"string\",\n \"value\": \"<string>\",\n \"key\": \"<string>\"\n }\n ],\n \"metadata\": [\n {\n \"type\": \"string\",\n \"value\": \"<string>\",\n \"key\": \"<string>\"\n }\n ],\n \"dynamic_variables\": [\n {\n \"type\": \"string\",\n \"value\": \"<string>\",\n \"key\": \"<string>\"\n }\n ]\n },\n \"sort_order\": \"descending\",\n \"limit\": 50,\n \"skip\": 0,\n \"pagination_key\": \"<string>\",\n \"include_total\": false\n}"
response = http.request(request)
puts response.read_body{
"pagination_key": "<string>",
"has_more": true,
"items": [
{
"call_type": "web_call",
"access_token": "eyJhbGciOiJIUzI1NiJ9.eyJ2aWRlbyI6eyJyb29tSm9p",
"call_id": "Jabr9TXYYJHfvl6Syypi88rdAHYHmcq6",
"agent_id": "oBeDLoLOeuAbiuaMFXRtDOLriTJ5tSxD",
"agent_version": 1,
"call_status": "registered",
"agent_name": "My Agent",
"agent_tag": "prod",
"metadata": {},
"retell_llm_dynamic_variables": {
"customer_name": "John Doe"
},
"collected_dynamic_variables": {
"last_node_name": "Test node"
},
"custom_sip_headers": {
"X-Custom-Header": "Custom Value"
},
"data_storage_setting": "everything",
"opt_in_signed_url": true,
"start_timestamp": 1703302407333,
"end_timestamp": 1703302428855,
"transfer_end_timestamp": 1703302628855,
"duration_ms": 10000,
"recording_url": "https://retellai.s3.us-west-2.amazonaws.com/Jabr9TXYYJHfvl6Syypi88rdAHYHmcq6/recording.wav",
"recording_multi_channel_url": "https://retellai.s3.us-west-2.amazonaws.com/Jabr9TXYYJHfvl6Syypi88rdAHYHmcq6/recording_multichannel.wav",
"scrubbed_recording_url": "https://retellai.s3.us-west-2.amazonaws.com/Jabr9TXYYJHfvl6Syypi88rdAHYHmcq6/recording.wav",
"scrubbed_recording_multi_channel_url": "https://retellai.s3.us-west-2.amazonaws.com/Jabr9TXYYJHfvl6Syypi88rdAHYHmcq6/recording_multichannel.wav",
"public_log_url": "https://retellai.s3.us-west-2.amazonaws.com/Jabr9TXYYJHfvl6Syypi88rdAHYHmcq6/public_log.txt",
"knowledge_base_retrieved_contents_url": "https://retellai.s3.us-west-2.amazonaws.com/Jabr9TXYYJHfvl6Syypi88rdAHYHmcq6/kb_retrieved_contents.txt",
"latency": {
"e2e": {
"p50": 800,
"p90": 1200,
"p95": 1500,
"p99": 2500,
"max": 2700,
"min": 500,
"num": 10,
"values": [
123
]
},
"asr": {
"p50": 800,
"p90": 1200,
"p95": 1500,
"p99": 2500,
"max": 2700,
"min": 500,
"num": 10,
"values": [
123
]
},
"llm": {
"p50": 800,
"p90": 1200,
"p95": 1500,
"p99": 2500,
"max": 2700,
"min": 500,
"num": 10,
"values": [
123
]
},
"llm_websocket_network_rtt": {
"p50": 800,
"p90": 1200,
"p95": 1500,
"p99": 2500,
"max": 2700,
"min": 500,
"num": 10,
"values": [
123
]
},
"tts": {
"p50": 800,
"p90": 1200,
"p95": 1500,
"p99": 2500,
"max": 2700,
"min": 500,
"num": 10,
"values": [
123
]
},
"knowledge_base": {
"p50": 800,
"p90": 1200,
"p95": 1500,
"p99": 2500,
"max": 2700,
"min": 500,
"num": 10,
"values": [
123
]
},
"s2s": {
"p50": 800,
"p90": 1200,
"p95": 1500,
"p99": 2500,
"max": 2700,
"min": 500,
"num": 10,
"values": [
123
]
}
},
"disconnection_reason": "agent_hangup",
"transfer_destination": "+12137771234",
"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.",
"in_voicemail": false,
"user_sentiment": "Positive",
"call_successful": true,
"custom_analysis_data": {}
},
"call_cost": {
"product_costs": [
{
"product": "elevenlabs_tts",
"cost": 60,
"unit_price": 1,
"is_transfer_leg_cost": true
}
],
"total_duration_seconds": 60,
"total_duration_unit_price": 1,
"combined_cost": 70
},
"llm_token_usage": {
"values": [
123
],
"average": 123,
"num_requests": 123
}
}
],
"total": 123
}{
"status": "error",
"message": "Invalid request format, please check API reference."
}{
"status": "error",
"message": "API key is missing or invalid."
}{
"status": "error",
"message": "Account rate limited, please throttle your requests."
}{
"status": "error",
"message": "An unexpected server error occurred."
}Call
List Calls
List calls with unified cursor pagination response.
POST
/
v3
/
list-calls
JavaScript
import Retell from 'retell-sdk';
const client = new Retell({
apiKey: process.env['RETELL_API_KEY'], // This is the default and can be omitted
});
const calls = await client.call.list();
console.log(calls.has_more);import os
from retell import Retell
client = Retell(
api_key=os.environ.get("RETELL_API_KEY"), # This is the default and can be omitted
)
calls = client.call.list()
print(calls.has_more)curl --request POST \
--url https://api.retellai.com/v3/list-calls \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"filter_criteria": {
"agent": [
{
"agent_id": "<string>",
"version": [
123
]
}
],
"call_id": {
"type": "string",
"value": "<string>"
},
"start_timestamp": {
"type": "number",
"value": 123
},
"end_timestamp": {
"type": "number",
"value": 123
},
"duration_ms": {
"type": "number",
"value": 123
},
"combined_cost": {
"type": "number",
"value": 123
},
"e2e_latency_p50": {
"type": "number",
"value": 123
},
"tool_calls": [
{
"name": "<string>",
"type": "<string>",
"latency_ms": {
"type": "number",
"value": 123
}
}
],
"custom_analysis_data": [
{
"type": "string",
"value": "<string>",
"key": "<string>"
}
],
"custom_attributes": [
{
"type": "string",
"value": "<string>",
"key": "<string>"
}
],
"metadata": [
{
"type": "string",
"value": "<string>",
"key": "<string>"
}
],
"dynamic_variables": [
{
"type": "string",
"value": "<string>",
"key": "<string>"
}
]
},
"sort_order": "descending",
"limit": 50,
"skip": 0,
"pagination_key": "<string>",
"include_total": false
}
'<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.retellai.com/v3/list-calls",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'filter_criteria' => [
'agent' => [
[
'agent_id' => '<string>',
'version' => [
123
]
]
],
'call_id' => [
'type' => 'string',
'value' => '<string>'
],
'start_timestamp' => [
'type' => 'number',
'value' => 123
],
'end_timestamp' => [
'type' => 'number',
'value' => 123
],
'duration_ms' => [
'type' => 'number',
'value' => 123
],
'combined_cost' => [
'type' => 'number',
'value' => 123
],
'e2e_latency_p50' => [
'type' => 'number',
'value' => 123
],
'tool_calls' => [
[
'name' => '<string>',
'type' => '<string>',
'latency_ms' => [
'type' => 'number',
'value' => 123
]
]
],
'custom_analysis_data' => [
[
'type' => 'string',
'value' => '<string>',
'key' => '<string>'
]
],
'custom_attributes' => [
[
'type' => 'string',
'value' => '<string>',
'key' => '<string>'
]
],
'metadata' => [
[
'type' => 'string',
'value' => '<string>',
'key' => '<string>'
]
],
'dynamic_variables' => [
[
'type' => 'string',
'value' => '<string>',
'key' => '<string>'
]
]
],
'sort_order' => 'descending',
'limit' => 50,
'skip' => 0,
'pagination_key' => '<string>',
'include_total' => false
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.retellai.com/v3/list-calls"
payload := strings.NewReader("{\n \"filter_criteria\": {\n \"agent\": [\n {\n \"agent_id\": \"<string>\",\n \"version\": [\n 123\n ]\n }\n ],\n \"call_id\": {\n \"type\": \"string\",\n \"value\": \"<string>\"\n },\n \"start_timestamp\": {\n \"type\": \"number\",\n \"value\": 123\n },\n \"end_timestamp\": {\n \"type\": \"number\",\n \"value\": 123\n },\n \"duration_ms\": {\n \"type\": \"number\",\n \"value\": 123\n },\n \"combined_cost\": {\n \"type\": \"number\",\n \"value\": 123\n },\n \"e2e_latency_p50\": {\n \"type\": \"number\",\n \"value\": 123\n },\n \"tool_calls\": [\n {\n \"name\": \"<string>\",\n \"type\": \"<string>\",\n \"latency_ms\": {\n \"type\": \"number\",\n \"value\": 123\n }\n }\n ],\n \"custom_analysis_data\": [\n {\n \"type\": \"string\",\n \"value\": \"<string>\",\n \"key\": \"<string>\"\n }\n ],\n \"custom_attributes\": [\n {\n \"type\": \"string\",\n \"value\": \"<string>\",\n \"key\": \"<string>\"\n }\n ],\n \"metadata\": [\n {\n \"type\": \"string\",\n \"value\": \"<string>\",\n \"key\": \"<string>\"\n }\n ],\n \"dynamic_variables\": [\n {\n \"type\": \"string\",\n \"value\": \"<string>\",\n \"key\": \"<string>\"\n }\n ]\n },\n \"sort_order\": \"descending\",\n \"limit\": 50,\n \"skip\": 0,\n \"pagination_key\": \"<string>\",\n \"include_total\": false\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.retellai.com/v3/list-calls")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"filter_criteria\": {\n \"agent\": [\n {\n \"agent_id\": \"<string>\",\n \"version\": [\n 123\n ]\n }\n ],\n \"call_id\": {\n \"type\": \"string\",\n \"value\": \"<string>\"\n },\n \"start_timestamp\": {\n \"type\": \"number\",\n \"value\": 123\n },\n \"end_timestamp\": {\n \"type\": \"number\",\n \"value\": 123\n },\n \"duration_ms\": {\n \"type\": \"number\",\n \"value\": 123\n },\n \"combined_cost\": {\n \"type\": \"number\",\n \"value\": 123\n },\n \"e2e_latency_p50\": {\n \"type\": \"number\",\n \"value\": 123\n },\n \"tool_calls\": [\n {\n \"name\": \"<string>\",\n \"type\": \"<string>\",\n \"latency_ms\": {\n \"type\": \"number\",\n \"value\": 123\n }\n }\n ],\n \"custom_analysis_data\": [\n {\n \"type\": \"string\",\n \"value\": \"<string>\",\n \"key\": \"<string>\"\n }\n ],\n \"custom_attributes\": [\n {\n \"type\": \"string\",\n \"value\": \"<string>\",\n \"key\": \"<string>\"\n }\n ],\n \"metadata\": [\n {\n \"type\": \"string\",\n \"value\": \"<string>\",\n \"key\": \"<string>\"\n }\n ],\n \"dynamic_variables\": [\n {\n \"type\": \"string\",\n \"value\": \"<string>\",\n \"key\": \"<string>\"\n }\n ]\n },\n \"sort_order\": \"descending\",\n \"limit\": 50,\n \"skip\": 0,\n \"pagination_key\": \"<string>\",\n \"include_total\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.retellai.com/v3/list-calls")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"filter_criteria\": {\n \"agent\": [\n {\n \"agent_id\": \"<string>\",\n \"version\": [\n 123\n ]\n }\n ],\n \"call_id\": {\n \"type\": \"string\",\n \"value\": \"<string>\"\n },\n \"start_timestamp\": {\n \"type\": \"number\",\n \"value\": 123\n },\n \"end_timestamp\": {\n \"type\": \"number\",\n \"value\": 123\n },\n \"duration_ms\": {\n \"type\": \"number\",\n \"value\": 123\n },\n \"combined_cost\": {\n \"type\": \"number\",\n \"value\": 123\n },\n \"e2e_latency_p50\": {\n \"type\": \"number\",\n \"value\": 123\n },\n \"tool_calls\": [\n {\n \"name\": \"<string>\",\n \"type\": \"<string>\",\n \"latency_ms\": {\n \"type\": \"number\",\n \"value\": 123\n }\n }\n ],\n \"custom_analysis_data\": [\n {\n \"type\": \"string\",\n \"value\": \"<string>\",\n \"key\": \"<string>\"\n }\n ],\n \"custom_attributes\": [\n {\n \"type\": \"string\",\n \"value\": \"<string>\",\n \"key\": \"<string>\"\n }\n ],\n \"metadata\": [\n {\n \"type\": \"string\",\n \"value\": \"<string>\",\n \"key\": \"<string>\"\n }\n ],\n \"dynamic_variables\": [\n {\n \"type\": \"string\",\n \"value\": \"<string>\",\n \"key\": \"<string>\"\n }\n ]\n },\n \"sort_order\": \"descending\",\n \"limit\": 50,\n \"skip\": 0,\n \"pagination_key\": \"<string>\",\n \"include_total\": false\n}"
response = http.request(request)
puts response.read_body{
"pagination_key": "<string>",
"has_more": true,
"items": [
{
"call_type": "web_call",
"access_token": "eyJhbGciOiJIUzI1NiJ9.eyJ2aWRlbyI6eyJyb29tSm9p",
"call_id": "Jabr9TXYYJHfvl6Syypi88rdAHYHmcq6",
"agent_id": "oBeDLoLOeuAbiuaMFXRtDOLriTJ5tSxD",
"agent_version": 1,
"call_status": "registered",
"agent_name": "My Agent",
"agent_tag": "prod",
"metadata": {},
"retell_llm_dynamic_variables": {
"customer_name": "John Doe"
},
"collected_dynamic_variables": {
"last_node_name": "Test node"
},
"custom_sip_headers": {
"X-Custom-Header": "Custom Value"
},
"data_storage_setting": "everything",
"opt_in_signed_url": true,
"start_timestamp": 1703302407333,
"end_timestamp": 1703302428855,
"transfer_end_timestamp": 1703302628855,
"duration_ms": 10000,
"recording_url": "https://retellai.s3.us-west-2.amazonaws.com/Jabr9TXYYJHfvl6Syypi88rdAHYHmcq6/recording.wav",
"recording_multi_channel_url": "https://retellai.s3.us-west-2.amazonaws.com/Jabr9TXYYJHfvl6Syypi88rdAHYHmcq6/recording_multichannel.wav",
"scrubbed_recording_url": "https://retellai.s3.us-west-2.amazonaws.com/Jabr9TXYYJHfvl6Syypi88rdAHYHmcq6/recording.wav",
"scrubbed_recording_multi_channel_url": "https://retellai.s3.us-west-2.amazonaws.com/Jabr9TXYYJHfvl6Syypi88rdAHYHmcq6/recording_multichannel.wav",
"public_log_url": "https://retellai.s3.us-west-2.amazonaws.com/Jabr9TXYYJHfvl6Syypi88rdAHYHmcq6/public_log.txt",
"knowledge_base_retrieved_contents_url": "https://retellai.s3.us-west-2.amazonaws.com/Jabr9TXYYJHfvl6Syypi88rdAHYHmcq6/kb_retrieved_contents.txt",
"latency": {
"e2e": {
"p50": 800,
"p90": 1200,
"p95": 1500,
"p99": 2500,
"max": 2700,
"min": 500,
"num": 10,
"values": [
123
]
},
"asr": {
"p50": 800,
"p90": 1200,
"p95": 1500,
"p99": 2500,
"max": 2700,
"min": 500,
"num": 10,
"values": [
123
]
},
"llm": {
"p50": 800,
"p90": 1200,
"p95": 1500,
"p99": 2500,
"max": 2700,
"min": 500,
"num": 10,
"values": [
123
]
},
"llm_websocket_network_rtt": {
"p50": 800,
"p90": 1200,
"p95": 1500,
"p99": 2500,
"max": 2700,
"min": 500,
"num": 10,
"values": [
123
]
},
"tts": {
"p50": 800,
"p90": 1200,
"p95": 1500,
"p99": 2500,
"max": 2700,
"min": 500,
"num": 10,
"values": [
123
]
},
"knowledge_base": {
"p50": 800,
"p90": 1200,
"p95": 1500,
"p99": 2500,
"max": 2700,
"min": 500,
"num": 10,
"values": [
123
]
},
"s2s": {
"p50": 800,
"p90": 1200,
"p95": 1500,
"p99": 2500,
"max": 2700,
"min": 500,
"num": 10,
"values": [
123
]
}
},
"disconnection_reason": "agent_hangup",
"transfer_destination": "+12137771234",
"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.",
"in_voicemail": false,
"user_sentiment": "Positive",
"call_successful": true,
"custom_analysis_data": {}
},
"call_cost": {
"product_costs": [
{
"product": "elevenlabs_tts",
"cost": 60,
"unit_price": 1,
"is_transfer_leg_cost": true
}
],
"total_duration_seconds": 60,
"total_duration_unit_price": 1,
"combined_cost": 70
},
"llm_token_usage": {
"values": [
123
],
"average": 123,
"num_requests": 123
}
}
],
"total": 123
}{
"status": "error",
"message": "Invalid request format, please check API reference."
}{
"status": "error",
"message": "API key is missing or invalid."
}{
"status": "error",
"message": "Account rate limited, please throttle your requests."
}{
"status": "error",
"message": "An unexpected server error occurred."
}POST /v3/list-calls is the current list-calls endpoint. It supersedes the legacy GET /list-calls — there is no v2/list-calls. To keep responses lean, the v3 payload omits transcript, transcript_object, transcript_with_tool_calls, and recording_url; call GET /v1/get-call/{call_id} with a specific call_id to fetch those fields.Authorizations
Authentication header containing API key (find it in dashboard). The format is "Bearer YOUR_API_KEY"
Body
application/json
Filter criteria for calls. All conditions are implicitly connected with AND.
Show child attributes
Show child attributes
Sort calls by start_timestamp in ascending or descending order.
Available options:
ascending, descending Maximum number of calls to return.
Required range:
x <= 1000Number of records to skip for pagination.
Required range:
x >= 0Opaque pagination cursor from a previous response.
Whether to include total (count of all calls matching filter_criteria, ignoring limit/skip/pagination_key) in the response. Defaults to false. Each enabled request triggers an additional aggregate query, so opt in only when the total is needed.
Was this page helpful?
⌘I

