| unauthorized | 401 | Cabeçalho Authorization ausente ou mal formatado. |
| invalid_key | 401 | Chave inexistente ou revogada. |
| key_expired | 401 | A chave passou da validade. |
| ip_not_allowed | 403 | IP fora da lista permitida da chave. |
| plan_not_allowed | 403 | O plano da conta não inclui API/webhooks. |
| key_owner_inactive | 403 | Quem criou a chave deixou de ser owner/admin. |
| insufficient_scope | 403 | A chave não tem o escopo exigido. |
| operation_read_only | 403 | Operação suspensa, arquivada ou com teste expirado. |
| plan_limit | 403 | Limite do plano atingido (contatos, listas, campanhas…). |
| not_found | 404 | Recurso inexistente nesta operação. |
| validation_error | 422 | Dados inválidos; veja details.issues. |
| rule_violation | 422 | Regra do CRM impediu a ação (opt-out, WABA de outra operação…). |
| contact_opted_out | 422 | O contato fez opt-out. |
| meta_error | 502 | A Meta recusou; details.meta_code, meta_message e action explicam. |
| idempotency_mismatch | 422 | Idempotency-Key reutilizada com outro corpo. |
| idempotency_in_progress | 409 | A primeira requisição com esta chave ainda não terminou. |
| rate_limited | 429 | Limite por minuto atingido; respeite Retry-After. |
| flow_invalid | 422 | Fluxo com problemas; veja details.issues. |
| shared_flow | 409 | Fluxo de acesso compartilhado: altere pelo CRM. |
| invalid_state | 409 | Ação não permitida no estado atual. |
| disconnected | 409 | Número desconectado do CRM; reconecte. |
| conflict | 409 | Registro duplicado. |
| internal_error | 500 | Erro inesperado; informe o request_id. |