Funnel and message stats
curl --request GET \
--url https://api-production-a5d3.up.railway.app/v1/campaigns/{campaignId}/analytics \
--header 'Authorization: Bearer <token>'import requests
url = "https://api-production-a5d3.up.railway.app/v1/campaigns/{campaignId}/analytics"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api-production-a5d3.up.railway.app/v1/campaigns/{campaignId}/analytics', 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-production-a5d3.up.railway.app/v1/campaigns/{campaignId}/analytics",
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: Bearer <token>"
],
]);
$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-production-a5d3.up.railway.app/v1/campaigns/{campaignId}/analytics"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
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-production-a5d3.up.railway.app/v1/campaigns/{campaignId}/analytics")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-production-a5d3.up.railway.app/v1/campaigns/{campaignId}/analytics")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": {
"totalLeads": 123
}
}{
"error": {
"code": "unauthorized",
"message": "<string>",
"traceId": "<string>"
}
}{
"error": {
"code": "unauthorized",
"message": "<string>",
"traceId": "<string>"
}
}{
"error": {
"code": "unauthorized",
"message": "<string>",
"traceId": "<string>"
}
}{
"error": {
"code": "unauthorized",
"message": "<string>",
"traceId": "<string>"
}
}{
"error": {
"code": "unauthorized",
"message": "<string>",
"traceId": "<string>"
}
}Campaigns
Funnel and message stats
GET
/
campaigns
/
{campaignId}
/
analytics
Funnel and message stats
curl --request GET \
--url https://api-production-a5d3.up.railway.app/v1/campaigns/{campaignId}/analytics \
--header 'Authorization: Bearer <token>'import requests
url = "https://api-production-a5d3.up.railway.app/v1/campaigns/{campaignId}/analytics"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api-production-a5d3.up.railway.app/v1/campaigns/{campaignId}/analytics', 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-production-a5d3.up.railway.app/v1/campaigns/{campaignId}/analytics",
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: Bearer <token>"
],
]);
$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-production-a5d3.up.railway.app/v1/campaigns/{campaignId}/analytics"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
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-production-a5d3.up.railway.app/v1/campaigns/{campaignId}/analytics")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-production-a5d3.up.railway.app/v1/campaigns/{campaignId}/analytics")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": {
"totalLeads": 123
}
}{
"error": {
"code": "unauthorized",
"message": "<string>",
"traceId": "<string>"
}
}{
"error": {
"code": "unauthorized",
"message": "<string>",
"traceId": "<string>"
}
}{
"error": {
"code": "unauthorized",
"message": "<string>",
"traceId": "<string>"
}
}{
"error": {
"code": "unauthorized",
"message": "<string>",
"traceId": "<string>"
}
}{
"error": {
"code": "unauthorized",
"message": "<string>",
"traceId": "<string>"
}
}Authorizations
Authorization: Bearer rk_live_…. Keys do not expire and are scoped to one account. The
secret is shown once at creation and stored only as a hash, so it cannot be recovered — if
you lose it, revoke it and generate another on the API keys page.
Path Parameters
The campaign id.
Response
Aggregate counts for the campaign.
Aggregate counts for one campaign. Fields are additive over time.
Show child attributes
Show child attributes

