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