Campaign report
curl --request GET \
--url https://truecaller.udchowdhury.me/v1/campaigns/{id}/report \
--header 'x-api-key: <api-key>'import requests
url = "https://truecaller.udchowdhury.me/v1/campaigns/{id}/report"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://truecaller.udchowdhury.me/v1/campaigns/{id}/report', 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://truecaller.udchowdhury.me/v1/campaigns/{id}/report",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <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://truecaller.udchowdhury.me/v1/campaigns/{id}/report"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<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://truecaller.udchowdhury.me/v1/campaigns/{id}/report")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://truecaller.udchowdhury.me/v1/campaigns/{id}/report")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"campaign": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"status": "draft",
"template_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"template_name": "<string>",
"list_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"list_name": "<string>",
"sender_id": "<string>",
"scheduled_at": "2023-11-07T05:31:56Z",
"started_at": "2023-11-07T05:31:56Z",
"completed_at": "2023-11-07T05:31:56Z",
"note": "<string>",
"recipients": 123,
"processed": 123,
"sent": 123,
"delivered": 123,
"read": 123,
"failed": 123,
"blocked": 123,
"queued": 123
},
"funnel": [
{
"stage": "<string>",
"count": 123,
"bad": true
}
],
"rates": {
"delivery_rate": 123,
"read_rate": 123,
"click_rate": 123,
"failure_rate": 123,
"blocked_rate": 123
},
"timing": {
"avg_deliver_s": 123,
"median_deliver_s": 123,
"avg_read_s": 123,
"median_read_s": 123,
"avg_click_s": 123,
"median_click_s": 123
},
"clicks": {
"tracked": true,
"unique": 123,
"total": 123,
"by_button": [
{
"label": "<string>",
"type": "link",
"people": 123,
"taps": 123
}
]
},
"categories": [
{
"key": "not_on_truecaller",
"label": "Not on Truecaller",
"count": 123
}
]
}{
"error": "not found"
}Campaigns
Campaign report
Funnel, rates, timings, clicks and failure reasons for a campaign.
GET
/
v1
/
campaigns
/
{id}
/
report
Campaign report
curl --request GET \
--url https://truecaller.udchowdhury.me/v1/campaigns/{id}/report \
--header 'x-api-key: <api-key>'import requests
url = "https://truecaller.udchowdhury.me/v1/campaigns/{id}/report"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://truecaller.udchowdhury.me/v1/campaigns/{id}/report', 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://truecaller.udchowdhury.me/v1/campaigns/{id}/report",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <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://truecaller.udchowdhury.me/v1/campaigns/{id}/report"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<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://truecaller.udchowdhury.me/v1/campaigns/{id}/report")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://truecaller.udchowdhury.me/v1/campaigns/{id}/report")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"campaign": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"status": "draft",
"template_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"template_name": "<string>",
"list_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"list_name": "<string>",
"sender_id": "<string>",
"scheduled_at": "2023-11-07T05:31:56Z",
"started_at": "2023-11-07T05:31:56Z",
"completed_at": "2023-11-07T05:31:56Z",
"note": "<string>",
"recipients": 123,
"processed": 123,
"sent": 123,
"delivered": 123,
"read": 123,
"failed": 123,
"blocked": 123,
"queued": 123
},
"funnel": [
{
"stage": "<string>",
"count": 123,
"bad": true
}
],
"rates": {
"delivery_rate": 123,
"read_rate": 123,
"click_rate": 123,
"failure_rate": 123,
"blocked_rate": 123
},
"timing": {
"avg_deliver_s": 123,
"median_deliver_s": 123,
"avg_read_s": 123,
"median_read_s": 123,
"avg_click_s": 123,
"median_click_s": 123
},
"clicks": {
"tracked": true,
"unique": 123,
"total": 123,
"by_button": [
{
"label": "<string>",
"type": "link",
"people": 123,
"taps": 123
}
]
},
"categories": [
{
"key": "not_on_truecaller",
"label": "Not on Truecaller",
"count": 123
}
]
}{
"error": "not found"
}timing: average and median seconds to deliver, read and click, measured from when Truecaller accepted each message.clicks.by_button: taps per button and on links in the text. Taps on link buttons and quick replies are reported by Truecaller; links are counted through a short redirect whentrack_linksis on.categories: failed and skipped messages grouped by reason. See Errors.
Authorizations
Workspace API key from Developers → API keys. It starts with tc_live_.
Path Parameters
Response
The report.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Seconds from Truecaller accepting each message.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Failed and skipped messages grouped by reason.
Show child attributes
Show child attributes
Was this page helpful?

