Create a dialer campaign
Creates a new outbound dialer campaign in draft status (preview / progressive / predictive / agentless mode). Validates that caller_id_e164 and every caller_id_pool entry are owned by the calling org (anti-spoofing), and that voice_agent_id (when set) references a real voice agent in this workspace. Recording requires recording_consent_acknowledged=true in the same request. Requires the dialer:write scope.
Authorizations
Dashboard JWT token from Clerk
Headers
Stripe-style idempotency token. Pass a stable, client-generated value (1-255 chars) to dedupe retries on transient timeouts. The same key+credential+path replays the original response for 24h on 2xx (5min on 4xx, 30s on 5xx). Returns 409 if a concurrent request with the same key is already in flight; replayed responses include the Idempotency-Replay: true response header.
1 - 255Sandbox opt-in for Clerk-session-authenticated requests. Set to true to route the call through the test-mode pipeline: no real provider delivery, no credits deducted, response meta.test_mode: true. Ignored for live API keys (dv_live_sk_*) — server-to-server clients must use a test-prefixed key (dv_test_sk_*) to exercise sandbox. Test-prefixed keys unconditionally enable sandbox regardless of this header.
true, false Body
Campaign display name.
Dial strategy: 'preview' (agent reviews + clicks to dial), 'progressive', 'predictive', or 'agentless' (broadcast, no agent leg).
Default outbound caller-ID in E.164 format. Must be a number this org owns.
Predictive/progressive dial-to-agent ratio. 0.8-3.0, default 1.2.
FCC abandon-rate ceiling for this campaign, as a fraction (e.g. 0.03 = 3%). Cannot exceed the platform's 3% ceiling.
Target seconds-to-answer used by the predictive pacer. 5-120, default 20.
Optional explicit Jambonz voice-control-plane application override. Omit to use the mode/AMD-resolved default.
Required agent skills for this campaign — legacy string array (e.g. ['french']) or structured {skill, min_level, weight} objects.
Optional legacy call-script reference.
Whether calls in this campaign are recorded. Requires recording_consent_acknowledged=true.
Whether answering-machine detection runs on each dialed leg.
'human' (default, agent-fronted) or 'voice_agent' (each leg connects to the AI voice agent named by voice_agent_id, dispatched via POST /campaigns/:id/batch-dispatch).
Required when dispatch_mode='voice_agent'; must reference an existing agent in this workspace.
Max simultaneous in-flight legs for voice-agent batch dispatch. 1-200, default 10.
HTTPS URL of the message Jambonz plays on answer. Required when mode='agentless', forbidden otherwise.
HTTPS voicemail-drop audio URL played when AMD detects a machine. Only valid for agent-driven modes.
AMD detection sensitivity: 'low', 'medium', or 'high'. Only meaningful when amd_enabled=true.
Per-campaign override of how long a preview-mode agent has to decide before the claim auto-skips. Only valid for mode='preview'.
Free-form operator metadata (e.g. TCPA quiet-hours override, disposition codes).
Per-outcome retry backoff schedule keyed by outcome bucket (no_answer, busy, machine, machine_silence, failed).
Local-presence caller-ID rotation pool. Every entry must be owned by this org. Required (non-empty) when caller_id_strategy is not 'single'.
Caller-ID assignment strategy: 'single' (default) or 'npa_match' (local-presence rotation from caller_id_pool).
Optional human-agent guided-dialog script (sections + branches). Omitted campaigns persist the canonical empty shape.
Operator's two-party-consent acknowledgement. Required when recording_enabled=true.
When true, contacts uploaded to this campaign are enrolled at their highest-answer-probability window instead of list order.