idempotency_key_required | no idempotency key was sent | add the header, see How a campaign runs |
idempotency_key_reuse | the same key with a different body | take a new key for the new campaign or batch |
idempotency_key_in_flight | the first request with this key is still running | wait for its answer, do not retry |
campaign_agent_unknown | there is no agent with this name in your organization | check the agent name; an unpublished agent is a different case — it produces a draft, not a rejection |
dialing_route_unresolved | the agent is not bound to any line | bind it in Telephony |
dialing_route_ambiguous | the agent is bound to several lines | name the line explicitly, see Dialing binding |
dialing_binding_incomplete | a number or subgroup was named without a line | send trunk_id as well, or send none of the three |
campaign_timezone_unknown | the time zone was not recognized | use a name like Asia/Almaty; offsets like +05:00 are not accepted |
campaign_classification_invalid | the campaign purpose is not from the list | use one of the three values in Consent and the campaign purpose |
campaign_window_invalid | the end is earlier than the start | check the window |
campaign_spec_invalid | settings refused: the pace is not one of 1, 2, 5, 10, 20, 30, 60, 100, 200, or the retries, working hours, duplicate action or name length are invalid | check the settings against the reference |
working_hours_wider_than_law | the hours are wider than the organization’s calling window or the legal window | narrow the hours, or do not set them at all |
launch_blocked | the launch failed the checks | the reasons are listed inside the error; a do-not-call blocker carries the refreshed list of matches |
campaign_transition_invalid | the transition is impossible from the current state (resuming a cancelled campaign, say) | check the campaign status |
market_package_not_installed | your organization has no market package, so the numbers cannot be screened | contact support |
dnc_screen_required | an upload of the old format, with no per-row registry screening | upload the numbers again |
report_filter_invalid | an invalid only value on the upload report | drop the filter or pass only=dnc_match |
calls_rejected | a batch of added numbers contains a row with a data error — the whole batch was refused | fix the rows from the parse in the error and send the batch again with the same idempotency key |
calls_dnc_matched | a batch of added numbers contains a number from the do-not-call registry — the whole batch was refused | remove those numbers from your base (the list is in the upload report with only=dnc_match) and send it again |
campaign_closed | the campaign is finished or cancelled and accepts no more numbers | create a new campaign |
calls_required / calls_batch_too_large | the batch is empty or larger than 1000 rows | send between 1 and 1000 numbers per request |
attestation_invalid | the batch attestation is not exactly {"confirmed": true} | send exactly that field, without import_id |
attestation_import_id_required | a separate launch did not name the upload the signature covers | pass the import_id from the create response |
campaign_open_ends_at_required / campaign_open_ends_at_too_far | a campaign open to call additions has no end date, or one beyond 30 days | name an end date within the horizon |
campaign_not_found / import_not_found | there is no such campaign or upload in your organization | check the identifier |