curl --request GET \
--url https://analytics-api.cloudtalk.io/api/calls/{callId} \
--header 'Authorization: Basic <encoded-value>'import requests
url = "https://analytics-api.cloudtalk.io/api/calls/{callId}"
headers = {"Authorization": "Basic <encoded-value>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Basic <encoded-value>'}};
fetch('https://analytics-api.cloudtalk.io/api/calls/{callId}', 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://analytics-api.cloudtalk.io/api/calls/{callId}",
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: Basic <encoded-value>"
],
]);
$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://analytics-api.cloudtalk.io/api/calls/{callId}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Basic <encoded-value>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://analytics-api.cloudtalk.io/api/calls/{callId}")
.header("Authorization", "Basic <encoded-value>")
.asString();require 'uri'
require 'net/http'
url = URI("https://analytics-api.cloudtalk.io/api/calls/{callId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Basic <encoded-value>'
response = http.request(request)
puts response.read_body{
"cdr_id": 12345,
"uuid": "aaaa-bbbb-cccc-dddd",
"company_id": 100123,
"date": "2022-02-07T13:00:00.000Z",
"contact": {
"id": 1,
"name": "John Doe",
"country": "CZ",
"number": "+420123123123"
},
"call_tags": [
{
"id": 5,
"label": "Lead"
}
],
"call_rating": 3,
"internal_number": {
"id": 1,
"name": "Europe Sales",
"number": "+421456456456"
},
"call_times": {
"talking_time": 60,
"wrap_up_time": 10,
"ringing_time": 10,
"total_time": 80,
"waiting_time": 20,
"holding_time": 5
},
"direction": "incoming",
"type": "regular",
"status": "answered",
"call_steps": [
{
"type": "ivr",
"id": 1,
"date": "2022-02-07T13:00:00.000Z",
"total_time": 10,
"option": "1"
},
{
"type": "queue",
"id": 10,
"name": "Queue10",
"date": "2022-02-07T13:00:10.000Z",
"call_times": {
"talking_time": 60,
"wrap_up_time": 10,
"ringing_time": 10,
"total_time": 80,
"waiting_time": 10,
"holding_time": 3
},
"status": "answered",
"reason": null,
"resolved_by": null,
"resolved_by_call": {
"id": null,
"date": null,
"agent": {
"id": null,
"name": null
}
},
"strategy": "rrmemory",
"agent_calls": [
{
"type": "agent",
"id": 12,
"name": "Agent12",
"group_ids": [
10,
20
],
"date": "2022-02-07T13:00:10.000Z",
"call_times": {
"talking_time": null,
"wrap_up_time": null,
"ringing_time": 5,
"total_time": 5,
"holding_time": null
},
"status": "missed",
"reason": "offline",
"resolved_by": null,
"resolved_by_call": {
"id": null,
"date": null,
"agent": {
"id": null,
"name": null
}
}
},
{
"type": "agent",
"id": 11,
"name": "Agent11",
"group_ids": [
10,
20
],
"date": "2022-02-07T13:00:15.000Z",
"call_times": {
"talking_time": 60,
"wrap_up_time": 10,
"ringing_time": 5,
"total_time": 75,
"holding_time": 2
},
"status": "answered",
"reason": null,
"resolved_by": null,
"resolved_by_call": {
"id": null,
"date": null,
"agent": {
"id": null,
"name": null
}
}
}
]
}
],
"notes": [
"string"
],
"recorded": true,
"out_of_office": false
}{
"statusCode": 400,
"message": [
"callId must be a number conforming to the specified constraints"
],
"error": "Bad Request"
}{
"statusCode": 404,
"message": "Call with id '12456' doesn't exist on company '100123'",
"error": "Not Found"
}Get call details
Returns everything recorded about a single call — its timings, the steps it took through the call flow, the agents and contacts involved, tags, rating and notes.
This endpoint is served by analytics-api.cloudtalk.io, not the main API host. Returns 400 if callId is malformed and 404 if no such call exists.
curl --request GET \
--url https://analytics-api.cloudtalk.io/api/calls/{callId} \
--header 'Authorization: Basic <encoded-value>'import requests
url = "https://analytics-api.cloudtalk.io/api/calls/{callId}"
headers = {"Authorization": "Basic <encoded-value>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Basic <encoded-value>'}};
fetch('https://analytics-api.cloudtalk.io/api/calls/{callId}', 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://analytics-api.cloudtalk.io/api/calls/{callId}",
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: Basic <encoded-value>"
],
]);
$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://analytics-api.cloudtalk.io/api/calls/{callId}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Basic <encoded-value>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://analytics-api.cloudtalk.io/api/calls/{callId}")
.header("Authorization", "Basic <encoded-value>")
.asString();require 'uri'
require 'net/http'
url = URI("https://analytics-api.cloudtalk.io/api/calls/{callId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Basic <encoded-value>'
response = http.request(request)
puts response.read_body{
"cdr_id": 12345,
"uuid": "aaaa-bbbb-cccc-dddd",
"company_id": 100123,
"date": "2022-02-07T13:00:00.000Z",
"contact": {
"id": 1,
"name": "John Doe",
"country": "CZ",
"number": "+420123123123"
},
"call_tags": [
{
"id": 5,
"label": "Lead"
}
],
"call_rating": 3,
"internal_number": {
"id": 1,
"name": "Europe Sales",
"number": "+421456456456"
},
"call_times": {
"talking_time": 60,
"wrap_up_time": 10,
"ringing_time": 10,
"total_time": 80,
"waiting_time": 20,
"holding_time": 5
},
"direction": "incoming",
"type": "regular",
"status": "answered",
"call_steps": [
{
"type": "ivr",
"id": 1,
"date": "2022-02-07T13:00:00.000Z",
"total_time": 10,
"option": "1"
},
{
"type": "queue",
"id": 10,
"name": "Queue10",
"date": "2022-02-07T13:00:10.000Z",
"call_times": {
"talking_time": 60,
"wrap_up_time": 10,
"ringing_time": 10,
"total_time": 80,
"waiting_time": 10,
"holding_time": 3
},
"status": "answered",
"reason": null,
"resolved_by": null,
"resolved_by_call": {
"id": null,
"date": null,
"agent": {
"id": null,
"name": null
}
},
"strategy": "rrmemory",
"agent_calls": [
{
"type": "agent",
"id": 12,
"name": "Agent12",
"group_ids": [
10,
20
],
"date": "2022-02-07T13:00:10.000Z",
"call_times": {
"talking_time": null,
"wrap_up_time": null,
"ringing_time": 5,
"total_time": 5,
"holding_time": null
},
"status": "missed",
"reason": "offline",
"resolved_by": null,
"resolved_by_call": {
"id": null,
"date": null,
"agent": {
"id": null,
"name": null
}
}
},
{
"type": "agent",
"id": 11,
"name": "Agent11",
"group_ids": [
10,
20
],
"date": "2022-02-07T13:00:15.000Z",
"call_times": {
"talking_time": 60,
"wrap_up_time": 10,
"ringing_time": 5,
"total_time": 75,
"holding_time": 2
},
"status": "answered",
"reason": null,
"resolved_by": null,
"resolved_by_call": {
"id": null,
"date": null,
"agent": {
"id": null,
"name": null
}
}
}
]
}
],
"notes": [
"string"
],
"recorded": true,
"out_of_office": false
}{
"statusCode": 400,
"message": [
"callId must be a number conforming to the specified constraints"
],
"error": "Bad Request"
}{
"statusCode": 404,
"message": "Call with id '12456' doesn't exist on company '100123'",
"error": "Not Found"
}Authorizations
HTTP Basic Authentication. Use your API Access Key ID as the username and your API Access Key Secret as the password. Generate keys in the CloudTalk Dashboard under Account -> Settings -> API Keys (https://dashboard.cloudtalk.io/menu/account/settings/API-keys).
Path Parameters
ID of a call
Response
Detailed information about a given call
Date when the call started
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Rating of a call
Show child attributes
Show child attributes
Show child attributes
Show child attributes
incoming, outgoing, internal power_dialer, predictive_dialer, callback, redirected, transferred, regular answered, missed List of call steps
- Option 1
- Option 2
- Option 3
- Option 4
- Option 5
Show child attributes
Show child attributes
Indicates if the call was recorded
Indicates if the call was made in the out of office hours
Related topics
CloudTalk API Response Envelope Formats and SchemaCloudTalk API HTTP Error Codes: Causes and ResolutionsCall details link