Limites de uso
A API tem dois limites, contados por integração (token) e por conta. Eles existem pra plataforma continuar rápida pra todo mundo, e são folgados pra qualquer uso normal.
Os dois limites
| Limite | Valor | Janela |
|---|---|---|
| Rajada | 100 chamadas | a cada 10 segundos |
| Diário | 200.000 chamadas | por dia |
Cada token conta sozinho: duas integrações na mesma conta têm cada uma os seus 200 mil.
Leia os headers, não conte na mão
Toda resposta traz a sua posição em relação aos limites. Use isso pra decidir se pode seguir:
| Header | O que diz |
|---|---|
X-RateLimit-Max | Quantas chamadas cabem na janela de rajada |
X-RateLimit-Remaining | Quantas ainda cabem nessa janela |
X-RateLimit-Interval-Milliseconds | Tamanho da janela de rajada |
X-RateLimit-Limit-Daily | O limite do dia |
X-RateLimit-Daily-Remaining | Quantas ainda cabem hoje |
Quando bater no limite
A API responde 429. O certo é esperar e tentar de novo, com um intervalo que cresce a cada tentativa:
async function chamar(url, opcoes, tentativa = 0) {
const r = await fetch(url, opcoes);
if (r.status !== 429 || tentativa >= 5) return r;
const espera = Math.min(1000 * 2 ** tentativa, 20000); // 1s, 2s, 4s... até 20s
await new Promise((ok) => setTimeout(ok, espera));
return chamar(url, opcoes, tentativa + 1);
}Pra não bater
- Sincronização inicial de base grande: vá em lotes de 100 por chamada, com uma pausa curta entre lotes. 20 mil contatos são 200 chamadas, cabem na primeira meia hora. Veja Listar base grande.
- Webhook em vez de consulta. Se o seu sistema pergunta "mudou alguma coisa?" a cada minuto, troque por receber o evento quando ele acontece. Zero chamadas gastas esperando.
- Guarde o que não muda. Id de pipeline, de etapa e de campo personalizado não mudam. Busque uma vez e guarde.