POST/campaigns/:campaignId/pause
Pause an in-progress campaign. Same behavior as the dashboard Pause control — stops queued outreach for that campaign. Does not send LinkedIn traffic.
0 credits. To resume later, call POST …/start.
| Current status | Behavior |
|---|---|
CAMPAIGN_IN_PROGRESS | Pause → CAMPAIGN_PAUSED (action: paused) |
CAMPAIGN_PAUSED | No-op success (action: noop) |
| Other | 409 conflict |
Also 409 conflict if more leads are still being added — wait for that to finish, then retry.
POST /campaigns/search_abc/pause
X-API-Key: sk_live_...
Content-Type: application/json
{}
Body must be empty or {}. Any other fields → 400 validation_error.
{
"campaignId": "search_abc",
"action": "paused",
"status": "CAMPAIGN_PAUSED",
"campaign": {
"id": "search_abc",
"name": "Q3 outbound",
"status": "CAMPAIGN_PAUSED",
"totalLeads": 120,
"assignedTemplateId": "tpl_...",
"stats": {
"connectionRequestsSent": 80,
"connectionRequestsAccepted": 20,
"acceptanceRate": 25.0,
"messagesSent": 40,
"repliesReceived": 8,
"replyRate": 20.0
}
}
}
| Field | Values |
|---|---|
campaignId | Same as path |
action | paused | noop |
status | Always CAMPAIGN_PAUSED on success |
campaign | Same shape as GET /campaigns/:id |
| Error code | When |
|---|---|
validation_error | Body has extra fields |
not_found | Unknown campaign |
conflict | Not in progress, or more leads are still being added |
rate_limited | Over the start/pause limit (30 / minute) |
upstream_unavailable | Temporary failure — retry |
MCP: pause_campaign (campaignId only).