curl --request GET \
--url https://api.cloudtalk.io/v1/calls/{callId}/tags \
--header 'Authorization: Basic <encoded-value>'import requests
url = "https://api.cloudtalk.io/v1/calls/{callId}/tags"
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://api.cloudtalk.io/v1/calls/{callId}/tags', 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.cloudtalk.io/v1/calls/{callId}/tags",
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://api.cloudtalk.io/v1/calls/{callId}/tags"
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://api.cloudtalk.io/v1/calls/{callId}/tags")
.header("Authorization", "Basic <encoded-value>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cloudtalk.io/v1/calls/{callId}/tags")
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{
"data": [
{
"id": "311",
"name": "Billing",
"color": "#4CAF50",
"type": "tag",
"taggedAt": "2026-11-02T09:43:10Z",
"taggedByUserId": "4521"
},
{
"id": "902",
"name": "Interested",
"color": "#2196F3",
"type": "disposition",
"taggedAt": "2026-11-02T09:44:02Z",
"taggedByUserId": null
},
{
"id": "415",
"name": "Follow-up",
"color": "#FF9800",
"type": "tag",
"taggedAt": "2026-11-02T09:50:02Z",
"taggedByUserId": null
}
],
"requestId": "c9856b94-db55-402b-a6ba-adb130351158"
}{
"code": "UNAUTHORIZED",
"message": "You are not authorized to access this resource."
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": [
{
"code": "<string>",
"message": "<string>",
"target": "<string>"
}
],
"target": "<string>"
},
"requestId": "<string>"
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": [
{
"code": "<string>",
"message": "<string>",
"target": "<string>"
}
],
"target": "<string>"
},
"requestId": "<string>"
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": [
{
"code": "<string>",
"message": "<string>",
"target": "<string>"
}
],
"target": "<string>"
},
"requestId": "<string>"
}<string>{
"error": {
"code": "<string>",
"message": "<string>",
"details": [
{
"code": "<string>",
"message": "<string>",
"target": "<string>"
}
],
"target": "<string>"
},
"requestId": "<string>"
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": [
{
"code": "<string>",
"message": "<string>",
"target": "<string>"
}
],
"target": "<string>"
},
"requestId": "<string>"
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": [
{
"code": "<string>",
"message": "<string>",
"target": "<string>"
}
],
"target": "<string>"
},
"requestId": "<string>"
}List a call's tags
Returns every tag on one call, of every type (plain tags, dispositions and system tags), with when each was added and by which user, in Dashboard catalogue order. Use it to read a call’s current tags after a call.tags_modified webhook, which carries only the change.
Which calls. callId is the numeric call id from call history or the call uuid that call webhooks carry as call_uuid, in any letter case. Only ended calls are served: a call still in progress returns 409 CALL_TAGS.CALL_NOT_ENDED, and a transferred call counts as ended only when no leg is live. A call that is ringing, or that ended in the last 30 seconds or so, can return 404 CALL_TAGS.CALL_NOT_FOUND because its record is not stored yet: retry, or act on the call.ended webhook.
Tags belong to the whole call. A transferred call has one record per leg, and its tags are shared by every leg. Reading or removing by one leg’s numeric id also covers tags added on the other legs, and a tag added by call uuid is stored on the first leg.
AI tags. Tags that AI adds automatically carry a date only in taggedAt, shown as midnight Central European time in UTC, so its UTC date is the day before the tag was added, show the call’s agent in taggedByUserId, and do not send call.tags_modified.
curl --request GET \
--url https://api.cloudtalk.io/v1/calls/{callId}/tags \
--header 'Authorization: Basic <encoded-value>'import requests
url = "https://api.cloudtalk.io/v1/calls/{callId}/tags"
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://api.cloudtalk.io/v1/calls/{callId}/tags', 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.cloudtalk.io/v1/calls/{callId}/tags",
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://api.cloudtalk.io/v1/calls/{callId}/tags"
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://api.cloudtalk.io/v1/calls/{callId}/tags")
.header("Authorization", "Basic <encoded-value>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.cloudtalk.io/v1/calls/{callId}/tags")
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{
"data": [
{
"id": "311",
"name": "Billing",
"color": "#4CAF50",
"type": "tag",
"taggedAt": "2026-11-02T09:43:10Z",
"taggedByUserId": "4521"
},
{
"id": "902",
"name": "Interested",
"color": "#2196F3",
"type": "disposition",
"taggedAt": "2026-11-02T09:44:02Z",
"taggedByUserId": null
},
{
"id": "415",
"name": "Follow-up",
"color": "#FF9800",
"type": "tag",
"taggedAt": "2026-11-02T09:50:02Z",
"taggedByUserId": null
}
],
"requestId": "c9856b94-db55-402b-a6ba-adb130351158"
}{
"code": "UNAUTHORIZED",
"message": "You are not authorized to access this resource."
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": [
{
"code": "<string>",
"message": "<string>",
"target": "<string>"
}
],
"target": "<string>"
},
"requestId": "<string>"
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": [
{
"code": "<string>",
"message": "<string>",
"target": "<string>"
}
],
"target": "<string>"
},
"requestId": "<string>"
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": [
{
"code": "<string>",
"message": "<string>",
"target": "<string>"
}
],
"target": "<string>"
},
"requestId": "<string>"
}<string>{
"error": {
"code": "<string>",
"message": "<string>",
"details": [
{
"code": "<string>",
"message": "<string>",
"target": "<string>"
}
],
"target": "<string>"
},
"requestId": "<string>"
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": [
{
"code": "<string>",
"message": "<string>",
"target": "<string>"
}
],
"target": "<string>"
},
"requestId": "<string>"
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": [
{
"code": "<string>",
"message": "<string>",
"target": "<string>"
}
],
"target": "<string>"
},
"requestId": "<string>"
}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
The numeric call id or the call uuid.
"143223459"