> ## Documentation Index
> Fetch the complete documentation index at: https://docs.hubtalk.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# When something goes wrong

> The common refusals, what they mean and what to do about them.

# When something goes wrong

Errors arrive as a machine code plus an English explanation. **Rely on the code:** the text of the explanation may change. These are the ones you meet most often in practice; the full list is in [Error codes](/v4/web-api/errors).

| Code                                                               | What happened                                                                                                                                            | What to do                                                                                                     |
| ------------------------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------- |
| `idempotency_key_required`                                         | no idempotency key was sent                                                                                                                              | add the header, see [How a campaign runs](/v4/web-api/how-it-works)                                            |
| `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](/v4/web-api/campaign-fields)                                   |
| `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](/v4/web-api/rules)                           |
| `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                                                                                           |
