curl --request POST \
--url https://app.thinnest.ai/api/v1/campaigns/{id}/pause \
--header 'Authorization: Bearer <token>'const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.thinnest.ai/api/v1/campaigns/{id}/pause', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://app.thinnest.ai/api/v1/campaigns/{id}/pause"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text){
"id": "cmp_9a3b7c21-4d5e-4f60-8a1b-2c3d4e5f6a7b",
"agent": "ag_5c4a5f93-2b1e-4c0a-9d3f-7e8a1b2c3d4e",
"name": "Diwali sale — VIP customers",
"kind": "whatsapp",
"status": "paused",
"template": "diwali_offer_v2",
"purpose": null,
"counts": {
"recipients": 1200,
"sent": 640,
"delivered": 610,
"read": 402,
"replied": 37,
"failed": 9,
"skipped": 14
},
"scheduledAt": null,
"startedAt": "2026-10-05T09:00:00.000Z",
"finishedAt": null,
"createdAt": "2026-10-04T16:20:11.482Z",
"lastError": null
}{
"error": "Send a valid API key as `Authorization: Bearer <key>`."
}{
"error": "This API key is read-only: it can read everything but change nothing."
}{
"error": "That campaign was not found."
}{
"error": "Only a sending campaign can be paused. This one is sent."
}{
"error": "Over 240 requests a minute. Slow down and retry."
}Pause Campaign
Stops a sending campaign from sending any more. Messages already handed to WhatsApp, and calls already placed, still complete. Resume Campaign picks up where it stopped, without messaging anyone twice. Only a sending campaign can be paused. A build key may do this, since it only ever stops sends.
curl --request POST \
--url https://app.thinnest.ai/api/v1/campaigns/{id}/pause \
--header 'Authorization: Bearer <token>'const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.thinnest.ai/api/v1/campaigns/{id}/pause', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://app.thinnest.ai/api/v1/campaigns/{id}/pause"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text){
"id": "cmp_9a3b7c21-4d5e-4f60-8a1b-2c3d4e5f6a7b",
"agent": "ag_5c4a5f93-2b1e-4c0a-9d3f-7e8a1b2c3d4e",
"name": "Diwali sale — VIP customers",
"kind": "whatsapp",
"status": "paused",
"template": "diwali_offer_v2",
"purpose": null,
"counts": {
"recipients": 1200,
"sent": 640,
"delivered": 610,
"read": 402,
"replied": 37,
"failed": 9,
"skipped": 14
},
"scheduledAt": null,
"startedAt": "2026-10-05T09:00:00.000Z",
"finishedAt": null,
"createdAt": "2026-10-04T16:20:11.482Z",
"lastError": null
}{
"error": "Send a valid API key as `Authorization: Bearer <key>`."
}{
"error": "This API key is read-only: it can read everything but change nothing."
}{
"error": "That campaign was not found."
}{
"error": "Only a sending campaign can be paused. This one is sent."
}{
"error": "Over 240 requests a minute. Slow down and retry."
}Authorizations
Your API key (ta_live_…) from Settings → API keys, sent as Authorization: Bearer <key>. Keep it on a server: it can message every customer you have. A key is full, build or read-only; a request its level does not allow is refused with 403.
Headers
Developers only: the customer workspace this request acts in — its org_… id from POST /customers. Leave it out to act in your own workspace.
"org_3fKq9TzQ1mN8vB2xR7cLpA"
Path Parameters
The campaign's id (cmp_…), as Create Campaign and List Campaigns return it.
Response
Paused. The campaign as it now is.
A WhatsApp broadcast or a calling campaign, with its results.
The campaign's id.
"cmp_9a3b7c21-4d5e-4f60-8a1b-2c3d4e5f6a7b"
A calling campaign: the agent that makes the calls. A broadcast: the agent that answers replies to it.
"ag_5c4a5f93-2b1e-4c0a-9d3f-7e8a1b2c3d4e"
The campaign's name, as the console lists it.
whatsapp for a broadcast, voice for a calling campaign.
whatsapp, voice draft until launched (a scheduled campaign stays a draft until scheduledAt), sending while it runs, paused when stopped for now, then sent, failed (it could not run; see lastError) or cancelled.
draft, sending, paused, sent, failed, cancelled A broadcast's template name. null on a calling campaign.
A calling campaign's opening line: the sentence the agent opens each call with, copied from the agent when the campaign was created (editing the agent later does not change it). null on a broadcast.
How far the campaign has got, person by person.
Show child attributes
Show child attributes
When a scheduled campaign starts itself. null when it is started by hand.
When it started sending. null while a draft.
When it finished or was cancelled. null while it can still send.
When it was created.
Why the campaign last stopped or failed, when it did. Cleared when it is launched or resumed.