Get a dialer campaign
Authorization
bearerAuth Long-lived ES256 JWT minted from the dashboard (https://app.sautikit.com/developers/api-keys). Signed by the
platform keyring. Carries workspace_id and scopes claims;
revoked via the platform deny-list.
In: header
Path Parameters
uuidResponse Body
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/v1/dialer/campaigns/497f6eca-6276-4993-bfeb-53cbbbba6f08"{ "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "name": "string", "status": "draft", "mode": "drip", "caller_id": "string", "caller_ids": [ "string" ], "callback_url": "string", "release_rate_per_sec": 0, "max_concurrent": 0, "hours": { "timezone": "string", "windows": [ { "days": [ 0 ], "start_minute": 0, "end_minute": 1 } ], "blackouts": [ "2019-08-24" ] }, "timezone": "string", "retry": { "max_attempts": 1, "backoff_minutes": [ 0 ], "retry_on": [ "no_answer" ], "min_gap_minutes": 0, "ordering": "fifo" }, "budget_minor": 0, "daily_budget_minor": 0, "warn_pct": 0, "spent_minor": 0, "amd": { "mode": "off", "on_machine": "hangup", "max_analysis_seconds": 4, "machine_message": "string" }, "overflow": { "max_hold_ms": 2000, "hold_line_seconds": 10, "auto_ai": false, "auto_ai_after_seconds": 0, "ai_agent_id": "cbaf6aba-437a-4fd2-9d34-7875f81689e6", "callback_enabled": true, "callback_delay_minutes": 10, "callback_mode": "keypad", "callback_agent_id": "01422de9-87cc-4157-b531-8850ef02c157", "callback_prompt": "string", "hold_line_text": "string", "hold_line_url": "http://example.com", "callback_offer_text": "string", "callback_confirm_text": "string", "apology_text": "string" }, "summary": { "enabled": false, "engine": "extractive" }, "ratio_max": 0, "ratio_current": 0, "abandon_target_pct": 0, "started_at": "2019-08-24T14:15:22Z", "completed_at": "2019-08-24T14:15:22Z", "created_at": "2019-08-24T14:15:22Z", "updated_at": "2019-08-24T14:15:22Z", "estimate": { "contacts": 0, "max_attempts": 0, "telco_minor": 0, "amd_minor": 0, "total_minor": 0, "currency": "string", "budget_minor": 0, "exceeds_budget": true, "priced": true }, "callback_secret": "string"}{ "error": { "code": "validation.bad_request", "message": "string", "request_id": "string", "details": [ "string" ], "resolution": "string", "reason": "invalid_characters", "suggested_e164": "+254727524723" }}{ "error": { "code": "validation.bad_request", "message": "string", "request_id": "string", "details": [ "string" ], "resolution": "string", "reason": "invalid_characters", "suggested_e164": "+254727524723" }}{ "error": { "code": "validation.bad_request", "message": "string", "request_id": "string", "details": [ "string" ], "resolution": "string", "reason": "invalid_characters", "suggested_e164": "+254727524723" }}Create a dialer campaign (draft) POST
Creates a draft drip-calling campaign. Nothing is dialed until `POST .../start`. `caller_id` must be an active number on this workspace. `callback_url` must be https to a public host: private, loopback, link-local and CGNAT addresses and `localhost` are refused (the same applies to a contact's own `callback_url`), and redirects from your endpoint are not followed. The 201 response carries `callback_secret`, the key that signs the answer callback: it is shown once, stored encrypted, and replaced with `POST .../rotate-secret`. Omitted settings take their defaults: 1 call per second, 20 concurrent, 3 attempts with 15 min / 2 h / 1 day backoff, AMD off. `progressive` and `predictive` modes need a plan that includes them (`402 plan.required` otherwise). A `predictive` campaign dials ahead of its free agents using the answer rate it learns from its own calls, never more than `ratio_max` calls per free agent (default 1.5), and slows itself down when answered callers wait (`abandon_target_pct`, default 3).
Update a dialer campaign PATCH
Changes only the fields sent. `mode` may switch between `progressive` and `predictive` (US-49) while the campaign is a draft or paused, never while it is running (`409 dialer.invalid_state`); the plan must include the new mode (`402 plan.required`). Switching keeps every contact, attempt and report row. A completed campaign cannot be edited (`409 dialer.invalid_state`).