> ## Documentation Index
> Fetch the complete documentation index at: https://dev.igps.com.br/llms.txt
> Use this file to discover all available pages before exploring further.

# Understanding iGps API Rate Limits and Retry Logic

> Learn how iGps enforces rate limits on API requests and how to handle 429 errors with retry logic to keep your integration running smoothly.

A iGps aplica limites de requisição para garantir uso justo e estabilidade da API. Quando você excede a taxa de requisições permitida, a API retorna uma resposta `429 Too Many Requests`. Este guia explica como detectar erros de limite de requisição e implementar a lógica de retentativa.

## Resposta de Limite de Requisição

Quando ocorre um limite de requisição, você recebe um código de status HTTP `429 Too Many Requests`. Siga estas etapas quando isso acontecer:

* **Pare de enviar requisições imediatamente**: requisições adicionais durante o bloqueio continuarão a falhar.
* **Aguarde antes de tentar novamente**: recomenda-se backoff exponencial para evitar sobrecarregar a API assim que a janela for reiniciada.
* **Reenvie a requisição original**: assim que passar tempo suficiente, tente a mesma requisição novamente sem modificação.

## Backoff Exponencial

O backoff exponencial é uma estratégia padrão de retentativa que dobra o tempo de espera após cada tentativa falha, reduzindo a pressão sobre a API e dando à sua integração a melhor chance de eventualmente ter sucesso.

```python theme={null}
import time
import requests

def post_with_backoff(url, headers, body, max_retries=5):
    delay = 1
    for attempt in range(max_retries):
        response = requests.post(url, headers=headers, json=body)
        if response.status_code == 429:
            print(f"Limite de requisicao atingido. Tentando novamente em {delay}s...")
            time.sleep(delay)
            delay *= 2  # Backoff exponencial
            continue
        return response
    raise RuntimeError("Numero maximo de tentativas excedido")

positions = post_with_backoff(
    "https://api.igps.com.br/api/v1/veiculos/posicoes",
    headers={"Authorization": f"Bearer {token}"},
    body={"chassis": chassis_list}
)
```

## Reduzindo o Volume de Requisições

Reduzir proativamente o número de requisições que você faz é a melhor forma de se manter dentro dos limites:

* **Faça cache dos resultados** para o intervalo de polling relevante para o seu caso de uso (por exemplo, 30 segundos para rastreamento quase em tempo real). Evite consultar novamente dados que ainda não tiveram tempo de mudar.
* **Use consultas em lote** (até 50 por requisição) em vez de enviar uma requisição por veículo.
* **Evite loops de polling apertados**: introduza um `sleep` entre requisições sucessivas para regular sua integração.

<Tip>
  Agrupar até 50 veículos por requisição é a maneira mais eficaz de reduzir o volume total de chamadas à API.
</Tip>
