Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
A API do Claude retorna 529 com o tipo overloaded_error de erro quando a API é temporariamente sobrecarregada. De acordo com Anthropic, isso pode acontecer quando a API experimenta tráfego alto entre todos os usuários. Sua solicitação está boa. A API está ocupada, portanto, ela recusou a solicitação. Quando sua organização ultrapassa seus próprios limites de taxa, você obtém um 429. O corpo da resposta tem a mesma forma que todos os outros erros da API Claude: um type de nível superior de error, um objeto error com type e message, e um request_id que você pode fornecer ao suporte da Anthropic. Para obter mais informações, consulte os erros da API de Claude.
529, 429, ou limite de gastos: como diferenciá-los
A API Claude usa erros parecidos para problemas muito diferentes. Alguns vão embora se você esperar. Isso não vai embora até o mês que vem.
| Resposta | error.type |
retry-after |
O que significa | O que fazer |
|---|---|---|---|---|
529 |
overloaded_error |
Use isso se ele estiver lá | A API está sobrecarregada para todos os usuários | Aguardar um pouco e tentar novamente algumas vezes |
429 |
rate_limit_error |
Yes | Sua organização excedeu o limite de solicitações, tokens de entrada ou tokens de saída por minuto, ou aumentou muito rápido e atingiu um limite de aceleração | Aguarde o tempo indicado por retry-after |
429 |
rate_limit_error, com error.details.error_code definido como enforced_spend_limit_reached |
No | Sua organização atingiu o limite mensal de gastos do nível de uso | Não tente novamente. O uso fica pausado até 00:00 UTC no primeiro dia do mês seguinte ou até que você mude para um nível superior. |
400 |
invalid_request_error |
No | O uso atingiu um limite de gastos que você definiu em sua organização ou workspace | Aumentar ou remover o limite |
Um limite de gastos 429 tem o mesmo tipo de erro que um limite de taxa, de modo que o código que tenta novamente a cada rate_limit_error continua falhando. Anthropic observa que as tentativas falharão até que o acesso seja retomado, incluindo as tentativas automáticas do SDK. Para obter detalhes, consulte Atingindo o limite de gastos.
Como lidar com um plano 529
- Verifique o código de status antes de tentar novamente. Uma
529e uma429precisam de tempos de espera diferentes, e um429semretry-afternão precisa de nova tentativa. - Reduzir contribuições para um plano 529. Tente novamente com recuo exponencial e jitter aleatório e pare após algumas tentativas. Se a resposta tiver um cabeçalho
retry-after, aguarde esse tempo. - Deixe o SDK fazer as primeiras novas tentativas. Os SDKs oficiais da Anthropic repetem erros de conexão, limites de taxa e erros 5xx duas vezes por padrão, com backoff exponencial, e respeitam
retry-afterquando estiver presente. Você pode alterar a contagem commax_retries(maxRetriesem TypeScript). Quando o SDK fica sem tentativas, o código recebe o erro. - Pare de tentar novamente ao atingir um limite de gastos. Se um 429 não tiver cabeçalho
retry-after, informe o usuário e gere um alerta para si mesmo. - Mantenha o usuário informado. Enfileira o trabalho e tente novamente mais tarde ou mostre uma mensagem clara "ocupado, tente novamente em um minuto" em vez de um erro genérico.
No SDK do Python, um aumento de 429 anthropic.RateLimitError e qualquer status igual a 500 ou superior, incluindo 529, geraanthropic.InternalServerError:
import anthropic
client = anthropic.Anthropic(max_retries=4)
def summarize(text: str) -> str | None:
try:
message = client.messages.create(
model="claude-sonnet-5",
max_tokens=1024,
messages=[{"role": "user", "content": f"Summarize:\n\n{text}"}],
)
except anthropic.RateLimitError as e:
if "retry-after" not in e.response.headers:
# Spend cap: every retry fails until access resumes
alert_admin(e)
return None
raise
except anthropic.InternalServerError as e:
if e.status_code == 529:
# Overloaded after all SDK retries: queue the job for later
queue_for_later(text)
return None
raise
return next(block.text for block in message.content if block.type == "text")
Como testar se seu aplicativo manipula um 529
Você raramente vê um 529 durante o desenvolvimento. Depende do tráfego de todos os usuários da API claude, para que você não possa acioná-lo. A maneira como você testa determina se você encontra os bugs antes que seus usuários o façam.
| Approach | O que você encontra | Do que você sente falta |
|---|---|---|
| Aguardar a produção | Sobrecargas reais | Tudo, até que um usuário toque nele |
| Simular a API em seus testes ou deixar seu agente de codificação escrever a simulação | Se o branch de erro for executado | Os códigos de status reais e os corpos de erro da Anthropic, e a política de repetição do seu SDK. Seu aplicativo também precisa de uma opção somente de teste para acessar o mock. |
| Chame a API real até que ela falhe | Comportamento real | Você não pode acionar um erro 529 sob demanda e não pode aplicar com segurança um limite de gastos |
| Interceptar o tráfego real do aplicativo e retornar 529s e 429s sob demanda | URLs reais, seu SDK real e política de repetição e o formato de erro do próprio Anthropic | Nada muda no seu aplicativo, portanto, ele não testa seu código isoladamente. Guarde seus testes unitários para isso. |
Experimente em seu aplicativo
Dev Proxy intercepta as solicitações do seu aplicativo para https://api.anthropic.com e retorna erros no formato de erro da Anthropic, enquanto seu aplicativo continua chamando a URL real. Baixe uma predefinição e inicie o Dev Proxy com ele:
devproxy config get anthropic-throttling
devproxy --config-file "~dataFolder/configs/anthropic-throttling/.devproxy/devproxyrc.json"
| Preset | O que ele retorna |
|---|---|
anthropic-throttling |
A cada 4.429 respostas, 1 429 rate_limit_error (solicitações, tokens de entrada, tokens de saída e limite de aceleração) ou um 529 overloaded_error. Nos 429, o Proxy de Desenvolvimento define retry-after e informa quando seu aplicativo chama a API novamente muito cedo. |
anthropic-random-errors |
Aleatoriamente, um dos erros da lista de erros da API claude, incluindo 400, 401, 402, 403, 404, 409, 413, 429, 500, 504 e 529, para 50% de solicitações |
Nenhuma predefinição inclui um limite de gastos 429. Para testar esse caminho, adicione uma resposta sem cabeçalho retry-after ao arquivo da predefinição anthropic-errors.json:
{
"statusCode": 429,
"headers": [
{ "name": "content-type", "value": "application/json" }
],
"body": {
"type": "error",
"error": {
"type": "rate_limit_error",
"message": "You have reached your API usage limits.",
"details": { "error_code": "enforced_spend_limit_reached" }
}
}
}
Para fazer com que todas as solicitações falhem, para que você veja o que acontece quando o SDK fica sem tentativas de repetição, inicie o Dev Proxy com --failure-rate 100. Para obter mais informações, consulte Taxa de falha da solicitação de alteração. Para instalar o Dev Proxy, consulte Configurar o Dev Proxy.