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 |
{
"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, 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.
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 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_tokenssensato 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. Uma sequência de erros 500 ou 503 em vários modelos geralmente indica um incidente do nosso lado; escreva para [email protected] 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.