Create a dialer campaign (draft)
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).
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
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/v1/dialer/campaigns" \ -H "Content-Type: application/json" \ -d '{ "name": "October reminders", "caller_id": "+254709221583", "callback_url": "https://example.com/dialer/answered", "release_rate_per_sec": 1, "max_concurrent": 20, "budget_minor": 500000, "hours": { "timezone": "Africa/Nairobi", "windows": [ { "days": [ 1, 2, 3, 4, 5 ], "start_minute": 540, "end_minute": 1020 } ] }, "retry": { "max_attempts": 3, "backoff_minutes": [ 15, 120, 1440 ], "retry_on": [ "no_answer", "busy", "failed" ] }, "amd": { "mode": "detect_and_act", "on_machine": "hangup", "max_analysis_seconds": 4 } }'{ "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" }}{ "error": { "code": "validation.bad_request", "message": "string", "request_id": "string", "details": [ "string" ], "resolution": "string", "reason": "invalid_characters", "suggested_e164": "+254727524723" }}