curl -X POST "https://api.sayvy.ai/api/v1/campaigns/e4a2e584-3672-4d69-b541-6e9f1a238491/cancel" \
-H "Authorization: Bearer <token>"
import requests
url = "https://api.sayvy.ai/api/v1/campaigns/e4a2e584-3672-4d69-b541-6e9f1a238491/cancel"
headers = {
"Authorization": "Bearer <token>"
}
response = requests.post(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/cancel", {
method: "POST",
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/cancel"))
.header("Authorization", "Bearer <token>")
.POST(HttpRequest.BodyPublishers.noBody())
.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": "cancelled",
"total_contacts_count": 450,
"sent_count": 210,
"delivered_count": 204,
"read_count": 150,
"failed_count": 6,
"created_at": "2026-09-07T10:30:00Z",
"updated_at": "2026-09-07T14:30:00Z"
}
{
"detail": "Cannot cancel campaign in 'completed' state."
}
{
"detail": "Unauthorized"
}
{
"detail": "Campaign not found."
}
Campaigns
Cancel campaign
Permanently terminate an in-flight, paused, or scheduled outbound campaign
POST
/
api
/
v1
/
campaigns
/
{campaign_id}
/
cancel
curl -X POST "https://api.sayvy.ai/api/v1/campaigns/e4a2e584-3672-4d69-b541-6e9f1a238491/cancel" \
-H "Authorization: Bearer <token>"
import requests
url = "https://api.sayvy.ai/api/v1/campaigns/e4a2e584-3672-4d69-b541-6e9f1a238491/cancel"
headers = {
"Authorization": "Bearer <token>"
}
response = requests.post(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/cancel", {
method: "POST",
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/cancel"))
.header("Authorization", "Bearer <token>")
.POST(HttpRequest.BodyPublishers.noBody())
.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": "cancelled",
"total_contacts_count": 450,
"sent_count": 210,
"delivered_count": 204,
"read_count": 150,
"failed_count": 6,
"created_at": "2026-09-07T10:30:00Z",
"updated_at": "2026-09-07T14:30:00Z"
}
{
"detail": "Cannot cancel campaign in 'completed' state."
}
{
"detail": "Unauthorized"
}
{
"detail": "Campaign not found."
}
Permanently cancel a campaign that is currently
scheduled, sending, or paused. If scheduled in TaskIQ, its background schedule is un-registered from Redis. In-flight messages that have already been sent to WhatsApp will complete, but no further recipients in the queue will be processed.
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 to cancel. Example:
e4a2e584-3672-4d69-b541-6e9f1a238491.string
required
Bearer token for authentication. Format:
Bearer <token>.Response Fields
Returns the updated CampaignResponse object with status changed tocancelled.
string
UUID of the cancelled campaign.
string
Operational status:
cancelled.number
Total contacts originally queued.
number
Messages dispatched prior to cancellation.
number
Count of failed deliveries.
curl -X POST "https://api.sayvy.ai/api/v1/campaigns/e4a2e584-3672-4d69-b541-6e9f1a238491/cancel" \
-H "Authorization: Bearer <token>"
import requests
url = "https://api.sayvy.ai/api/v1/campaigns/e4a2e584-3672-4d69-b541-6e9f1a238491/cancel"
headers = {
"Authorization": "Bearer <token>"
}
response = requests.post(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/cancel", {
method: "POST",
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/cancel"))
.header("Authorization", "Bearer <token>")
.POST(HttpRequest.BodyPublishers.noBody())
.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": "cancelled",
"total_contacts_count": 450,
"sent_count": 210,
"delivered_count": 204,
"read_count": 150,
"failed_count": 6,
"created_at": "2026-09-07T10:30:00Z",
"updated_at": "2026-09-07T14:30:00Z"
}
{
"detail": "Cannot cancel campaign in 'completed' state."
}
{
"detail": "Unauthorized"
}
{
"detail": "Campaign not found."
}
‹ PreviousNext ›
Delete campaign
DELETE /api/v1/campaigns/{campaign_id}
Was this page helpful?