> ## 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.

# Respostas de Erro

> Entenda os códigos HTTP e o campo code da API, e saiba o que fazer em cada situação.

<Tip>
  Erro na API é o **semáforo vermelho** do caminho: o HTTP diz a gravidade e o `code` diz o que parou. Trate pelo `code`, não pela mensagem em texto livre.
</Tip>

## O que é uma resposta de erro?

Quando algo dá errado, a API responde com um **código HTTP** e um campo **`code`** estável no JSON. Use os dois para decidir se corrige o pedido, tenta de novo ou avisa o usuário.

Pense como o painel do carro: a luz acende (HTTP) e o manual diz o problema (`code`).

## Para que serve?

Com as respostas de erro você pode:

* **Automatizar** tratamento no seu código (retry, mensagem ao usuário, alerta interno)
* **Depurar** mais rápido com [Logs da API](/guides/logs/index)
* **Evitar** depender de texto traduzido em `message`

## Formato padrão

Em **toda a API v1**, erros vêm assim:

```json theme={null}
{
  "success": false,
  "error": "Bad Request",
  "message": "Texto legível para humanos",
  "code": "BAD_REQUEST"
}
```

| Campo       | O que é                                                                       |
| ----------- | ----------------------------------------------------------------------------- |
| **error**   | Rótulo HTTP (ex.: `Bad Request`)                                              |
| **message** | Texto legível, localizado via `Accept-Language` / `x-locale` quando aplicável |
| **code**    | Enum estável, **sempre presente**. É a fonte principal para o seu código      |

Em **templates**, erros de variável podem trazer também **`missingVariables`** (chaves `{{…}}` que faltaram) e **`details`** (array `{ field, message }` por campo).

<Note>
  Desde jul/2026 **todos** os erros HTTP da API v1 incluem `code` + `message`. Integrações antigas que só liam `message` devem migrar para `code`.
</Note>

## Códigos HTTP mais comuns

<AccordionGroup>
  <Accordion title="400: algo no pedido está errado">
    Campo faltando, formato inválido, roteamento conflitante (`instanceId` + `sendingPoolId` juntos), etc. Corrija o body e tente de novo.
  </Accordion>

  <Accordion title="401: chave inválida ou ausente">
    Header errado, chave revogada ou expirada. Confira `Authorization: Bearer sk_...`. Em linha oficial WhatsApp, token Meta expirado/inválido também pode vir como **401** com `META_TOKEN_EXPIRED` / `META_TOKEN_INVALID` (chave ok; reconecte a instância).
  </Accordion>

  <Accordion title="402: plano, créditos ou limite de gasto">
    Trial acabou, saldo zerado ou teto da chave estourado. Recarregue, faça upgrade ou ajuste o limite da chave.
  </Accordion>

  <Accordion title="403: sem permissão">
    Escopo faltando, recurso fora da lista da chave ou operação bloqueada. Ajuste [escopos](/guides/api-key/index#escopos-e-permissões) ou restrições da chave.
  </Accordion>

  <Accordion title="404: não encontrado">
    ID errado, instância inativa ou recurso de outro workspace. Confira o ID na URL ou no body.
  </Accordion>

  <Accordion title="409: conflito">
    Recurso duplicado ou estado inválido (ex.: apagar instância ativa; domínio de e-mail já cadastrado, `EMAIL_DOMAIN_ALREADY_REGISTERED`). Use o existente ou mude o estado antes.
  </Accordion>

  <Accordion title="422: recusado pelo provedor">
    O pedido está bem formado, mas o provedor externo recusou a operação. Em **POST /v1/email/domains**, domínio bloqueado por antispam ou recusa do ZeptoMail/SES retorna **`EMAIL_DOMAIN_PROVIDER_ANTISPAM`** ou **`EMAIL_DOMAIN_PROVIDER_REJECTED`**. Trate pelo `code`; use `message` (traduzido) para o usuário final.
  </Accordion>

  <Accordion title="429: muitas requisições">
    Rate limit da API, limite diário do sandbox (`SANDBOX_DAILY_LIMIT`) ou limite diário do **Trust Factor** (`TRUST_DAILY_LIMIT`). Espere, reduza volume ou melhore a pontuação do workspace. Veja [Trust Factor](/guides/workspaces/trust-factor).
  </Accordion>

  <Accordion title="502 / 503: problema temporário">
    Instância desconectada ou falha temporária no provedor. Tente de novo em alguns minutos. No registro de domínio de e-mail, indisponibilidade do provedor usa **`EMAIL_DOMAIN_PROVIDER_UNAVAILABLE`** (502 ou 503). Não confunda com antispam (**422**).
  </Accordion>
</AccordionGroup>

## Situações especiais

Alguns fluxos não seguem o padrão “HTTP de erro”. Vale guardar estes casos:

### Verificar domínio de e-mail (`POST /v1/email/domains/:id/verify`)

Escopos: **`email:domains:list`** ou **`email:domains:create`**.

| Situação                         | HTTP      | `code`                              | Notas                                               |
| -------------------------------- | --------- | ----------------------------------- | --------------------------------------------------- |
| DNS ainda pendente               | **200**   | `EMAIL_DOMAIN_DNS_PENDING`          | `success: true`, `verified: false`. Não é erro HTTP |
| Domínio verificado               | **200**   | `EMAIL_DOMAIN_VERIFIED`             | `success: true`, `verified: true`                   |
| DNS falhou                       | **200**   | `EMAIL_DOMAIN_VERIFY_FAILED`        | `success: true`, `verified: false`                  |
| Domínio não encontrado           | 404       | `EMAIL_DOMAIN_NOT_FOUND`            |                                                     |
| Provedor indisponível            | 502 / 503 | `EMAIL_DOMAIN_VERIFY_UNAVAILABLE`   |                                                     |
| Configuração ausente no provedor | 503       | `EMAIL_DOMAIN_MISSING_PROVIDER_KEY` |                                                     |

### Denúncias FELCA (`POST /v1/report`)

Endpoint **público** (sem API Key). Erros seguem o mesmo envelope `success: false` com `code`. Guia completo: [API de denúncias (FELCA)](/guides/compliance/report-api).

### Download de mídia WhatsApp inbound

`GET /v1/whatsapp/messages/inbound/{id}/media/download` ou `POST .../media`. Escopo `whatsapp:read`. Tipos: image, audio, document, video, sticker (instância QR). Veja [Mensagens recebidas e respostas](/guides/webhooks/mensagens-recebidas-e-respostas).

### Download de mídia Telegram inbound

`GET /v1/telegram/messages/inbound/{id}/media/download` ou `POST .../media`. Escopo `telegram:read`. Tipos: image, audio, video, document, sticker (Bot e User/QR).

### Download de mídia Instagram inbound

`GET /v1/instagram/messages/inbound/{id}/media/download` ou `POST .../media`. Escopo `instagram:read`. Tipos: image, video, audio/voice.

### Sending Pools (WhatsApp)

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

| `code`                       | HTTP | O que fazer                                                             |
| ---------------------------- | ---- | ----------------------------------------------------------------------- |
| `SENDING_POOL_KIND_MISMATCH` | 400  | Pool é oficial ou não oficial, não misture tipos ao adicionar instância |
| `SENDING_POOL_KIND_MIXED`    | 400  | Pool já inconsistente; corrija no painel antes de enviar                |
| `SENDING_POOL_NOT_FOUND`     | 404  | `sendingPoolId` inválido ou de outro workspace                          |
| `SENDING_POOL_UNAVAILABLE`   | 503  | Pool sem instâncias ativas no momento                                   |
| `ROUTING_CONFLICT`           | 400  | Não envie `instanceId` e `sendingPoolId` no mesmo pedido                |

Campanhas com pool: `CAMPAIGN_SENDING_POOL_INVALID` (seção **Campanhas** abaixo).

### Proteção de número (WhatsApp)

Guia: [Política anti-banimento](/whatsapp-api/como-funciona/politica-anti-banimento).

| `code`                  | HTTP | O que fazer                                                                    |
| ----------------------- | ---- | ------------------------------------------------------------------------------ |
| `PHONE_NUMBER_MISMATCH` | 409  | Número escaneado ≠ o esperado ou vinculado, use o chip certo ou nova instância |
| `RECONNECT_COOLDOWN`    | 429  | Aguarde `retryAfterSec` após queda involuntária antes de novo código           |
| `WARMUP_DAILY_LIMIT`    | 429  | Limite diário nos primeiros 3 dias (20/dia), envie amanhã ou aguarde warm-up   |

### Grupos (WhatsApp, não oficial)

Guia: [Grupos](/whatsapp-api/grupos/introducao). Só instância **não oficial**.

| `code`                            | HTTP | O que fazer                                               |
| --------------------------------- | ---- | --------------------------------------------------------- |
| `SCOPE_GROUPS_REQUIRED`           | 403  | Inclua escopo **`whatsapp:groups`** na chave              |
| `WHATSAPP_GROUPS_UNOFFICIAL_ONLY` | 400  | Use instância **não oficial**, oficial não suporta grupos |

### Linha oficial Meta (WhatsApp)

Guia: [Templates oficiais Meta](/whatsapp-api/como-funciona/templates-oficiais-meta). Em `sk_live_` os gates Meta rodam; no sandbox (`sk_test_`) não.

| `code`                                | HTTP | O que fazer                                                               |
| ------------------------------------- | ---- | ------------------------------------------------------------------------- |
| `META_TEMPLATE_REQUIRED`              | 400  | Fora da janela 24h, envie template aprovado ou espere resposta do cliente |
| `META_TEMPLATE_NOT_FOUND`             | 400  | Nome/idioma não bate com a Meta, sync/vínculo; confira `metaName`         |
| `META_TEMPLATE_MEDIA_REQUIRED`        | 400  | Header ou carrossel exige mídia no template oficial                       |
| `META_TEMPLATE_CAROUSEL_INCONSISTENT` | 400  | Cards do carrossel com estrutura diferente, alinhe no editor              |
| `META_PAYMENT_METHOD_REQUIRED`        | 402  | Cadastre cartão no gerenciador do WhatsApp                                |
| `META_TOKEN_EXPIRED`                  | 401  | Reconecte a instância oficial (token Graph expirado)                      |
| `META_TOKEN_INVALID`                  | 401  | Reconecte a instância oficial (token inválido)                            |
| `META_PERMISSION_DENIED`              | 403  | Permissões Meta insuficientes na conta ou WABA                            |
| `META_MESSAGE_EDIT_UNSUPPORTED`       | 400  | Linha oficial não edita mensagem já enviada                               |
| `META_MESSAGE_DELETE_UNSUPPORTED`     | 400  | Linha oficial não apaga mensagem já enviada                               |

`TEMPLATE_NOT_ALLOWED_FOR_INSTANCE` e `TEMPLATE_META_STRUCTURE_REQUIRES_OFFICIAL` estão na seção **Templates** abaixo.

## Lista completa de enums (`code`)

Todos os **245** valores `code` **públicos** retornados pela **API v1**. Enums internos da plataforma não entram aqui. Expanda cada seção para ver a tabela. Para o request exato que gerou o erro, abra [Logs da API](/guides/logs/index).

<AccordionGroup>
  <Accordion title="Sandbox (1)">
    | `code`                | Significado                           |
    | --------------------- | ------------------------------------- |
    | `SANDBOX_DAILY_LIMIT` | Limite diário do sandbox (50/dia UTC) |
  </Accordion>

  <Accordion title="Conta e workspace (7)">
    | `code`                          | Significado                         |
    | ------------------------------- | ----------------------------------- |
    | `API_KEY_EXPIRED`               | API Key expirada                    |
    | `API_KEY_REVOKED`               | API Key revogada                    |
    | `LAST_WORKSPACE`                | Não pode apagar o único workspace   |
    | `ONBOARDING_REQUIRED`           | Onboarding incompleto               |
    | `UNAUTHORIZED`                  | API Key ausente ou inválida         |
    | `WORKSPACE_HEADER_NOT_ALLOWED`  | Header X-Workspace-Id não permitido |
    | `WORKSPACE_SLOTS_LIMIT_REACHED` | Limite de workspaces da conta       |
  </Accordion>

  <Accordion title="Plano, créditos e fila (20)">
    | `code`                                     | Significado                                      |
    | ------------------------------------------ | ------------------------------------------------ |
    | `API_KEY_SPEND_LIMIT_EXCEEDED`             | Limite de gasto da API Key estourado             |
    | `INSUFFICIENT_CREDITS`                     | Créditos insuficientes                           |
    | `INSUFFICIENT_CREDITS_OR_BALANCE`          | Sem créditos nem saldo em reais                  |
    | `PLAN_LIMIT_AUTOMATIONS`                   | Limite de automações do plano                    |
    | `PLAN_LIMIT_CREDITS`                       | Limite de créditos do plano                      |
    | `PLAN_LIMIT_CRM`                           | Limite de CRM do plano                           |
    | `PLAN_LIMIT_EMAIL_DOMAINS`                 | Limite de domínios de e-mail                     |
    | `PLAN_LIMIT_INSTANCES`                     | Limite de instâncias do plano                    |
    | `PLAN_LIMIT_PUSH_APPS`                     | Limite de apps push                              |
    | `PLAN_LIMIT_SCHEDULING`                    | Agendamento indisponível no plano                |
    | `PLAN_LIMIT_SCHEDULING_DAYS`               | Data além do limite do plano                     |
    | `PLAN_LIMIT_TEMPLATES`                     | Limite de templates do plano                     |
    | `PLAN_LIMIT_WEBHOOKS`                      | Limite de webhooks do plano                      |
    | `PREMIUM_AUTOMATIONS_ACCESS_CODE`          | Premium automations access code                  |
    | `PREMIUM_FEATURE_REQUIRES_PLAN_OR_BALANCE` | Recurso premium exige plano pago, trial ou saldo |
    | `RATE_LIMIT_EXCEEDED`                      | Limite de requisições excedido                   |
    | `RATE_LIMIT_SOFT_THRESHOLD`                | Rate limit próximo do teto                       |
    | `WORKSPACE_BACKLOG_LIMIT`                  | Fila do workspace cheia                          |
    | `WORKSPACE_BACKLOG_SOFT_LIMIT`             | Fila perto do limite                             |
    | `WORKSPACE_BLOCKED`                        | Workspace bloqueado (trial ou plano)             |
  </Accordion>

  <Accordion title="WhatsApp (25)">
    | `code`                            | Significado                                                              |
    | --------------------------------- | ------------------------------------------------------------------------ |
    | `CANNOT_CANCEL_PROCESSING`        | Mensagem já em envio                                                     |
    | `CANNOT_CANCEL_STATUS`            | Status não permite cancelamento                                          |
    | `CANNOT_SEND_TO_SELF`             | Destinatário é o próprio número                                          |
    | `EVOLUTION_GO_LICENSE_REQUIRED`   | Licença da conexão WhatsApp **não oficial** ausente/inválida no ambiente |
    | `INSTANCE_ACTIVE`                 | Instância ainda conectada                                                |
    | `INSTANCE_CHANNEL_MISMATCH`       | Canal da instância incompatível                                          |
    | `INSTANCE_NOT_FOUND`              | Instância não encontrada ou inativa                                      |
    | `INSTANCE_SMS_NOT_ENABLED`        | SMS não habilitado na instância                                          |
    | `INSTANCE_UNAVAILABLE`            | Instância WhatsApp incompatível ou inativa para download de mídia        |
    | `NO_MEDIA`                        | Mensagem inbound sem mídia para download                                 |
    | `NO_WHATSAPP_INSTANCE`            | Nenhuma instância WhatsApp ativa                                         |
    | `PHONE_NUMBER_MISMATCH`           | Número escaneado ≠ lockedPhoneNumber ou expectedPhoneNumber              |
    | `RECONNECT_COOLDOWN`              | Cooldown de 6 h após desconexão involuntária ou excesso de QR            |
    | `ROUTING_CONFLICT`                | instanceId e sendingPoolId no mesmo envio                                |
    | `SCOPE_GROUPS_REQUIRED`           | Escopo whatsapp:groups necessário                                        |
    | `SENDING_POOL_KIND_MISMATCH`      | Tentativa de misturar instâncias oficiais e não oficiais no mesmo pool   |
    | `SENDING_POOL_KIND_MIXED`         | Pool já mistura oficial e não oficial; homogeneíze antes de enviar       |
    | `SENDING_POOL_NOT_FOUND`          | Sending pool não encontrado                                              |
    | `SENDING_POOL_UNAVAILABLE`        | Pool sem instâncias ativas                                               |
    | `UNSAFE_CONTENT`                  | Conteúdo inseguro bloqueado                                              |
    | `WARMUP_DAILY_LIMIT`              | Limite warm-up WhatsApp (20 msgs/dia nos primeiros 3 dias)               |
    | `WHATSAPP_GROUPS_UNOFFICIAL_ONLY` | Grupos só na conexão não oficial                                         |
    | `WHATSAPP_PRESENCE_FAILED`        | Falha ao enviar presença                                                 |
    | `WHATSAPP_PRESENCE_GO_ONLY`       | Presença disponível só em instâncias compatíveis                         |
  </Accordion>

  <Accordion title="Meta Cloud / templates oficiais (10)">
    | `code`                                | Significado                                         |
    | ------------------------------------- | --------------------------------------------------- |
    | `META_MESSAGE_DELETE_UNSUPPORTED`     | Linha oficial não apaga mensagem já enviada         |
    | `META_MESSAGE_EDIT_UNSUPPORTED`       | Linha oficial não edita mensagem já enviada         |
    | `META_PAYMENT_METHOD_REQUIRED`        | Sem cartão ativo no WhatsApp Manager                |
    | `META_PERMISSION_DENIED`              | Permissões Meta insuficientes                       |
    | `META_TEMPLATE_CAROUSEL_INCONSISTENT` | Cards do carrossel com estrutura inconsistente      |
    | `META_TEMPLATE_MEDIA_REQUIRED`        | Mídia obrigatória em header/carrossel do template   |
    | `META_TEMPLATE_NOT_FOUND`             | Template não encontrado na Meta (`metaName`/idioma) |
    | `META_TEMPLATE_REQUIRED`              | Fora da janela 24h sem template aprovado            |
    | `META_TOKEN_EXPIRED`                  | Token Graph expirado na instância oficial           |
    | `META_TOKEN_INVALID`                  | Token Graph inválido na instância oficial           |
  </Accordion>

  <Accordion title="SMS (4)">
    | `code`                  | Significado                         |
    | ----------------------- | ----------------------------------- |
    | `SMS_ALL_SKIPPED`       | Todos destinatários SMS ignorados   |
    | `SMS_DUPLICATE_RECENT`  | SMS duplicado recente               |
    | `SMS_MESSAGE_TOO_SHORT` | SMS com menos de 9 caracteres       |
    | `UNSAFE_SMS_CONTENT`    | Conteúdo SMS bloqueado por política |
  </Accordion>

  <Accordion title="E-mail (17)">
    | `code`                              | Significado                                            |
    | ----------------------------------- | ------------------------------------------------------ |
    | `DEFAULT_DOMAIN_NOT_VERIFIED`       | Domínio padrão não verificado                          |
    | `DOMAIN_NOT_ALLOWED`                | Domínio fora da lista da chave                         |
    | `DOMAIN_NOT_VERIFIED`               | Domínio de e-mail não verificado                       |
    | `EMAIL_DOMAIN_ALREADY_REGISTERED`   | Domínio de e-mail já cadastrado no workspace           |
    | `EMAIL_DOMAIN_CREATE_BUSY`          | Cadastro do domínio já em andamento                    |
    | `EMAIL_DOMAIN_DNS_PENDING`          | DNS do domínio ainda pendente                          |
    | `EMAIL_DOMAIN_MISSING_PROVIDER_KEY` | Email domain missing provider key                      |
    | `EMAIL_DOMAIN_NOT_FOUND`            | Domínio de e-mail não encontrado neste workspace       |
    | `EMAIL_DOMAIN_PROVIDER_ANTISPAM`    | Provedor bloqueou o domínio (antispam)                 |
    | `EMAIL_DOMAIN_PROVIDER_REJECTED`    | Provedor recusou o domínio                             |
    | `EMAIL_DOMAIN_PROVIDER_UNAVAILABLE` | Provedor de e-mail indisponível                        |
    | `EMAIL_DOMAIN_VERIFIED`             | Domínio verificado com sucesso                         |
    | `EMAIL_DOMAIN_VERIFY_FAILED`        | Verificação DNS falhou                                 |
    | `EMAIL_DOMAIN_VERIFY_UNAVAILABLE`   | Email domain verify unavailable                        |
    | `EMAIL_TEMPLATE_RESULT_TOO_LONG`    | Resultado do template longo demais                     |
    | `INVALID_LIST_UNSUBSCRIBE_TOPIC`    | listUnsubscribeTopicId não é um tópico deste workspace |
    | `RECIPIENT_SUPPRESSED`              | Destinatário em supressão (bounce/opt-out)             |
  </Accordion>

  <Accordion title="Instagram (8)">
    | `code`                         | Significado                                                |
    | ------------------------------ | ---------------------------------------------------------- |
    | `INSTAGRAM_ABUSE_PAUSE`        | Pausa após please\_wait / feedback\_required / abuso       |
    | `INSTAGRAM_ACCOUNT_MISMATCH`   | Conta logada ≠ locked/expected na instância                |
    | `INSTAGRAM_INSTANCE_NOT_FOUND` | Instância Instagram não encontrada                         |
    | `INSTAGRAM_RECONNECT_COOLDOWN` | Cooldown após queda involuntária ou excesso de logins      |
    | `INSTAGRAM_SESSION_LOST`       | Sessão Instagram morta; instância desconectada             |
    | `INSTAGRAM_TEMPLATE_EMPTY`     | Template Instagram renderizou vazio                        |
    | `INSTAGRAM_TERMS_REQUIRED`     | Termos do Instagram pendentes no login                     |
    | `INSTAGRAM_WARMUP_DAILY_LIMIT` | Limite warm-up Instagram (15 DMs/dia nos primeiros 5 dias) |
  </Accordion>

  <Accordion title="Telegram (18)">
    | `code`                               | Significado                           |
    | ------------------------------------ | ------------------------------------- |
    | `CONTACT_TELEGRAM_PEER_EXISTS`       | Peer Telegram já existe no contato    |
    | `DUPLICATE_TELEGRAM_INSTANCE`        | Instância Telegram duplicada          |
    | `INVALID_TELEGRAM_INSTANCE`          | Instância Telegram inválida           |
    | `INVALID_TELEGRAM_LINKS`             | Links Telegram inválidos              |
    | `INVALID_TELEGRAM_PEER`              | Peer Telegram inválido                |
    | `TELEGRAM_BOT_TOKEN_INVALID`         | Token do bot inválido                 |
    | `TELEGRAM_INSTANCE_NOT_FOUND`        | Telegram instance not found           |
    | `TELEGRAM_INSTANCE_REQUIRED`         | Instância Telegram obrigatória        |
    | `TELEGRAM_QR_CANCEL_NOT_APPLICABLE`  | Cancelamento de QR não aplicável      |
    | `TELEGRAM_QR_LOGIN_IN_PROGRESS`      | Login por QR em andamento             |
    | `TELEGRAM_SESSION_ALREADY_SET`       | Sessão Telegram já definida           |
    | `TELEGRAM_TEMPLATE_CAPTION_TOO_LONG` | Legenda do template longa demais      |
    | `TELEGRAM_TEMPLATE_MESSAGE_TOO_LONG` | Texto do template longo demais        |
    | `TELEGRAM_TYPE_UNSUPPORTED`          | Tipo de mensagem não suportado        |
    | `TELEGRAM_USER_INVALID_STATE`        | Estado inválido da sessão Telegram    |
    | `TELEGRAM_USER_LOCATION_UNSUPPORTED` | Localização não suportada no Telegram |
    | `TELEGRAM_USER_PENDING_SESSION`      | Sessão Telegram pendente              |
    | `TELEGRAM_USER_TERMS_REQUIRED`       | Termos do Telegram pendentes          |
  </Accordion>

  <Accordion title="Push (6)">
    | `code`                    | Significado                        |
    | ------------------------- | ---------------------------------- |
    | `DATA_TOO_LARGE`          | Payload data do push grande demais |
    | `ORIGIN_NOT_ALLOWED`      | Origem não permitida               |
    | `PLATFORM_NOT_CONFIGURED` | Plataforma não configurada         |
    | `PUSH_APP_ID_REQUIRED`    | Push app id required               |
    | `PUSH_APP_NOT_ALLOWED`    | App push fora da lista da chave    |
    | `PUSH_APP_NOT_FOUND`      | Push app not found                 |
  </Accordion>

  <Accordion title="RCS (1)">
    | `code`              | Significado                      |
    | ------------------- | -------------------------------- |
    | `PAYLOAD_TOO_LARGE` | Body da requisição grande demais |
  </Accordion>

  <Accordion title="Templates (6)">
    | `code`                                            | Significado                                          |
    | ------------------------------------------------- | ---------------------------------------------------- |
    | `LOCALIZATION_AI_NOT_SUPPORTED_OFFICIAL_TEMPLATE` | IA não suportada em template Meta oficial            |
    | `TEMPLATE_CHANNEL_NOT_ENABLED`                    | Canal não habilitado no template                     |
    | `TEMPLATE_CREATE_BUSY`                            | Criação de template em andamento                     |
    | `TEMPLATE_META_STRUCTURE_REQUIRES_OFFICIAL`       | Header/footer/botões só em template vinculado à Meta |
    | `TEMPLATE_NOT_ALLOWED_FOR_INSTANCE`               | Template incompatível com a instância WhatsApp       |
    | `TEMPLATE_NOT_FOUND`                              | Template não encontrado                              |
  </Accordion>

  <Accordion title="Campanhas (13)">
    | `code`                                | Significado                                 |
    | ------------------------------------- | ------------------------------------------- |
    | `CAMPAIGN_AUDIENCE_TOO_LARGE`         | Audiência da campanha grande demais         |
    | `CAMPAIGN_CHANNEL_NOT_IN_TEMPLATE`    | Canal não habilitado no template            |
    | `CAMPAIGN_CONTACT_NOT_FOUND`          | Contato da campanha não encontrado          |
    | `CAMPAIGN_RUNNING`                    | Campanha já em execução                     |
    | `CAMPAIGN_RUNS_SCHEDULED`             | Campanha com execuções agendadas            |
    | `CAMPAIGN_RUN_RUNNING`                | Execução da campanha em andamento           |
    | `CAMPAIGN_SCHEDULE_INVALID`           | Agendamento de campanha inválido            |
    | `CAMPAIGN_SEGMENT_NOT_FOUND`          | Segmento da campanha não encontrado         |
    | `CAMPAIGN_SENDING_POOL_INVALID`       | Sending pool inválido na campanha           |
    | `CAMPAIGN_TELEGRAM_INSTANCE_REQUIRED` | Instância Telegram obrigatória na campanha  |
    | `CAMPAIGN_TEMPLATE_REQUIRED`          | Template obrigatório na campanha            |
    | `CAMPAIGN_WHATSAPP_INSTANCE_INVALID`  | Instância WhatsApp inválida na campanha     |
    | `CAMPAIGN_WHATSAPP_ROUTING_CONFLICT`  | Conflito de roteamento WhatsApp na campanha |
  </Accordion>

  <Accordion title="Contatos e tags (6)">
    | `code`                            | Significado                           |
    | --------------------------------- | ------------------------------------- |
    | `CONTACT_EMAIL_EXISTS`            | E-mail já cadastrado no workspace     |
    | `CONTACT_NOT_FOUND`               | Contato não encontrado                |
    | `CONTACT_PHONE_EXISTS`            | Telefone já cadastrado no workspace   |
    | `CONTACT_REQUIRES_PHONE_OR_EMAIL` | Informe telefone ou e-mail do contato |
    | `TAG_NAME_EXISTS`                 | Nome de tag já existe                 |
    | `TAG_NOT_FOUND`                   | Tag não encontrada                    |
  </Accordion>

  <Accordion title="Segmentos (4)">
    | `code`                       | Significado                            |
    | ---------------------------- | -------------------------------------- |
    | `SEGMENT_PROPERTY_NOT_FOUND` | Propriedade do segmento não encontrada |
    | `SEGMENT_TAG_NOT_FOUND`      | Tag do segmento não encontrada         |
    | `SEGMENT_TOPIC_NOT_FOUND`    | Tópico do segmento não encontrado      |
    | `TOPIC_SLUG_EXISTS`          | Slug de tópico já existe               |
  </Accordion>

  <Accordion title="Automações (grafo) (47)">
    | `code`                             | Significado                                       |
    | ---------------------------------- | ------------------------------------------------- |
    | `BRANCH_INVALID`                   | Ramo inválido no grafo                            |
    | `CALL_ASSISTANT_COMPOSED_EMPTY`    | Resposta composta do assistente vazia             |
    | `CALL_ASSISTANT_MANUAL_EMPTY`      | Resposta manual do assistente vazia               |
    | `CONDITION_BRANCHES`               | Ramificações de condição inválidas                |
    | `CONDITION_BRANCH_DUP`             | Ramo de condição duplicado                        |
    | `CONDITION_BRANCH_TAG`             | Tag de ramo de condição inválida                  |
    | `CONDITION_CONVERSATION_KEY`       | Chave de conversa inválida na condição            |
    | `CONDITION_INBOUND_SOURCE`         | Origem inbound inválida na condição               |
    | `CONDITION_MESSAGE_TRIGGER`        | Gatilho de mensagem inválido na condição          |
    | `CONDITION_OPERATOR`               | Operador de condição inválido                     |
    | `CONDITION_PROPERTY`               | Propriedade de condição inválida                  |
    | `CONDITION_RUN_ARTIFACT_CHECK`     | Verificação de artefato inválida                  |
    | `CONDITION_RUN_ARTIFACT_KIND`      | Tipo de artefato inválido                         |
    | `CONDITION_RUN_ARTIFACT_REF`       | Referência de artefato inválida                   |
    | `CONDITION_SOURCE`                 | Origem de condição inválida                       |
    | `CONDITION_VALUE`                  | Valor de condição inválido                        |
    | `CREATE_CONTACT_RECIPIENT`         | E-mail ou telefone obrigatório para criar contato |
    | `DELAY_INCOMPLETE`                 | Passo de espera incompleto                        |
    | `DUPLICATE_STEP_KEY`               | stepKey duplicado no grafo                        |
    | `END_FLOW_LEAF`                    | Passo de fim de fluxo deve ser folha              |
    | `GRAPH_CYCLE`                      | Ciclo no grafo de automação                       |
    | `INVALID_GRAPH`                    | Grafo de automação inválido                       |
    | `MCP_APPROVAL_CHECKPOINT_BRANCHES` | Ramificações de checkpoint MCP inválidas          |
    | `ROUTER_BRANCHES`                  | Ramificações do roteador inválidas                |
    | `ROUTER_BRANCH_DUP`                | Ramo do roteador duplicado                        |
    | `ROUTER_BRANCH_TAG`                | Tag de ramo do roteador inválida                  |
    | `ROUTER_DEFAULT`                   | Ramo padrão do roteador inválido                  |
    | `SEND_EMAIL_INCOMPLETE`            | Passo de e-mail incompleto                        |
    | `SEND_PUSH_INCOMPLETE`             | Passo de push incompleto                          |
    | `SEND_TELEGRAM_INCOMPLETE`         | Passo de Telegram incompleto                      |
    | `SEND_TEMPLATE_ID`                 | Passo sendTemplate sem template                   |
    | `SEND_TEXT_INCOMPLETE`             | Passo de texto incompleto                         |
    | `SEND_WHATSAPP_INCOMPLETE`         | Passo de WhatsApp incompleto                      |
    | `TRIGGER_COUNT`                    | Grafo deve ter exatamente um gatilho              |
    | `TRIGGER_NOT_ROOT`                 | Gatilho deve ser raiz do grafo                    |
    | `UNKNOWN_STEP`                     | Passo desconhecido no grafo                       |
    | `UNREACHABLE_STEP`                 | Passo inalcançável no grafo                       |
    | `UPDATE_CONTACT_CLEAR_CUSTOM`      | Erro ao limpar propriedade customizada            |
    | `UPDATE_CONTACT_EMPTY`             | Nada para atualizar no contato                    |
    | `UPDATE_CONTACT_FIELD`             | Campo de contato inválido                         |
    | `UPDATE_CONTACT_INTENT`            | Intenção de atualização inválida                  |
    | `UPDATE_CONTACT_VALUE`             | Valor de contato inválido                         |
    | `WAIT_SIGNAL_BRANCHES`             | Ramificações de espera inválidas                  |
    | `WAIT_SIGNAL_BRANCH_DUP`           | Ramo de espera duplicado                          |
    | `WAIT_SIGNAL_BRANCH_TAG`           | Tag de ramo de espera inválida                    |
    | `WAIT_WEBHOOK_EVENT_NAME`          | Nome de evento de espera inválido                 |
    | `WIDGET_NOT_FOUND`                 | Widget não encontrado                             |
  </Accordion>

  <Accordion title="Eventos de automação (10)">
    | `code`                  | Significado                                        |
    | ----------------------- | -------------------------------------------------- |
    | `EVENT_IN_USE`          | Evento em uso por automação                        |
    | `EVENT_NOT_DEFINED`     | Evento não cadastrado no workspace                 |
    | `EVENT_NOT_REGISTERED`  | Evento não registrado                              |
    | `INVALID_EVENT_NAME`    | Nome de evento inválido                            |
    | `INVALID_EVENT_SCHEMA`  | Schema do evento inválido                          |
    | `INVALID_PAYLOAD`       | Payload do evento deve ser um objeto JSON          |
    | `MISSING_PAYLOAD_FIELD` | Campo obrigatório faltando no payload do evento    |
    | `PAYLOAD_TYPE_MISMATCH` | Tipo de campo inválido no payload do evento        |
    | `RECIPIENT_REQUIRED`    | Informe exatamente um de contactId, email ou phone |
    | `RESERVED_EVENT`        | Nome de evento reservado (prefixo notifique:)      |
  </Accordion>

  <Accordion title="Webhooks (5)">
    | `code`                       | Significado                                   |
    | ---------------------------- | --------------------------------------------- |
    | `WEBHOOK_CREATE_BUSY`        | Criação de webhook em andamento               |
    | `WEBHOOK_DELIVERY_NOT_FOUND` | Entrega de webhook não encontrada             |
    | `WEBHOOK_DISABLED`           | Webhook desativado                            |
    | `WEBHOOK_EVENTS_REQUIRED`    | Pelo menos um evento é obrigatório no webhook |
    | `WEBHOOK_NOT_FOUND`          | Webhook não encontrado                        |
  </Accordion>

  <Accordion title="Links curtos (11)">
    | `code`                            | Significado                                   |
    | --------------------------------- | --------------------------------------------- |
    | `CONFLICT`                        | Conversão já registrada                       |
    | `MSG_ID_REQUIRED`                 | Campo msg\_id obrigatório na conversão        |
    | `ORDER_ID_REQUIRED`               | Campo order\_id obrigatório na conversão      |
    | `SHORT_LINKS_DISABLED`            | Links curtos desabilitados                    |
    | `SHORT_LINK_TARGET_BLOCKED_HOST`  | Host da URL de destino bloqueado              |
    | `SHORT_LINK_TARGET_IMAGE_CONTENT` | URL de destino aponta para imagem, não página |
    | `SHORT_LINK_TARGET_INVALID_URL`   | URL de destino inválida                       |
    | `SHORT_LINK_TARGET_NETWORK`       | Falha de rede ao validar URL de destino       |
    | `SHORT_LINK_TARGET_NOT_OK_HTTP`   | URL de destino retornou HTTP inválido         |
    | `SHORT_LINK_TARGET_REDIRECT`      | URL de destino redireciona demais             |
    | `SHORT_LINK_TARGET_TIMEOUT`       | Timeout ao validar URL de destino             |
  </Accordion>

  <Accordion title="Requisição geral (10)">
    | `code`                | Significado                            |
    | --------------------- | -------------------------------------- |
    | `BAD_GATEWAY`         | Bad gateway                            |
    | `BAD_REQUEST`         | Requisição inválida                    |
    | `FORBIDDEN`           | Sem permissão (escopo ou recurso)      |
    | `INTERNAL_ERROR`      | Erro interno ao processar a requisição |
    | `INVALID_CHANNEL`     | Canal inválido                         |
    | `METADATA_TOO_LARGE`  | Campo metadata grande demais           |
    | `NOT_FOUND`           | Recurso não encontrado                 |
    | `NOT_IMPLEMENTED`     | Recurso ainda não implementado         |
    | `SERVICE_UNAVAILABLE` | Service unavailable                    |
    | `UNKNOWN_ERROR`       | Unknown error                          |
  </Accordion>

  <Accordion title="Voz (8)">
    | `code`                            | Significado                     |
    | --------------------------------- | ------------------------------- |
    | `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="Outros (16)">
    | `code`                      | Significado                                     |
    | --------------------------- | ----------------------------------------------- |
    | `CONNECT_PAGE_ERROR`        | Connect page error                              |
    | `CREATE_CONTACT_TASK_TITLE` | Create contact task title                       |
    | `FAILED`                    | Failed                                          |
    | `INSTANCE_CAPACITY_FULL`    | Capacidade de instâncias cheia                  |
    | `INSTANCE_SUSPENDED`        | Instance suspended                              |
    | `MESSAGE_EDIT_FAILED`       | Falha ao editar mensagem                        |
    | `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 atingiu o teto diário do Trust Factor |
    | `UPDATE_CONTACT_TAGS_EMPTY` | Update contact tags empty                       |
    | `WORKSPACE_NOT_FOUND`       | Workspace not found                             |
    | `WORKSPACE_OWNER_NOT_FOUND` | Workspace owner not found                       |
  </Accordion>
</AccordionGroup>

***

## Próximos passos

* [Logs da API](/guides/logs/index)
* [Chaves de API](/guides/api-key/index)
* [Sandbox](/guides/sandbox/index)
* [Cobrança e Pague pelo uso](/guides/introducao/cobranca-e-pague-pelo-uso)
