curl --request GET \
--url https://api.telli.com/v1/list-calls \
--header 'Authorization: <api-key>'import requests
url = "https://api.telli.com/v1/list-calls"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://api.telli.com/v1/list-calls', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.telli.com/v1/list-calls",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.telli.com/v1/list-calls"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.telli.com/v1/list-calls")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.telli.com/v1/list-calls")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"calls": [
{
"call_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"attempt": 123,
"from_number": "<string>",
"to_number": "<string>",
"direction": "<string>",
"contact_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"agent_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"triggered_at": 123,
"triggered_at_iso": "<string>",
"started_at": 123,
"started_at_iso": "<string>",
"ended_at": 123,
"ended_at_iso": "<string>",
"call_length_min": 123,
"call_status": "COMPLETED",
"transcript": "<string>",
"transcriptObject": [
{
"role": "user",
"content": "<string>"
}
],
"call_analysis": {},
"call_outcome": {},
"outcomes": [
{
"key": "<string>",
"dataType": "boolean",
"value": true,
"reason": "<string>"
}
],
"collected_data": {},
"booked_slot_for": "<string>",
"recording_url": "<string>",
"transfer": {
"destination": "<string>",
"completed_at": "<string>"
},
"ended_reason": "agent-ended-call",
"state": "queued",
"status": "connected",
"follow_up": {
"type": "agent_follow_up",
"scheduled_at": "2023-11-07T05:31:56Z"
}
}
],
"next_cursor": "<string>"
}{
"message": "<string>"
}{
"message": "<string>"
}List Calls
Returns a paginated list of calls for the authenticated account, ordered by triggered_at descending. Optionally filter by contact_id to return only calls for a single contact, or by agent_id to return only calls for a single agent. contact_id and agent_id cannot be used together. Each item is a lean call payload: the response does not include a separate top-level contact object, and the external_contact_id and contact_details fields are omitted from each call (unlike Get Call). Use the Contact endpoints if you need contact details.
curl --request GET \
--url https://api.telli.com/v1/list-calls \
--header 'Authorization: <api-key>'import requests
url = "https://api.telli.com/v1/list-calls"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://api.telli.com/v1/list-calls', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.telli.com/v1/list-calls",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.telli.com/v1/list-calls"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.telli.com/v1/list-calls")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.telli.com/v1/list-calls")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"calls": [
{
"call_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"attempt": 123,
"from_number": "<string>",
"to_number": "<string>",
"direction": "<string>",
"contact_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"agent_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"triggered_at": 123,
"triggered_at_iso": "<string>",
"started_at": 123,
"started_at_iso": "<string>",
"ended_at": 123,
"ended_at_iso": "<string>",
"call_length_min": 123,
"call_status": "COMPLETED",
"transcript": "<string>",
"transcriptObject": [
{
"role": "user",
"content": "<string>"
}
],
"call_analysis": {},
"call_outcome": {},
"outcomes": [
{
"key": "<string>",
"dataType": "boolean",
"value": true,
"reason": "<string>"
}
],
"collected_data": {},
"booked_slot_for": "<string>",
"recording_url": "<string>",
"transfer": {
"destination": "<string>",
"completed_at": "<string>"
},
"ended_reason": "agent-ended-call",
"state": "queued",
"status": "connected",
"follow_up": {
"type": "agent_follow_up",
"scheduled_at": "2023-11-07T05:31:56Z"
}
}
],
"next_cursor": "<string>"
}{
"message": "<string>"
}{
"message": "<string>"
}call_analysis and call_outcome are deprecated and will be removed on 1st of February 2027. Both fields are retained for compatibility until then. Update your integrations to use outcomes before the removal date.Call status mapping
Do not usecall_status for new integrations. It is deprecated and returned only for backward compatibility. Use state, status, and follow_up instead.
call_status | state | status | follow_up |
|---|---|---|---|
INITIATED | queued | null | null |
RINGING | ringing | null | null |
IN_PROGRESS | in_progress | null | null |
| Not applicable | processing | null | Not applicable |
COMPLETED | ended | connected | null |
ANSWERED | ended | connected | set |
NOT_REACHED | ended | not_connected | null |
VOICEMAIL | ended | voicemail | null |
ERROR | ended | failed | null |
NOT_REACHED | ended | rejected | null |
Authorizations
API key must be provided as: Bearer <api_key>
Query Parameters
Only return calls for this telli contact ID
Only return calls for this telli agent ID. Cannot be combined with contact_id.
Maximum number of calls to return (1-100, default 50)
1 <= x <= 100Opaque cursor returned as next_cursor from a previous response. Pass unchanged to fetch the next page.
Was this page helpful?