Início / Documentação / Limites de requisições

Limites de requisições

Como funciona a limitação de requisições, o que um 429 significa aqui e como criar um cliente que não o provoque.

Os limites garantem uma distribuição justa da capacidade compartilhada dos provedores upstream. Eles se aplicam por conta, não por chave, portanto adicionar chaves não aumenta seu limite máximo.

O que é limitado

DimensãoComportamento
Requisições simultâneasRequisições em andamento por conta. A causa mais comum de um 429.
Requisições por minutoTaxa sustentada de chamadas.
Tokens por minutoVazão combinada de entrada e saída.

Os planos ilimitados aplicam limites de uso justo em vez de um saldo de créditos — eles eliminam a cobrança por token, não o limite de simultaneidade.

Lidar corretamente com 429

  1. Aumente exponencialmente o intervalo entre tentativas, com variação aleatória — 1s, 2s, 4s, 8s, cada um acrescido ou reduzido de uma fração aleatória.
  2. Limite a simultaneidade no cliente com um semáforo, em vez de disparar tudo e tentar novamente as requisições rejeitadas.
  3. Coloque o trabalho em lote em uma fila em vez de paralelizá-lo ao máximo; a vazão é limitada pelos tokens por minuto, não pela quantidade de sockets que você abre.
  4. Trate 529 de forma diferente de 429 — isso diz respeito à capacidade do provedor upstream, não a você, e geralmente se resolve em segundos.
import asyncio

sem = asyncio.Semaphore(8)      class=class="s">"c"># ceiling on concurrency, tune to your plan

async def ask(client, body):
    async with sem:
        return await client.post(class="s">"/v1/messages", json=body)
Ferramentas agênticas como Claude Code disparam muitas operações em paralelo por design. Se você encontrar erros 429 durante o uso intenso de agentes, reduza o paralelismo da ferramenta antes de mudar para um plano superior.

Reduzir a pressão em vez de tentar novamente