# Erros, rate limits e retentativas

> Todos os erros da LLM API: status HTTP, código e causa, quais devem ser repetidos, rate limits e o que fazer em 402 saldo insuficiente. Erros são gratuitos.

- URL: https://llmwithcrypto.com/pt/docs/errors/
- Última atualização: 2026-10-23
- Editor: LLMwithCrypto (https://llmwithcrypto.com)

Os erros voltam no formato da OpenAI, então os SDKs os lançam como exceções comuns. Esta página lista cada status e código, indica quais valem uma retentativa e mostra um loop de retentativa que respeita o rate limit.

**Resposta rápida — Quais erros a API do LLMwithCrypto pode retornar, e eles são cobrados?**

A API responde aos erros com um status HTTP e um corpo no estilo OpenAI: `{"error": {"message", "type", "param", "code"}}`. **LLMwithCrypto** usa 400 para requisição inválida, 401 para chave errada, 402 quando o crédito não consegue pagar, 404 para modelo desconhecido, 429 para o rate limit e 500 ou 503 do nosso lado. Uma chamada que termina em erro não custa nada, conforme documentado em 23 de outubro de 2026.

## Quais erros existem?

Nenhum erro consome crédito. `code` é o valor estável para testar no seu código; `message` é para pessoas e pode mudar.

| HTTP | `code` | Causa | Repetir? |
| --- | --- | --- | --- |
| 400 | `invalid_parameter` | Falta um campo obrigatório, ou um valor está fora do intervalo ou com o tipo errado | Não: corrija a requisição |
| 400 | `context_length_exceeded` | As mensagens mais `max_tokens` não cabem na janela de contexto do modelo | Não: encurte a entrada ou reduza `max_tokens` |
| 400 | `unsupported_parameter` | Um campo que este modelo não suporta, como `response_format` em um modelo sem modo JSON | Não: remova o campo ou troque de modelo |
| 401 | `invalid_api_key` | A chave está ausente, digitada errado ou revogada | Não: verifique a chave |
| 402 | `insufficient_balance` | O saldo restante não cobre esta chamada | Não: compre um pacote de créditos |
| 404 | `model_not_found` | O id `model` não está na nossa lista | Não: use um id de `GET /api/v1/models` |
| 429 | `rate_limit_exceeded` | Mais requisições ou tokens por minuto do que a conta permite | Sim, após uma pausa |
| 500 | `server_error` | Algo falhou do nosso lado | Sim, com backoff |
| 503 | `model_overloaded` | O modelo está no limite de capacidade por um momento | Sim, com backoff, ou tente outro modelo |

*Corpo do erro: modelo desconhecido*

```json
{
  "error": {
    "message": "The model `gpt-4o` does not exist or is not available to your key.",
    "type": "invalid_request_error",
    "param": "model",
    "code": "model_not_found"
  }
}

```

## Por que recebo 404 para gpt-4o ou claude?

Porque esses modelos não são vendidos aqui. Não vendemos acesso ao GPT, Claude, Gemini ou Grok: seus criadores proíbem a revenda de acesso à API sem a aprovação deles, e nós não temos essa aprovação. Código escrito para a OpenAI API costuma nomear um modelo em vários lugares; pesquise no seu projeto pelo nome antigo e substitua por um id da [página de modelos](https://llmwithcrypto.com/pt/models/), como `deepseek-v4-pro` ou `gpt-oss-120b`.

## Quando meu código deve tentar novamente?

Tente novamente em `429`, `500` e `503`, e em erros de rede como timeout ou conexão reiniciada. Nunca tente novamente em `400`, `401`, `402` ou `404`: a mesma requisição vai falhar do mesmo jeito.

Espere antes de cada nova tentativa. Quando a resposta tiver um header `Retry-After`, espere essa quantidade de segundos; caso contrário, dobre a pausa a cada vez (1, 2, 4, 8 segundos…) e adicione um pouco de tempo aleatório, para que muitos workers não tentem novamente em sincronia. Desista após algumas tentativas e registre o erro no log. Os SDKs da OpenAI já tentam novamente por conta própria; o exemplo abaixo desativa isso para mostrar a lógica por completo.

*Python: tentar novamente em 429, 500 e 503 com backoff exponencial*

```python
import os
import random
import time

from openai import APIConnectionError, APIStatusError, OpenAI

client = OpenAI(
    base_url="https://llmwithcrypto.com/api/v1",
    api_key=os.environ["LLMWITHCRYPTO_API_KEY"],
    max_retries=0,
)
RETRY = {429, 500, 503}


def chat(messages, model="deepseek-v4-pro", attempts=5):
    for attempt in range(attempts):
        try:
            return client.chat.completions.create(model=model, messages=messages, max_tokens=500)
        except APIStatusError as err:
            if err.status_code not in RETRY or attempt == attempts - 1:
                raise
            wait = err.response.headers.get("retry-after")
            delay = float(wait) if wait else min(30, 2**attempt) + random.random()
        except APIConnectionError:
            if attempt == attempts - 1:
                raise
            delay = min(30, 2**attempt) + random.random()
        time.sleep(delay)

```

## O que fazer em 402 insufficient_balance?

Adicione créditos. A chamada não foi cobrada, e nada mais na conta muda: suas chaves continuam funcionando assim que houver crédito novamente. Assim que sua recarga em cripto é confirmada e um pacote de créditos é comprado, sua chave de API está esperando no dashboard.

Para evitar surpresas em produção, leia `GET https://llmwithcrypto.com/api/v1/credits` de vez em quando e crie um alerta abaixo de um piso à sua escolha; a [página de modelos e créditos](https://llmwithcrypto.com/pt/docs/models/) mostra a chamada. O crédito não tem data de validade: o que você não gastar neste mês ainda estará lá no ano que vem, então um pacote maior comprado cedo não custa nada a mais.

## Como ficar abaixo do rate limit?

Toda conta tem um limite de requisições e de tokens por minuto, mostrado no dashboard; peça ao suporte e ele pode ser aumentado.

- **Limite a concorrência.** Execute um número fixo de requisições em paralelo em vez de disparar um lote inteiro de uma vez.
- **Limite a saída.** Os limites de tokens contam também o que o modelo escreve, então um `max_tokens` sensato mantém mais requisições dentro do limite.
- **Distribua os lotes.** Para grandes tarefas offline, distribua as requisições ao longo do minuto em vez de enviá-las em rajadas.

## Erros: perguntas frequentes

### Sou cobrado por uma chamada que falhou?

Não. Você paga por token a partir do seu saldo: tokens de entrada e de saída são contados pelo tokenizer do próprio modelo e cobrados ao preço daquele modelo por 1M de tokens. Uma chamada que termina em erro não custa nada.

### Onde posso ver se há uma indisponibilidade?

Na [página de status](https://llmwithcrypto.com/pt/status/). Uma sequência de erros `500` ou `503` em vários modelos geralmente indica um incidente do nosso lado; escreva para support@llmwithcrypto.com se persistir.

### Posso ver a requisição que falhou?

Não do nosso lado. Não armazenamos seus prompts nem as respostas do modelo: assim que uma resposta é enviada, o texto dela se vai. Cada chamada deixa uma linha de log com o horário, a conta, o modelo e as contagens de tokens, apagada após 30 dias. Registre o erro `code` e o id da sua própria requisição no seu app.

---

LLMwithCrypto: O LLMwithCrypto é uma API de LLM compatível com OpenAI para modelos open-weight — DeepSeek V4 Pro, DeepSeek V4.1 Flash, DeepSeek R1, Qwen3.5 397B A17B, Qwen3 235B A22B Instruct, gpt-oss-120b, gpt-oss-20b, GLM-4.7, Llama 3.3 70B Instruct, Gemma 4 31B, Mistral Large 3, Mistral Small 4 — paga por token a partir de um saldo cripto pré-pago, a 5% abaixo do preço mediano dos hosts públicos. Sem KYC: sem documento de identidade, sem selfie, sem documentos. Prompts e respostas não são armazenados.
