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

# Error responses

> Understand HTTP status codes and the API code field, and what to do in each case.

<Tip>
  An API error is a **red traffic light** on the road: HTTP tells you severity and `code` tells you what stopped. Handle by `code`, not free-text `message`.
</Tip>

## What is an error response?

When something goes wrong, the API returns an **HTTP status code** and a stable **`code`** field in the JSON. Use both to decide whether to fix the request, retry, or alert the user.

Think of it like a car dashboard: the light comes on (HTTP) and the manual says what's wrong (`code`).

## What is it for?

With error responses you can:

* **Automate** handling in your code (retry, user message, internal alert)
* **Debug** faster with [API logs](/guides/logs/index)
* **Avoid** relying on translated text in `message`

## Standard format

On **all API v1** errors:

```json theme={null}
{
  "success": false,
  "error": "Bad Request",
  "message": "Human-readable text",
  "code": "BAD_REQUEST"
}
```

| Field       | What it is                                                                        |
| ----------- | --------------------------------------------------------------------------------- |
| **error**   | HTTP label (e.g. `Bad Request`)                                                   |
| **message** | Human-readable text, localized via `Accept-Language` / `x-locale` when applicable |
| **code**    | Stable enum, **always present**. Primary signal for your code                     |

On **templates**, variable errors may also include **`missingVariables`** (`{{…}}` keys that were missing) and **`details`** (array `{ field, message }` per field).

<Note>
  Since Jul 2026 **all** API v1 HTTP errors include `code` + `message`. Legacy integrations that only read `message` should migrate to `code`.
</Note>

## Most common HTTP codes

<AccordionGroup>
  <Accordion title="400: something in the request is wrong">
    Missing field, invalid format, routing conflict (`instanceId` + `sendingPoolId` together), etc. Fix the body and try again.
  </Accordion>

  <Accordion title="401: invalid or missing key">
    Wrong header, revoked or expired key. Check `Authorization: Bearer sk_...`. On an official WhatsApp line, an expired/invalid Meta token can also return **401** with `META_TOKEN_EXPIRED` / `META_TOKEN_INVALID` (key is fine; reconnect the instance).
  </Accordion>

  <Accordion title="402: plan, credits, or spend limit">
    Trial ended, zero balance, or key cap hit. Top up, upgrade, or adjust the key limit.
  </Accordion>

  <Accordion title="403: not allowed">
    Missing scope, resource outside key list, or blocked operation. Adjust [scopes](/guides/api-key/index#scopes-and-permissions) or key restrictions.
  </Accordion>

  <Accordion title="404: not found">
    Wrong ID, inactive instance, or resource from another workspace. Check the ID in URL or body.
  </Accordion>

  <Accordion title="409: conflict">
    Duplicate resource or invalid state (e.g. delete active instance; email domain already registered, `EMAIL_DOMAIN_ALREADY_REGISTERED`). Use existing resource or change state first.
  </Accordion>

  <Accordion title="422: rejected by provider">
    The request is well formed, but an external provider refused the operation. On **POST /v1/email/domains**, antispam blocks or ZeptoMail/SES rejection return **`EMAIL_DOMAIN_PROVIDER_ANTISPAM`** or **`EMAIL_DOMAIN_PROVIDER_REJECTED`**. Handle by `code`; use `message` (localized) for end users.
  </Accordion>

  <Accordion title="429: too many requests">
    API rate limit, sandbox daily limit (`SANDBOX_DAILY_LIMIT`), or **Trust Factor** daily cap (`TRUST_DAILY_LIMIT`). Wait, reduce volume, or improve workspace score. See [Trust Factor](/guides/workspaces/trust-factor).
  </Accordion>

  <Accordion title="502 / 503: temporary problem">
    Disconnected instance or temporary provider failure. Retry in a few minutes. On email domain registration, provider unavailability uses **`EMAIL_DOMAIN_PROVIDER_UNAVAILABLE`** (502 or 503). Do not confuse with antispam (**422**).
  </Accordion>
</AccordionGroup>

## Special cases

Some flows do not follow the standard “error HTTP” pattern. Keep these in mind:

### Verify email domain (`POST /v1/email/domains/:id/verify`)

Scopes: **`email:domains:list`** or **`email:domains:create`**.

| Situation               | HTTP      | `code`                              | Notes                                                 |
| ----------------------- | --------- | ----------------------------------- | ----------------------------------------------------- |
| DNS still pending       | **200**   | `EMAIL_DOMAIN_DNS_PENDING`          | `success: true`, `verified: false`. Not an HTTP error |
| Domain verified         | **200**   | `EMAIL_DOMAIN_VERIFIED`             | `success: true`, `verified: true`                     |
| DNS failed              | **200**   | `EMAIL_DOMAIN_VERIFY_FAILED`        | `success: true`, `verified: false`                    |
| Domain not found        | 404       | `EMAIL_DOMAIN_NOT_FOUND`            |                                                       |
| Provider unavailable    | 502 / 503 | `EMAIL_DOMAIN_VERIFY_UNAVAILABLE`   |                                                       |
| Missing provider config | 503       | `EMAIL_DOMAIN_MISSING_PROVIDER_KEY` |                                                       |

### FELCA reports (`POST /v1/report`)

**Public** endpoint (no API Key). Errors use the same `success: false` envelope with `code`. Full guide: [Report API (FELCA)](/en/guides/compliance/report-api).

### WhatsApp inbound media download

`GET /v1/whatsapp/messages/inbound/{id}/media/download` or `POST .../media`. Scope `whatsapp:read`. Types: image, audio, document, video, sticker (QR instance). See [Inbound messages and replies](/guides/webhooks/mensagens-recebidas-e-respostas).

### Telegram inbound media download

`GET /v1/telegram/messages/inbound/{id}/media/download` or `POST .../media`. Scope `telegram:read`. Types: image, audio, video, document, sticker (Bot and User/QR).

### Instagram inbound media download

`GET /v1/instagram/messages/inbound/{id}/media/download` or `POST .../media`. Scope `instagram:read`. Types: image, video, audio/voice.

### Sending Pools (WhatsApp)

Guide: [Sending Pools](/en/whatsapp-api/como-funciona/sending-pools).

| `code`                       | HTTP | What to do                                                               |
| ---------------------------- | ---- | ------------------------------------------------------------------------ |
| `SENDING_POOL_KIND_MISMATCH` | 400  | Pool is official or unofficial, do not mix types when adding an instance |
| `SENDING_POOL_KIND_MIXED`    | 400  | Pool is already inconsistent; fix in the dashboard before sending        |
| `SENDING_POOL_NOT_FOUND`     | 404  | Invalid `sendingPoolId` or wrong workspace                               |
| `SENDING_POOL_UNAVAILABLE`   | 503  | Pool has no active instances right now                                   |
| `ROUTING_CONFLICT`           | 400  | Do not send `instanceId` and `sendingPoolId` in the same request         |

Campaigns with a pool: `CAMPAIGN_SENDING_POOL_INVALID` (**Campaigns** section below).

### Number protection (WhatsApp)

Guide: [Anti-ban policy](/en/whatsapp-api/como-funciona/politica-anti-banimento).

| `code`                  | HTTP | What to do                                                                |
| ----------------------- | ---- | ------------------------------------------------------------------------- |
| `PHONE_NUMBER_MISMATCH` | 409  | Scanned number ≠ expected or locked, use the right SIM or a new instance  |
| `RECONNECT_COOLDOWN`    | 429  | Wait `retryAfterSec` after involuntary drop before a new code             |
| `WARMUP_DAILY_LIMIT`    | 429  | Daily cap in the first 3 days (20/day), send tomorrow or wait for warm-up |

### Groups (WhatsApp, unofficial)

Guide: [Groups](/en/whatsapp-api/grupos/introducao). **Unofficial** instance only.

| `code`                            | HTTP | What to do                                                       |
| --------------------------------- | ---- | ---------------------------------------------------------------- |
| `SCOPE_GROUPS_REQUIRED`           | 403  | Add **`whatsapp:groups`** scope to the key                       |
| `WHATSAPP_GROUPS_UNOFFICIAL_ONLY` | 400  | Use an **unofficial** instance, official does not support groups |

### Official Meta line (WhatsApp)

Guide: [Official Meta templates](/en/whatsapp-api/como-funciona/templates-oficiais-meta). With `sk_live_`, Meta gates run; in sandbox (`sk_test_`) they do not.

| `code`                                | HTTP | What to do                                                                 |
| ------------------------------------- | ---- | -------------------------------------------------------------------------- |
| `META_TEMPLATE_REQUIRED`              | 400  | Outside 24h window, send an approved template or wait for a customer reply |
| `META_TEMPLATE_NOT_FOUND`             | 400  | Name/language does not match Meta, sync/link; check `metaName`             |
| `META_TEMPLATE_MEDIA_REQUIRED`        | 400  | Header or carousel requires media on the official template                 |
| `META_TEMPLATE_CAROUSEL_INCONSISTENT` | 400  | Carousel cards have different structure, align in the editor               |
| `META_PAYMENT_METHOD_REQUIRED`        | 402  | Add a card in WhatsApp Manager                                             |
| `META_TOKEN_EXPIRED`                  | 401  | Reconnect the official instance (Graph token expired)                      |
| `META_TOKEN_INVALID`                  | 401  | Reconnect the official instance (invalid token)                            |
| `META_PERMISSION_DENIED`              | 403  | Insufficient Meta permissions on the account or WABA                       |
| `META_MESSAGE_EDIT_UNSUPPORTED`       | 400  | Official line cannot edit an already sent message                          |
| `META_MESSAGE_DELETE_UNSUPPORTED`     | 400  | Official line cannot delete an already sent message                        |

`TEMPLATE_NOT_ALLOWED_FOR_INSTANCE` and `TEMPLATE_META_STRUCTURE_REQUIRES_OFFICIAL` are under **Templates** below.

## Full enum list (`code`)

All **245** public `code` values returned by the **API v1**. Internal platform codes are not listed. Expand each section to view the table. For the exact request that caused the error, open [API logs](/guides/logs/index).

<AccordionGroup>
  <Accordion title="Sandbox (1)">
    | `code`                | Meaning             |
    | --------------------- | ------------------- |
    | `SANDBOX_DAILY_LIMIT` | sandbox daily limit |
  </Accordion>

  <Accordion title="Account and workspace (7)">
    | `code`                          | Meaning                       |
    | ------------------------------- | ----------------------------- |
    | `API_KEY_EXPIRED`               | API Key expired               |
    | `API_KEY_REVOKED`               | API Key revoked               |
    | `LAST_WORKSPACE`                | last workspace                |
    | `ONBOARDING_REQUIRED`           | onboarding required           |
    | `UNAUTHORIZED`                  | Missing or invalid API Key    |
    | `WORKSPACE_HEADER_NOT_ALLOWED`  | workspace header not allowed  |
    | `WORKSPACE_SLOTS_LIMIT_REACHED` | workspace slots limit reached |
  </Accordion>

  <Accordion title="Plan, credits, and queue (20)">
    | `code`                                     | Meaning                                               |
    | ------------------------------------------ | ----------------------------------------------------- |
    | `API_KEY_SPEND_LIMIT_EXCEEDED`             | api key spend limit exceeded                          |
    | `INSUFFICIENT_CREDITS`                     | insufficient credits                                  |
    | `INSUFFICIENT_CREDITS_OR_BALANCE`          | insufficient credits or balance                       |
    | `PLAN_LIMIT_AUTOMATIONS`                   | Plan automation limit reached                         |
    | `PLAN_LIMIT_CREDITS`                       | Plan credit limit reached                             |
    | `PLAN_LIMIT_CRM`                           | plan limit crm                                        |
    | `PLAN_LIMIT_EMAIL_DOMAINS`                 | plan limit email domains                              |
    | `PLAN_LIMIT_INSTANCES`                     | plan limit instances                                  |
    | `PLAN_LIMIT_PUSH_APPS`                     | plan limit push apps                                  |
    | `PLAN_LIMIT_SCHEDULING`                    | plan limit scheduling                                 |
    | `PLAN_LIMIT_SCHEDULING_DAYS`               | plan limit scheduling days                            |
    | `PLAN_LIMIT_TEMPLATES`                     | plan limit templates                                  |
    | `PLAN_LIMIT_WEBHOOKS`                      | plan limit webhooks                                   |
    | `PREMIUM_AUTOMATIONS_ACCESS_CODE`          | premium automations access code                       |
    | `PREMIUM_FEATURE_REQUIRES_PLAN_OR_BALANCE` | Premium feature requires paid plan, trial, or balance |
    | `RATE_LIMIT_EXCEEDED`                      | Rate limit exceeded                                   |
    | `RATE_LIMIT_SOFT_THRESHOLD`                | rate limit soft threshold                             |
    | `WORKSPACE_BACKLOG_LIMIT`                  | workspace backlog limit                               |
    | `WORKSPACE_BACKLOG_SOFT_LIMIT`             | workspace backlog soft limit                          |
    | `WORKSPACE_BLOCKED`                        | workspace blocked                                     |
  </Accordion>

  <Accordion title="WhatsApp (25)">
    | `code`                            | Meaning                                                                   |
    | --------------------------------- | ------------------------------------------------------------------------- |
    | `CANNOT_CANCEL_PROCESSING`        | cannot cancel processing                                                  |
    | `CANNOT_CANCEL_STATUS`            | cannot cancel status                                                      |
    | `CANNOT_SEND_TO_SELF`             | cannot send to self                                                       |
    | `EVOLUTION_GO_LICENSE_REQUIRED`   | Unofficial WhatsApp connection license missing/invalid on the environment |
    | `INSTANCE_ACTIVE`                 | instance active                                                           |
    | `INSTANCE_CHANNEL_MISMATCH`       | instance channel mismatch                                                 |
    | `INSTANCE_NOT_FOUND`              | instance not found                                                        |
    | `INSTANCE_SMS_NOT_ENABLED`        | instance sms not enabled                                                  |
    | `INSTANCE_UNAVAILABLE`            | WhatsApp instance incompatible or inactive for media download             |
    | `NO_MEDIA`                        | Inbound message has no downloadable media                                 |
    | `NO_WHATSAPP_INSTANCE`            | no whatsapp instance                                                      |
    | `PHONE_NUMBER_MISMATCH`           | Scanned number ≠ lockedPhoneNumber or expectedPhoneNumber                 |
    | `RECONNECT_COOLDOWN`              | 6 h cooldown after involuntary disconnect or too many QR attempts         |
    | `ROUTING_CONFLICT`                | routing conflict                                                          |
    | `SCOPE_GROUPS_REQUIRED`           | scope groups required                                                     |
    | `SENDING_POOL_KIND_MISMATCH`      | Cannot mix official and unofficial instances in the same pool             |
    | `SENDING_POOL_KIND_MIXED`         | Pool already mixes official and unofficial; homogenize before sending     |
    | `SENDING_POOL_NOT_FOUND`          | sending pool not found                                                    |
    | `SENDING_POOL_UNAVAILABLE`        | sending pool unavailable                                                  |
    | `UNSAFE_CONTENT`                  | unsafe content                                                            |
    | `WARMUP_DAILY_LIMIT`              | WhatsApp warm-up limit (20 msgs/day for first 3 days)                     |
    | `WHATSAPP_GROUPS_UNOFFICIAL_ONLY` | Groups only on unofficial connection                                      |
    | `WHATSAPP_PRESENCE_FAILED`        | whatsapp presence failed                                                  |
    | `WHATSAPP_PRESENCE_GO_ONLY`       | whatsapp presence go only                                                 |
  </Accordion>

  <Accordion title="Meta Cloud / official templates (10)">
    | `code`                                | Meaning                                             |
    | ------------------------------------- | --------------------------------------------------- |
    | `META_MESSAGE_DELETE_UNSUPPORTED`     | Official line cannot delete an already sent message |
    | `META_MESSAGE_EDIT_UNSUPPORTED`       | Official line cannot edit an already sent message   |
    | `META_PAYMENT_METHOD_REQUIRED`        | No active card in WhatsApp Manager                  |
    | `META_PERMISSION_DENIED`              | Insufficient Meta permissions                       |
    | `META_TEMPLATE_CAROUSEL_INCONSISTENT` | Carousel cards with inconsistent structure          |
    | `META_TEMPLATE_MEDIA_REQUIRED`        | Required media on template header/carousel          |
    | `META_TEMPLATE_NOT_FOUND`             | Template not found on Meta (`metaName`/language)    |
    | `META_TEMPLATE_REQUIRED`              | Outside 24h window without an approved template     |
    | `META_TOKEN_EXPIRED`                  | Graph token expired on the official instance        |
    | `META_TOKEN_INVALID`                  | Invalid Graph token on the official instance        |
  </Accordion>

  <Accordion title="SMS (4)">
    | `code`                  | Meaning               |
    | ----------------------- | --------------------- |
    | `SMS_ALL_SKIPPED`       | sms all skipped       |
    | `SMS_DUPLICATE_RECENT`  | sms duplicate recent  |
    | `SMS_MESSAGE_TOO_SHORT` | sms message too short |
    | `UNSAFE_SMS_CONTENT`    | unsafe sms content    |
  </Accordion>

  <Accordion title="Email (17)">
    | `code`                              | Meaning                                                 |
    | ----------------------------------- | ------------------------------------------------------- |
    | `DEFAULT_DOMAIN_NOT_VERIFIED`       | default domain not verified                             |
    | `DOMAIN_NOT_ALLOWED`                | domain not allowed                                      |
    | `DOMAIN_NOT_VERIFIED`               | domain not verified                                     |
    | `EMAIL_DOMAIN_ALREADY_REGISTERED`   | Email domain already registered in workspace            |
    | `EMAIL_DOMAIN_CREATE_BUSY`          | Domain registration already in progress                 |
    | `EMAIL_DOMAIN_DNS_PENDING`          | Domain DNS still pending                                |
    | `EMAIL_DOMAIN_MISSING_PROVIDER_KEY` | email domain missing provider key                       |
    | `EMAIL_DOMAIN_NOT_FOUND`            | Email domain not found in this workspace                |
    | `EMAIL_DOMAIN_PROVIDER_ANTISPAM`    | Provider blocked domain (antispam)                      |
    | `EMAIL_DOMAIN_PROVIDER_REJECTED`    | Provider rejected domain                                |
    | `EMAIL_DOMAIN_PROVIDER_UNAVAILABLE` | Email provider unavailable                              |
    | `EMAIL_DOMAIN_VERIFIED`             | Domain verified successfully                            |
    | `EMAIL_DOMAIN_VERIFY_FAILED`        | DNS verification failed                                 |
    | `EMAIL_DOMAIN_VERIFY_UNAVAILABLE`   | email domain verify unavailable                         |
    | `EMAIL_TEMPLATE_RESULT_TOO_LONG`    | email template result too long                          |
    | `INVALID_LIST_UNSUBSCRIBE_TOPIC`    | listUnsubscribeTopicId is not a topic in this workspace |
    | `RECIPIENT_SUPPRESSED`              | recipient suppressed                                    |
  </Accordion>

  <Accordion title="Instagram (8)">
    | `code`                         | Meaning                                                  |
    | ------------------------------ | -------------------------------------------------------- |
    | `INSTAGRAM_ABUSE_PAUSE`        | Pause after please\_wait / feedback\_required / abuse    |
    | `INSTAGRAM_ACCOUNT_MISMATCH`   | Logged account ≠ locked/expected on instance             |
    | `INSTAGRAM_INSTANCE_NOT_FOUND` | Instagram instance not found                             |
    | `INSTAGRAM_RECONNECT_COOLDOWN` | Cooldown after involuntary disconnect or too many logins |
    | `INSTAGRAM_SESSION_LOST`       | Instagram session lost; instance disconnected            |
    | `INSTAGRAM_TEMPLATE_EMPTY`     | Instagram template rendered empty                        |
    | `INSTAGRAM_TERMS_REQUIRED`     | Instagram terms pending on login                         |
    | `INSTAGRAM_WARMUP_DAILY_LIMIT` | Instagram warm-up limit (15 DMs/day for first 5 days)    |
  </Accordion>

  <Accordion title="Telegram (18)">
    | `code`                               | Meaning                            |
    | ------------------------------------ | ---------------------------------- |
    | `CONTACT_TELEGRAM_PEER_EXISTS`       | contact telegram peer exists       |
    | `DUPLICATE_TELEGRAM_INSTANCE`        | duplicate telegram instance        |
    | `INVALID_TELEGRAM_INSTANCE`          | invalid telegram instance          |
    | `INVALID_TELEGRAM_LINKS`             | invalid telegram links             |
    | `INVALID_TELEGRAM_PEER`              | invalid telegram peer              |
    | `TELEGRAM_BOT_TOKEN_INVALID`         | telegram bot token invalid         |
    | `TELEGRAM_INSTANCE_NOT_FOUND`        | telegram instance not found        |
    | `TELEGRAM_INSTANCE_REQUIRED`         | telegram instance required         |
    | `TELEGRAM_QR_CANCEL_NOT_APPLICABLE`  | telegram qr cancel not applicable  |
    | `TELEGRAM_QR_LOGIN_IN_PROGRESS`      | telegram qr login in progress      |
    | `TELEGRAM_SESSION_ALREADY_SET`       | telegram session already set       |
    | `TELEGRAM_TEMPLATE_CAPTION_TOO_LONG` | telegram template caption too long |
    | `TELEGRAM_TEMPLATE_MESSAGE_TOO_LONG` | telegram template message too long |
    | `TELEGRAM_TYPE_UNSUPPORTED`          | telegram type unsupported          |
    | `TELEGRAM_USER_INVALID_STATE`        | telegram user invalid state        |
    | `TELEGRAM_USER_LOCATION_UNSUPPORTED` | telegram user location unsupported |
    | `TELEGRAM_USER_PENDING_SESSION`      | telegram user pending session      |
    | `TELEGRAM_USER_TERMS_REQUIRED`       | telegram user terms required       |
  </Accordion>

  <Accordion title="Push (6)">
    | `code`                    | Meaning                 |
    | ------------------------- | ----------------------- |
    | `DATA_TOO_LARGE`          | data too large          |
    | `ORIGIN_NOT_ALLOWED`      | origin not allowed      |
    | `PLATFORM_NOT_CONFIGURED` | platform not configured |
    | `PUSH_APP_ID_REQUIRED`    | push app id required    |
    | `PUSH_APP_NOT_ALLOWED`    | push app not allowed    |
    | `PUSH_APP_NOT_FOUND`      | push app not found      |
  </Accordion>

  <Accordion title="RCS (1)">
    | `code`              | Meaning           |
    | ------------------- | ----------------- |
    | `PAYLOAD_TOO_LARGE` | payload too large |
  </Accordion>

  <Accordion title="Templates (6)">
    | `code`                                            | Meaning                                                  |
    | ------------------------------------------------- | -------------------------------------------------------- |
    | `LOCALIZATION_AI_NOT_SUPPORTED_OFFICIAL_TEMPLATE` | AI localization not supported on official Meta templates |
    | `TEMPLATE_CHANNEL_NOT_ENABLED`                    | template channel not enabled                             |
    | `TEMPLATE_CREATE_BUSY`                            | template create busy                                     |
    | `TEMPLATE_META_STRUCTURE_REQUIRES_OFFICIAL`       | Header/footer/buttons only on Meta-linked templates      |
    | `TEMPLATE_NOT_ALLOWED_FOR_INSTANCE`               | Template incompatible with WhatsApp instance             |
    | `TEMPLATE_NOT_FOUND`                              | template not found                                       |
  </Accordion>

  <Accordion title="Campaigns (13)">
    | `code`                                | Meaning                             |
    | ------------------------------------- | ----------------------------------- |
    | `CAMPAIGN_AUDIENCE_TOO_LARGE`         | campaign audience too large         |
    | `CAMPAIGN_CHANNEL_NOT_IN_TEMPLATE`    | campaign channel not in template    |
    | `CAMPAIGN_CONTACT_NOT_FOUND`          | campaign contact not found          |
    | `CAMPAIGN_RUNNING`                    | campaign running                    |
    | `CAMPAIGN_RUNS_SCHEDULED`             | campaign runs scheduled             |
    | `CAMPAIGN_RUN_RUNNING`                | campaign run running                |
    | `CAMPAIGN_SCHEDULE_INVALID`           | campaign schedule invalid           |
    | `CAMPAIGN_SEGMENT_NOT_FOUND`          | campaign segment not found          |
    | `CAMPAIGN_SENDING_POOL_INVALID`       | campaign sending pool invalid       |
    | `CAMPAIGN_TELEGRAM_INSTANCE_REQUIRED` | campaign telegram instance required |
    | `CAMPAIGN_TEMPLATE_REQUIRED`          | campaign template required          |
    | `CAMPAIGN_WHATSAPP_INSTANCE_INVALID`  | campaign whatsapp instance invalid  |
    | `CAMPAIGN_WHATSAPP_ROUTING_CONFLICT`  | campaign whatsapp routing conflict  |
  </Accordion>

  <Accordion title="Contacts and tags (6)">
    | `code`                            | Meaning                               |
    | --------------------------------- | ------------------------------------- |
    | `CONTACT_EMAIL_EXISTS`            | Email already registered in workspace |
    | `CONTACT_NOT_FOUND`               | contact not found                     |
    | `CONTACT_PHONE_EXISTS`            | Phone already registered in workspace |
    | `CONTACT_REQUIRES_PHONE_OR_EMAIL` | Contact phone or email is required    |
    | `TAG_NAME_EXISTS`                 | tag name exists                       |
    | `TAG_NOT_FOUND`                   | tag not found                         |
  </Accordion>

  <Accordion title="Segments (4)">
    | `code`                       | Meaning                    |
    | ---------------------------- | -------------------------- |
    | `SEGMENT_PROPERTY_NOT_FOUND` | segment property not found |
    | `SEGMENT_TAG_NOT_FOUND`      | segment tag not found      |
    | `SEGMENT_TOPIC_NOT_FOUND`    | segment topic not found    |
    | `TOPIC_SLUG_EXISTS`          | topic slug exists          |
  </Accordion>

  <Accordion title="Automations (graph) (47)">
    | `code`                             | Meaning                          |
    | ---------------------------------- | -------------------------------- |
    | `BRANCH_INVALID`                   | branch invalid                   |
    | `CALL_ASSISTANT_COMPOSED_EMPTY`    | call assistant composed empty    |
    | `CALL_ASSISTANT_MANUAL_EMPTY`      | call assistant manual empty      |
    | `CONDITION_BRANCHES`               | condition branches               |
    | `CONDITION_BRANCH_DUP`             | condition branch dup             |
    | `CONDITION_BRANCH_TAG`             | condition branch tag             |
    | `CONDITION_CONVERSATION_KEY`       | condition conversation key       |
    | `CONDITION_INBOUND_SOURCE`         | condition inbound source         |
    | `CONDITION_MESSAGE_TRIGGER`        | condition message trigger        |
    | `CONDITION_OPERATOR`               | condition operator               |
    | `CONDITION_PROPERTY`               | condition property               |
    | `CONDITION_RUN_ARTIFACT_CHECK`     | condition run artifact check     |
    | `CONDITION_RUN_ARTIFACT_KIND`      | condition run artifact kind      |
    | `CONDITION_RUN_ARTIFACT_REF`       | condition run artifact ref       |
    | `CONDITION_SOURCE`                 | condition source                 |
    | `CONDITION_VALUE`                  | condition value                  |
    | `CREATE_CONTACT_RECIPIENT`         | create contact recipient         |
    | `DELAY_INCOMPLETE`                 | delay incomplete                 |
    | `DUPLICATE_STEP_KEY`               | duplicate step key               |
    | `END_FLOW_LEAF`                    | end flow leaf                    |
    | `GRAPH_CYCLE`                      | graph cycle                      |
    | `INVALID_GRAPH`                    | invalid graph                    |
    | `MCP_APPROVAL_CHECKPOINT_BRANCHES` | mcp approval checkpoint branches |
    | `ROUTER_BRANCHES`                  | router branches                  |
    | `ROUTER_BRANCH_DUP`                | router branch dup                |
    | `ROUTER_BRANCH_TAG`                | router branch tag                |
    | `ROUTER_DEFAULT`                   | router default                   |
    | `SEND_EMAIL_INCOMPLETE`            | send email incomplete            |
    | `SEND_PUSH_INCOMPLETE`             | send push incomplete             |
    | `SEND_TELEGRAM_INCOMPLETE`         | send telegram incomplete         |
    | `SEND_TEMPLATE_ID`                 | send template id                 |
    | `SEND_TEXT_INCOMPLETE`             | send text incomplete             |
    | `SEND_WHATSAPP_INCOMPLETE`         | send whatsapp incomplete         |
    | `TRIGGER_COUNT`                    | trigger count                    |
    | `TRIGGER_NOT_ROOT`                 | trigger not root                 |
    | `UNKNOWN_STEP`                     | unknown step                     |
    | `UNREACHABLE_STEP`                 | unreachable step                 |
    | `UPDATE_CONTACT_CLEAR_CUSTOM`      | update contact clear custom      |
    | `UPDATE_CONTACT_EMPTY`             | update contact empty             |
    | `UPDATE_CONTACT_FIELD`             | update contact field             |
    | `UPDATE_CONTACT_INTENT`            | update contact intent            |
    | `UPDATE_CONTACT_VALUE`             | update contact value             |
    | `WAIT_SIGNAL_BRANCHES`             | wait signal branches             |
    | `WAIT_SIGNAL_BRANCH_DUP`           | wait signal branch dup           |
    | `WAIT_SIGNAL_BRANCH_TAG`           | wait signal branch tag           |
    | `WAIT_WEBHOOK_EVENT_NAME`          | wait webhook event name          |
    | `WIDGET_NOT_FOUND`                 | widget not found                 |
  </Accordion>

  <Accordion title="Automation events (10)">
    | `code`                  | Meaning                                           |
    | ----------------------- | ------------------------------------------------- |
    | `EVENT_IN_USE`          | event in use                                      |
    | `EVENT_NOT_DEFINED`     | Event not registered in workspace                 |
    | `EVENT_NOT_REGISTERED`  | event not registered                              |
    | `INVALID_EVENT_NAME`    | invalid event name                                |
    | `INVALID_EVENT_SCHEMA`  | invalid event schema                              |
    | `INVALID_PAYLOAD`       | Event payload must be a JSON object               |
    | `MISSING_PAYLOAD_FIELD` | Required field missing in event payload           |
    | `PAYLOAD_TYPE_MISMATCH` | Invalid field type in event payload               |
    | `RECIPIENT_REQUIRED`    | Provide exactly one of contactId, email, or phone |
    | `RESERVED_EVENT`        | Reserved event name (notifique: prefix)           |
  </Accordion>

  <Accordion title="Webhooks (5)">
    | `code`                       | Meaning                                |
    | ---------------------------- | -------------------------------------- |
    | `WEBHOOK_CREATE_BUSY`        | webhook create busy                    |
    | `WEBHOOK_DELIVERY_NOT_FOUND` | Webhook delivery not found             |
    | `WEBHOOK_DISABLED`           | Webhook is disabled                    |
    | `WEBHOOK_EVENTS_REQUIRED`    | At least one webhook event is required |
    | `WEBHOOK_NOT_FOUND`          | Webhook not found                      |
  </Accordion>

  <Accordion title="Short links (11)">
    | `code`                            | Meaning                                   |
    | --------------------------------- | ----------------------------------------- |
    | `CONFLICT`                        | Conversion already recorded               |
    | `MSG_ID_REQUIRED`                 | msg\_id is required for conversion        |
    | `ORDER_ID_REQUIRED`               | order\_id is required for conversion      |
    | `SHORT_LINKS_DISABLED`            | short links disabled                      |
    | `SHORT_LINK_TARGET_BLOCKED_HOST`  | Target URL host is blocked                |
    | `SHORT_LINK_TARGET_IMAGE_CONTENT` | Target URL points to an image, not a page |
    | `SHORT_LINK_TARGET_INVALID_URL`   | Invalid target URL                        |
    | `SHORT_LINK_TARGET_NETWORK`       | Network error validating target URL       |
    | `SHORT_LINK_TARGET_NOT_OK_HTTP`   | Target URL returned invalid HTTP status   |
    | `SHORT_LINK_TARGET_REDIRECT`      | Target URL has too many redirects         |
    | `SHORT_LINK_TARGET_TIMEOUT`       | Timeout validating target URL             |
  </Accordion>

  <Accordion title="General request (10)">
    | `code`                | Meaning                               |
    | --------------------- | ------------------------------------- |
    | `BAD_GATEWAY`         | bad gateway                           |
    | `BAD_REQUEST`         | Invalid request                       |
    | `FORBIDDEN`           | Permission denied (scope or resource) |
    | `INTERNAL_ERROR`      | Internal error processing the request |
    | `INVALID_CHANNEL`     | invalid channel                       |
    | `METADATA_TOO_LARGE`  | metadata too large                    |
    | `NOT_FOUND`           | Resource not found                    |
    | `NOT_IMPLEMENTED`     | Feature not implemented yet           |
    | `SERVICE_UNAVAILABLE` | service unavailable                   |
    | `UNKNOWN_ERROR`       | unknown error                         |
  </Accordion>

  <Accordion title="Voice (8)">
    | `code`                            | Meaning                         |
    | --------------------------------- | ------------------------------- |
    | `VOICE_CALL_NOT_FOUND`            | voice call not found            |
    | `VOICE_FROM_REQUIRED`             | voice from required             |
    | `VOICE_INVALID_FROM_NUMBER`       | voice invalid from number       |
    | `VOICE_RECORDING_FETCH_FAILED`    | voice recording fetch failed    |
    | `VOICE_RECORDING_NOT_FOUND`       | voice recording not found       |
    | `VOICE_RECORDING_URL_NOT_ALLOWED` | voice recording url not allowed |
    | `VOICE_RECORDING_URL_REDIRECT`    | voice recording url redirect    |
    | `VOICE_UNKNOWN_ACTION`            | voice unknown action            |
  </Accordion>

  <Accordion title="Other (16)">
    | `code`                      | Meaning                              |
    | --------------------------- | ------------------------------------ |
    | `CONNECT_PAGE_ERROR`        | connect page error                   |
    | `CREATE_CONTACT_TASK_TITLE` | create contact task title            |
    | `FAILED`                    | failed                               |
    | `INSTANCE_CAPACITY_FULL`    | Instance capacity is full            |
    | `INSTANCE_SUSPENDED`        | Instance suspended                   |
    | `MESSAGE_EDIT_FAILED`       | Failed to edit message               |
    | `ORIGINS_NOT_CONFIGURED`    | origins not configured               |
    | `PENDING`                   | pending                              |
    | `PIPELINE_CARD_MOVE_TARGET` | pipeline card move target            |
    | `SEND_WEB_WIDGET_TRIGGER`   | send web widget trigger              |
    | `SES`                       | ses                                  |
    | `TOO_MANY_REQUESTS`         | too many requests                    |
    | `TRUST_DAILY_LIMIT`         | Workspace hit Trust Factor daily cap |
    | `UPDATE_CONTACT_TAGS_EMPTY` | update contact tags empty            |
    | `WORKSPACE_NOT_FOUND`       | workspace not found                  |
    | `WORKSPACE_OWNER_NOT_FOUND` | workspace owner not found            |
  </Accordion>
</AccordionGroup>

***

## Next steps

* [API logs](/guides/logs/index)
* [API Keys](/guides/api-key/index)
* [Sandbox mode](/guides/sandbox/index)
* [Billing and Pay-as-you-go](/guides/introducao/cobranca-e-pague-pelo-uso)
