curl -X GET "https://api.sayvy.ai/api/v1/campaigns/e4a2e584-3672-4d69-b541-6e9f1a238491" \
-H "Authorization: Bearer <token>"
import requests
url = "https://api.sayvy.ai/api/v1/campaigns/e4a2e584-3672-4d69-b541-6e9f1a238491"
headers = {
"Authorization": "Bearer <token>"
}
response = requests.get(url, headers=headers)
print(response.status_code)
print(response.json())
const response = await fetch("https://api.sayvy.ai/api/v1/campaigns/e4a2e584-3672-4d69-b541-6e9f1a238491", {
method: "GET",
headers: {
"Authorization": "Bearer <token>"
}
});
const data = await response.json();
console.log(data);
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.sayvy.ai/api/v1/campaigns/e4a2e584-3672-4d69-b541-6e9f1a238491"))
.header("Authorization", "Bearer <token>")
.GET()
.build();
HttpResponse<String> response =
HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
{
"id": "e4a2e584-3672-4d69-b541-6e9f1a238491",
"organization_id": "93f35dc2-5d46-4e58-a9ee-038c35d9bcf1",
"name": "Q3 Lead Reactivation",
"whatsapp_phone_number_id": "8f3b0e2a-71d3-4a5f-9e6b-123456789abc",
"message_template_id": "3a4b5c6d-7e8f-9012-3456-789abcdef012",
"audience_type": "tags",
"audience_tags": [
"high_intent",
"q3_leads"
],
"audience_contact_ids": null,
"scheduled_at": "2026-09-15T14:00:00Z",
"status": "sending",
"total_contacts_count": 450,
"sent_count": 432,
"delivered_count": 418,
"read_count": 312,
"failed_count": 14,
"created_at": "2026-09-07T10:30:00Z",
"updated_at": "2026-09-07T14:15:00Z"
}
{
"detail": "Unauthorized"
}
{
"detail": "Campaign not found or does not belong to this organization."
}
Campaigns
Get campaign
Retrieve complete campaign configuration, audience parameters, and live broadcast delivery telemetry
GET
/
api
/
v1
/
campaigns
/
{campaign_id}
curl -X GET "https://api.sayvy.ai/api/v1/campaigns/e4a2e584-3672-4d69-b541-6e9f1a238491" \
-H "Authorization: Bearer <token>"
import requests
url = "https://api.sayvy.ai/api/v1/campaigns/e4a2e584-3672-4d69-b541-6e9f1a238491"
headers = {
"Authorization": "Bearer <token>"
}
response = requests.get(url, headers=headers)
print(response.status_code)
print(response.json())
const response = await fetch("https://api.sayvy.ai/api/v1/campaigns/e4a2e584-3672-4d69-b541-6e9f1a238491", {
method: "GET",
headers: {
"Authorization": "Bearer <token>"
}
});
const data = await response.json();
console.log(data);
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.sayvy.ai/api/v1/campaigns/e4a2e584-3672-4d69-b541-6e9f1a238491"))
.header("Authorization", "Bearer <token>")
.GET()
.build();
HttpResponse<String> response =
HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
{
"id": "e4a2e584-3672-4d69-b541-6e9f1a238491",
"organization_id": "93f35dc2-5d46-4e58-a9ee-038c35d9bcf1",
"name": "Q3 Lead Reactivation",
"whatsapp_phone_number_id": "8f3b0e2a-71d3-4a5f-9e6b-123456789abc",
"message_template_id": "3a4b5c6d-7e8f-9012-3456-789abcdef012",
"audience_type": "tags",
"audience_tags": [
"high_intent",
"q3_leads"
],
"audience_contact_ids": null,
"scheduled_at": "2026-09-15T14:00:00Z",
"status": "sending",
"total_contacts_count": 450,
"sent_count": 432,
"delivered_count": 418,
"read_count": 312,
"failed_count": 14,
"created_at": "2026-09-07T10:30:00Z",
"updated_at": "2026-09-07T14:15:00Z"
}
{
"detail": "Unauthorized"
}
{
"detail": "Campaign not found or does not belong to this organization."
}
Retrieve details for a specific outbound campaign by its unique UUID identifier, including current dispatch status, template configuration, audience parameters, and live aggregate delivery counts.
Authentication
This endpoint requires Bearer token authentication.Authorization: Bearer <token>
| Header | Type | Required | Description | Format |
|---|---|---|---|---|
Authorization | string | Yes | Scoped organization API key or Bearer JWT token | Bearer <token> |
Input parameters
string
required
Unique UUID identifier of the campaign. Example:
e4a2e584-3672-4d69-b541-6e9f1a238491.string
required
Bearer token for authentication. Format:
Bearer <token>.Response Fields
string
Unique UUID identifier of the campaign.
string
UUID of the organization owning the campaign.
string
Campaign title.
string
Operational state of the campaign (
draft, scheduled, sending, paused, completed, cancelled).string
UUID of the WhatsApp Business telephone channel.
string
UUID of the approved WhatsApp template used, or
null.string
Targeting strategy used (
all, tags, or manual).string[]
Array of tags targeted if
audience_type is tags, otherwise null.string[]
Array of contact IDs targeted if
audience_type is manual, otherwise null.string
ISO 8601 scheduled start timestamp in UTC, or
null.number
Total number of contacts resolved for this campaign batch.
number
Count of messages dispatched to the WhatsApp API.
number
Count of messages confirmed delivered to recipient handsets.
number
Count of messages read by recipient contacts.
number
Count of messages that resulted in delivery failure or bounced.
string
ISO 8601 timestamp of campaign creation.
string
ISO 8601 timestamp of the last status or metric update.
curl -X GET "https://api.sayvy.ai/api/v1/campaigns/e4a2e584-3672-4d69-b541-6e9f1a238491" \
-H "Authorization: Bearer <token>"
import requests
url = "https://api.sayvy.ai/api/v1/campaigns/e4a2e584-3672-4d69-b541-6e9f1a238491"
headers = {
"Authorization": "Bearer <token>"
}
response = requests.get(url, headers=headers)
print(response.status_code)
print(response.json())
const response = await fetch("https://api.sayvy.ai/api/v1/campaigns/e4a2e584-3672-4d69-b541-6e9f1a238491", {
method: "GET",
headers: {
"Authorization": "Bearer <token>"
}
});
const data = await response.json();
console.log(data);
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.sayvy.ai/api/v1/campaigns/e4a2e584-3672-4d69-b541-6e9f1a238491"))
.header("Authorization", "Bearer <token>")
.GET()
.build();
HttpResponse<String> response =
HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
{
"id": "e4a2e584-3672-4d69-b541-6e9f1a238491",
"organization_id": "93f35dc2-5d46-4e58-a9ee-038c35d9bcf1",
"name": "Q3 Lead Reactivation",
"whatsapp_phone_number_id": "8f3b0e2a-71d3-4a5f-9e6b-123456789abc",
"message_template_id": "3a4b5c6d-7e8f-9012-3456-789abcdef012",
"audience_type": "tags",
"audience_tags": [
"high_intent",
"q3_leads"
],
"audience_contact_ids": null,
"scheduled_at": "2026-09-15T14:00:00Z",
"status": "sending",
"total_contacts_count": 450,
"sent_count": 432,
"delivered_count": 418,
"read_count": 312,
"failed_count": 14,
"created_at": "2026-09-07T10:30:00Z",
"updated_at": "2026-09-07T14:15:00Z"
}
{
"detail": "Unauthorized"
}
{
"detail": "Campaign not found or does not belong to this organization."
}
‹ PreviousNext ›
Pause campaign
POST /api/v1/campaigns/{campaign_id}/pause
Was this page helpful?