AIREITER

Imagem IA

FLUX.2 ProGPT-Image 2Wan 2.7 Image ProGPT 4o ImageSeedream 5.0 ProSeedream V5 liteSeedream V4.5Mais

Vídeo IA

Kling 3.0 Motion ControlSora 2 ProKling 3.0 TurboSora 2Kling 3.0Grok Imagine 1.5Veo 3.1Mais

LLM

Gemini 3.6 FlashGemini 3.1 ProKimi K3Gemini 3 ProGemini 2.5 ProClaude Opus 5Claude Fable 5Mais
Em breveSeedance 2.5
Super ResolutionLyric Video GeneratorGPT Image 2 1K GeneratorGPT Image 2 Product Mockup GeneratorUse GPT-5.6 Online
DOCS APIPREÇOS
BlogAtualizaçõesLLM API GuideClaude API GuideKimi K3 API Guide
TEMPLATES
  • AIReiter
  • Blog
  • Como corrigir o erro 429 no OpenRouter: provider ou limite de taxa?

Como corrigir o erro 429 no OpenRouter: provider ou limite de taxa?

Última Atualização: 2026-07-31 07:51:52

Receber um 429 no OpenRouter não significa, necessariamente, que sua conta atingiu algum limite da plataforma. O bloqueio também pode vir do provedor upstream escolhido para a inferência. Antes de alterar a chave, comprar créditos ou adicionar tentativas automáticas, salve uma resposta completa que falhou: status HTTP, cabeçalhos e corpo JSON revelam qual limite precisa ser tratado.

Antes de mudar qualquer coisa, analise uma resposta 429

Classifique a falha antes de comprar créditos, trocar a chave ou implementar retries. Os campos tipados e os cabeçalhos da resposta do OpenRouter são evidências mais confiáveis que a mensagem legível, pois ela pode incluir texto encaminhado pelo provedor upstream.

EvidênciaOrigem mais provávelPróxima ação
HTTP 429 com X-RateLimit-Limit, X-RateLimit-Remaining e X-RateLimit-ResetLimite da plataforma OpenRouterAguarde até o reset e reduza a taxa de requisições ou a concorrência
error.metadata.error_type é rate_limit_exceeded, com detalhes do provedor, como provider_codeProvedor upstreamAguarde, permita outro provedor ou use um fallback de modelo
Retry-After está presenteTodos os provedores tentados forneceram uma indicação de esperaAguarde esse intervalo antes da próxima tentativa
HTTP 402Saldo insuficiente ou teto de crédito por chave esgotadoAdicione crédito ou altere o teto da chave; backoff de retry não resolverá
HTTP 200, seguido de erro SSE e finish_reason: "error"Falha após o início do streamingConsidere o stream como falho e inspecione o tipo de erro incorporado

A referência de erros e depuração do OpenRouter define o envelope com error.code, error.message e o opcional error.metadata, incluindo error_type = "rate_limit_exceeded". Ela também informa que respostas bem-sucedidas normalmente não incluem X-RateLimit-*. A sobrecarga do provedor é tipada separadamente como provider_overloaded e, em geral, corresponde ao status 503.

Documentação do OpenRouter mostrando metadados de erro do provedor e campos de erro tipados

Como resolver um 429 do próprio OpenRouter

Um 429 gerado pelo OpenRouter é controlado pela cota da plataforma associada à conta e à classe do modelo. Conforme verificado na documentação oficial de limites de taxa em 31 de julho de 2026, variantes gratuitas terminadas em :free possuem limites por minuto e por dia.

Cota de modelos gratuitosLimite atual
Requisições por minuto20 RPM
Requisições diárias com menos de US$ 10 em compras de crédito acumuladas50 RPD
Requisições diárias com pelo menos US$ 10 em compras de crédito acumuladas1.000 RPD

A política de limites afirma que contas ou chaves extras não ampliam a capacidade governada globalmente. Portanto, substituir uma chave válida não reinicia um limite de taxa da plataforma.

Documentação de limites de taxa do OpenRouter com as cotas atuais dos modelos gratuitos

Use o endpoint GET /api/v1/key para verificar uso e limites de crédito:

curl https://openrouter.ai/api/v1/key \
  -H "Authorization: Bearer $OPENROUTER_API_KEY"

Em caso de 429 da plataforma, use o cabeçalho de reset da resposta de erro e aplique estas mudanças nesta ordem:

  1. Interrompa as tentativas imediatas e aguarde até X-RateLimit-Reset.
  2. Reduza as requisições simultâneas, não apenas as requisições por segundo. Um pico de workers paralelos pode ultrapassar o limite antes que qualquer worker veja o primeiro 429.
  3. Coloque o trabalho em uma fila atrás de um limitador compartilhado, evitando que todos os workers despertem e tentem novamente ao mesmo tempo.
  4. Se a carga de trabalho não couber na cota de modelos gratuitos, direcione esse tráfego para uma variante paga adequada.

Saldo negativo ou teto de crédito por chave esgotado devem gerar 402, enquanto um provedor upstream ainda pode retornar 429 para uma conta com saldo. O guia de preços do OpenRouter aborda separadamente custos e créditos.

Como resolver o 429 de “Provider Returned Error”

Um 429 retornado pelo provedor indica que o OpenRouter conseguiu chegar a um provedor upstream de inferência, mas ele não aceitou a requisição naquele momento. Procure o valor tipado de limite de taxa e os metadados do provedor: adicionar crédito ao OpenRouter não cria capacidade nesse provedor.

A referência oficial de limites informa que o roteamento pode já ter tentado provedores alternativos antes de devolver o erro. Ela também adiciona Retry-After quando todos os provedores tentados forneceram uma indicação de retry. Na prática, faça o seguinte:

  1. Respeite Retry-After em vez de regenerar imediatamente a mesma solicitação.
  2. Remova restrições excessivamente rígidas de provedores caso elas deixem apenas uma rota congestionada.
  3. Confirme que o fallback de provedor está permitido para a requisição.
  4. Configure um fallback de modelo quando concluir a tarefa for mais importante que usar exatamente aquele modelo.

Um usuário do Zed com saldo recebeu um limite upstream em moonshotai/kimi-k2:free, e regenerar a chave não ajudou. Um colaborador do Zed explicou:

“Isso não é um erro do Zed; é o OpenRouter dizendo que o provedor upstream que você está usando está limitando sua taxa de requisições.” Fonte: zed-industries/zed issue #35153

Respeite um Retry-After curto. Use um fallback de modelo gratuito apenas quando concluir a tarefa for mais importante que manter o modelo exato.

Quando o erro aparece no Janitor AI, Zed ou SillyTavern

Preserve o erro bruto, evite regenerações repetidas e altere o modelo ou a rota permitida em falhas do lado do provedor. Insira a chave novamente apenas para corrigir o armazenamento no cliente; isso não reinicia a capacidade disponível.

Como fazer retry sem entrar em um ciclo de 429

Repita somente falhas por limite de taxa, limite a quantidade de tentativas e dê preferência ao tempo de espera solicitado pelo servidor. Quando não houver indicação de retry, use backoff exponencial com teto e jitter para que clientes paralelos não se sincronizem em outro pico de requisições.

const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));

function retryDelayMs(response, attempt) {
  const retryAfter = response.headers.get("retry-after");
  if (retryAfter) {
    const seconds = Number(retryAfter);
    if (Number.isFinite(seconds)) return Math.max(0, seconds * 1000);

    const dateMs = Date.parse(retryAfter);
    if (Number.isFinite(dateMs)) return Math.max(0, dateMs - Date.now());
  }

  const capMs = 30_000;
  const exponentialMs = Math.min(capMs, 1000 * 2 ** attempt);
  return Math.random() * exponentialMs; // Full jitter
}

async function createChatCompletion(body, maxAttempts = 4) {
  for (let attempt = 0; attempt < maxAttempts; attempt += 1) {
    const response = await fetch(
      "https://openrouter.ai/api/v1/chat/completions",
      {
        method: "POST",
        headers: {
          Authorization: `Bearer ${process.env.OPENROUTER_API_KEY}`,
          "Content-Type": "application/json",
        },
        body: JSON.stringify(body),
      },
    );

    const raw = await response.text();
    let payload;
    try {
      payload = raw ? JSON.parse(raw) : null;
    } catch {
      payload = null;
    }
    if (response.ok) return payload;

    const isRateLimit =
      response.status === 429 ||
      payload?.error?.metadata?.error_type === "rate_limit_exceeded";

    if (!isRateLimit || attempt === maxAttempts - 1) {
      const error = new Error(payload?.error?.message || raw || `HTTP ${response.status}`);
      error.status = response.status;
      error.details = payload?.error;
      throw error;
    }

    await sleep(retryDelayMs(response, attempt));
  }
}

Esta função lida com respostas sem streaming. Mantenha o controle de concorrência por fila compartilhada ou token bucket fora dela, para que muitos workers em espera não reiniciem juntos.

Quando os Server-Sent Events começam com HTTP 200, o status não pode mudar para 429. A referência de erros do OpenRouter informa que uma falha posterior chega no stream com um erro e finish_reason: "error". Marque a conclusão como falha e repita somente se o tipo incorporado for rate_limit_exceeded. Não devolva o texto acumulado como sucesso, a menos que a aplicação ofereça suporte explícito a resultados parciais.

Perguntas frequentes

O que significa o erro 429 provider returned error no OpenRouter?

Um provedor upstream de inferência recusou a requisição devido ao próprio limite de taxa ou de capacidade. Confirme isso com error.metadata.error_type e os metadados do provedor.

Por que recebo 429 no OpenRouter mesmo tendo créditos?

Uma conta com saldo pode receber um 429 do lado do provedor. Já saldo insuficiente ou um teto de crédito por chave normalmente resulta em 402.

Criar uma nova chave de API do OpenRouter reinicia o limite de taxa?

Não. Chaves adicionais não aumentam limites governados globalmente; substitua uma chave apenas para corrigir autenticação ou armazenamento no cliente.

Quanto tempo devo esperar antes de tentar o OpenRouter novamente?

Use Retry-After quando ele estiver presente. Para um limite da plataforma, use X-RateLimit-Reset. Sem nenhuma dessas indicações, aplique backoff exponencial com teto, jitter e um número máximo pequeno de tentativas.

O OpenRouter pode retornar HTTP 200 e ainda falhar com 429?

Sim, quando o streaming já começou. O status HTTP permanece 200, enquanto o stream SSE informa um erro e termina com finish_reason: "error". Inspecione o tipo de erro incorporado para determinar se houve limite de taxa.

>_Diretório de modelos AIReiter

Acesso API rápido aos modelos relacionados a este guia

GPT-5.6 Sol

Chat

Um modelo de texto premium GPT-5.6 para codificação exigente, raciocínio e trabalho agêntico de longa duração.

OpenAICriar API Key >

Claude Opus 5

Chat

Um modelo premium do Claude para raciocínio complexo, programação e trabalho profissional com contexto longo.

anthropicCriar API Key >

Gemini 3.6 Flash

Chat

Um modelo Gemini rápido para raciocínio avançado, codificação e tarefas agentivas.

GoogleCriar API Key >

Claude Fable 5

Chat

Um modelo premium Claude para raciocínio profundo e trabalhos complexos de longo formato.

AnthropicCriar API Key >

Claude Opus 4.8

Chat

Um modelo Claude de alta capacidade para raciocínio exigente e trabalho profissional.

AnthropicCriar API Key >

Posts recentes

Corte de preço do GPT-5.6: quanto Luna e Terra custam agora

2026-07-31

Chave de API inválida: diagnostique erros 401 e 403 antes de corrigir

2026-07-31

DeepSeek V4 Flash vs GLM-5.2: atualização 0731 testada

2026-07-31

Inteligência de anúncios B2B só vem do HTML: como criar um parser que resiste a redesigns

2026-07-31
AIREITER

Dúvidas? Entre em contato em
[email protected]

LLM

Gemini 3.6 FlashGemini 3.1 ProKimi K3Gemini 3 ProGemini 2.5 Pro

Vídeo IA

Kling 3.0 Motion ControlSora 2 ProKling 3.0 TurboSora 2Kling 3.0

Imagem IA

FLUX.2 ProGPT-Image 2Wan 2.7 Image ProGPT 4o ImageSeedream 5.0 Pro

Blog

Ver Tudo →

Empresa

Política de PrivacidadeTermos de ServiçoPolítica de Reembolso

© 2026 AIReiter. Todos os direitos reservados.