curl -X POST "https://api.sayvy.ai/api/v1/campaigns/e4a2e584-3672-4d69-b541-6e9f1a238491/resume" \
-H "Authorization: Bearer <token>"
import requests
url = "https://api.sayvy.ai/api/v1/campaigns/e4a2e584-3672-4d69-b541-6e9f1a238491/resume"
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/resume", {
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/resume"))
.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": "sending",
"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:25:00Z"
}
{
"detail": "Cannot resume campaign in 'sending' state."
}
{
"detail": "Unauthorized"
}
{
"detail": "Campaign not found."
}
Campaigns
Resume campaign
Resume delivery of a previously paused outbound WhatsApp campaign
POST
/
api
/
v1
/
campaigns
/
{campaign_id}
/
resume
curl -X POST "https://api.sayvy.ai/api/v1/campaigns/e4a2e584-3672-4d69-b541-6e9f1a238491/resume" \
-H "Authorization: Bearer <token>"
import requests
url = "https://api.sayvy.ai/api/v1/campaigns/e4a2e584-3672-4d69-b541-6e9f1a238491/resume"
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/resume", {
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/resume"))
.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": "sending",
"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:25:00Z"
}
{
"detail": "Cannot resume campaign in 'sending' state."
}
{
"detail": "Unauthorized"
}
{
"detail": "Campaign not found."
}
Resume an existing paused campaign. If the campaign’s
scheduled_at time is still in the future, it is re-registered into the Redis scheduler under status scheduled. If the scheduled time has already passed or was immediate, dispatch begins immediately and the status transitions to sending.
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 paused campaign. 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 tosending or scheduled.
string
UUID of the resumed campaign.
string
Updated operational status (
sending or scheduled).number
Total contacts in cohort.
number
Count of messages sent.
number
Count of messages delivered.
curl -X POST "https://api.sayvy.ai/api/v1/campaigns/e4a2e584-3672-4d69-b541-6e9f1a238491/resume" \
-H "Authorization: Bearer <token>"
import requests
url = "https://api.sayvy.ai/api/v1/campaigns/e4a2e584-3672-4d69-b541-6e9f1a238491/resume"
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/resume", {
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/resume"))
.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": "sending",
"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:25:00Z"
}
{
"detail": "Cannot resume campaign in 'sending' state."
}
{
"detail": "Unauthorized"
}
{
"detail": "Campaign not found."
}
‹ PreviousNext ›
Cancel campaign
POST /api/v1/campaigns/{campaign_id}/cancel
Was this page helpful?