Referência
Erros
Os erros vêm no formato da OpenAI, com um code estável para você usar na lógica e uma message escrita para pessoas. Uma chamada recusada ou com falha não custa nada.
Verificado em 26 de outubro de 2026
O formato
{
"error": {
"type": "rate_limit_error",
"code": "daily_cap",
"message": "This call needs up to $0.02 and the key has $0.01 left of its $2.00 daily cap, which resets at 00:00 UTC. …"
}
}Use o code para decidir, e não a message: as mensagens podem mudar de redação, os códigos ficam. O type segue o da OpenAI, então os SDKs lançam a exceção que você espera.
Todos os códigos
| Status | Código | Quando | Como resolver |
|---|---|---|---|
| 401 | missing_key | Nenhuma chave foi enviada. | Envie como Authorization: Bearer sk-nokeep-…. Crie uma no console, ou teste antes com sk-nokeep-test. |
| 401 | invalid_key | A chave está errada ou foi revogada. | Copie a chave de novo de onde você a guardou; o console mostra só os últimos quatro caracteres. Se ela se perdeu, crie uma nova. |
| 403 | account_frozen | Os recursos pagos estão pausados na conta dona da chave. | Escreva para nós pela página de contato. |
| 429 | rate_limited | A chave enviou mais de 120 requisições em um minuto (20 para a chave de teste, por endereço). | Espere os segundos de Retry-After e tente de novo. |
| 429 | daily_cap | A chamada poderia passar do limite diário da chave. | Aumente o limite no console, reduza max_tokens ou espere até 00:00 UTC (Retry-After diz quanto falta). |
| 402 | insufficient_credits | Os créditos comprados da conta não cobrem esta chamada. | Recarregue a partir de $5 no console, ou reduza max_tokens. Os créditos de um plano ficam no app. |
| 400 | invalid_json | O corpo não é um objeto JSON. | Envie Content-Type: application/json e um objeto JSON. |
| 413 | too_large | A requisição passa de 12 MB. | Envie imagens como links em vez de data URLs, ou envie menos de uma vez. |
| 404 | model_not_found | O id do modelo não é um dos nossos. | GET /v1/models lista os ids. Veja se há erro de digitação ou se falta -uncensored. |
| 400 | invalid_messages | messages está ausente ou vazio, é longo demais, tem um papel desconhecido, ou uma mensagem de ferramenta não tem tool_call_id. | Envie de 1 a 2.000 mensagens, cada uma com o papel system, developer, user, assistant ou tool. |
| 400 | unsupported_n | n é maior que 1. | Envie uma requisição para cada resposta que você quer. |
| 400 | invalid_reasoning_effort | O modelo não aceita esse reasoning_effort. | O DeepSeek aceita none, low, high ou max. O GLM aceita low ou high. |
| 400 | unsupported_tool_choice | O GLM recebeu uma função nomeada ou "required" como tool_choice. | Envie auto ou none para o GLM; ele escolhe as próprias ferramentas. O DeepSeek aceita todas as formas. |
| 400 | unsupported_input | Uma parte do conteúdo é de um tipo que o modelo não consegue ler. | Envie imagens para o DeepSeek; o GLM lê só texto. |
| 400 | too_many_images | Mais de dez imagens em uma requisição. | Envie no máximo dez. |
| 422 | hard_limit | A requisição ultrapassa um dos limites rígidos dos termos. | Nada foi cobrado. Tire a mensagem do histórico que você reenvia, ou a próxima chamada também para. |
| 400 | rejected | O modelo não conseguiu aceitar a requisição como foi enviada. | Confira os parâmetros na lista do modelo em Modelos. Nada foi cobrado. |
| 503 | busy | O modelo está ocupado. | Tente de novo após os segundos de Retry-After. Nada foi cobrado. |
| 503 | model_unavailable | O modelo está fora do ar do nosso lado. | Use o outro modelo por enquanto; a página de status mostra quando ele volta. |
| 502 | upstream_error | O modelo falhou antes de escrever uma palavra. | Tente de novo daqui a pouco. Nada foi cobrado. |
| 404 | not_found | A rota não existe. | A API atende GET /v1/models, GET /v1/models/{id}, GET /v1/status e POST /v1/chat/completions. |
| 404 | api_closed | A API está desligada. | Tente de novo mais tarde. |
| Em um stream | Código | Quando | Como resolver |
|---|---|---|---|
| — | stream_cut | O modelo parou antes de terminar, no meio do stream. | O que ele escreveu é cobrado, nada além disso. Tente de novo para receber o resto, ou continue do que chegou. |
Quais repetir
- Repita
429 rate_limited,503 busye502 upstream_error, depois dos segundos deRetry-After, quando houver. - Não repita os
400,401,402,404ou422: a mesma requisição recebe a mesma resposta. - Um
429 daily_capespera até 00:00 UTC. Aumente o limite em vez disso.