422 dry_run_failed (the checks are in error.details.checks) if anything is wrong. Then pause, resume, cancel.
AI agent campaigns
POST /v1/campaigns
GET /v1/campaign-agents/{agentId}) must be in every record.
Pre-recorded message campaigns
No agent. Each record hears the message with its own values.POST /v1/campaigns
{name}placeholders are required variables of each record.- Write the message in the language’s script; write values as spoken (
5th November, not05/11). Max 500 characters with values. - Records with the same text share one recording (made at the first call, then reused; listed in the portal under Broadcasts → Audio files).
- Outcomes:
played(default goal),partial,voicemail(retried like no answer),invalid.
Records
POST /v1/campaigns/{campaignId}/records
multipart/form-data, field file). Up to 5000 records per request.
- Payments:
POST /v1/customer-events(type: "payment") closes the record. - Do-not-call: numbers on
/v1/dncare never called. - An
apicampaign stays running until its end date (records can keep arriving). Acsvcampaign completes when every record is done.
campaign.started, campaign.paused, campaign.resumed, campaign.completed, campaign.canceled, campaign.record.updated.