Skip to content

Limites de utilização ​

LimiteValorPor
Pedidos por credencial600 por minutoCredencial
Pedidos por origem1200 por minutoEndereç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 Requests

A 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.

API de Integração GC