Tema
Limites de utilização
| Limite | Valor | Por |
|---|---|---|
| Pedidos por credencial | 600 por minuto | Credencial |
| Pedidos por origem | 1200 por minuto | Endereço IP |
A janela é fixa de um minuto e não há fila de espera: ultrapassado o limite, os pedidos seguintes respondem 429 até a janela virar.
O limite por IP existe para além do limite por credencial. Se tem várias credenciais a sair do mesmo servidor — por exemplo, uma por empresa de condomínios que integra — partilham esse limite.
Quando é atingido
HTTP/1.1 429 Too Many RequestsA resposta não traz cabeçalho a indicar quando repetir. Use espera exponencial:
js
async function call(url, options, attempt = 0)
{
const response = await fetch(url, options)
if (response.status !== 429 || attempt >= 5)
return response
//1s, 2s, 4s, 8s, 16s — with jitter, so parallel workers do not all come back at the same instant
const delay = 2 ** attempt * 1000 * (0.5 + Math.random())
await new Promise(resolve => setTimeout(resolve, delay))
return call(url, options, attempt + 1)
}Um 429 numa escrita repete-se com a mesma chave de idempotência. Ver Idempotência.
Não ser apanhado por eles
Peça páginas maiores. limit=500 numa listagem faz um pedido onde limit=50 faria dez. O limite conta pedidos, não registos.
Guarde o que não muda. Tabelas de referência, condomínios e frações mudam raramente. Lê-los a cada operação é desperdiçar o orçamento de pedidos no que já sabe.
Sincronize, não sonde. Percorrer as ocorrências todas de minuto a minuto para detetar alterações é exatamente o que a sincronização incremental evita.
Use include em vez de pedidos por registo. Trazer as intervenções junto com as ocorrências é um pedido; ir buscá-las uma a uma são cem.
Não paralelize sem necessidade. Vinte processos a trabalhar em conjunto esgotam 600 pedidos por minuto sem se aperceberem.
Se os limites não chegam
Se tem um caso legítimo que não cabe nestes valores — uma migração inicial, um volume fora do comum — fale connosco antes de construir em cima de repetições. Há normalmente uma forma melhor de o fazer.