O orçamento
A janela é fixa. Ela começa com a primeira requisição que a chave faz depois do fim da janela anterior e é reiniciada 60 segundos depois. Toda requisição que passa pela autenticação conta, qualquer que seja o resultado: um
200, um 400, um 404 ou um 429 usam uma unidade cada. As requisições continuam contando enquanto você está acima do limite, mas não aumentam a janela.
Requisições recusadas com 401 api_keys.invalid ou 403 api_keys.scope_missing são descartadas antes da verificação do orçamento: não contam e não trazem cabeçalhos de limite.
Estes são os valores atuais. Leia o orçamento nos cabeçalhos da resposta em vez de fixá-lo no código, para que sua integração acompanhe qualquer mudança.
Cabeçalhos em toda resposta
Toda resposta a uma requisição autenticada informa o estado do orçamento em duas famílias de cabeçalhos: os amplamente usadosX-RateLimit-* e os cabeçalhos RateLimit do rascunho da IETF.
Quando você passa do limite: 429
A requisição que ultrapassa o orçamento é recusada com 429 Too Many Requests, um cabeçalho Retry-After com os segundos de espera, os mesmos cabeçalhos de limite e um documento de problema com o código common.too_many_requests.
Accept-Language: pt
Retry-After.
Como esperar
- Espere o
Retry-Afterem todo429. Tentar antes só soma requisições recusadas à mesma janela. - Diminua o ritmo antes de bater no limite. Quando
X-RateLimit-Remainingestiver perto de0, espereX-RateLimit-Resetsegundos antes da próxima rajada. - Use páginas grandes. Percorra as listas paginadas com
limit=200(veja Paginação). - Guarde em cache o que muda pouco. Unidades, depósitos e categorias não precisam ser lidos a cada execução.
- Consulte as exportações com calma. Uma consulta a cada poucos segundos basta enquanto uma exportação está sendo gerada (veja Exportações do resumo gerencial).
- Não rode processos sobrepostos com a mesma chave. Agende um depois do outro.
- Use uma chave por integração. Cada chave tem seu próprio orçamento, então um processo pesado não deixa outro sem requisições.