# Limites de taxa

## Limites de taxa

A API da Pluggy implementa um limitador de taxa para maximizar sua estabilidade ao lidar com grandes picos de solicitações recebidas. O limitador de taxa mantém um contador da quantidade de solicitações que você fez a um determinado endpoint em um minuto a partir do mesmo IP, e se exceder a quantidade máxima permitida, retorna um erro 429.

### Limites de taxa por endpoint

Os seguintes limites de taxa se aplicam na API da Pluggy:

| Endpoint | Máx. solicitações por minuto por IP |
|----------|------------------------------------|
| `POST /auth` | 360 |
| `GET /transactions` ou `GET /transactions/{id}` | 360 |
| `GET /investments` ou `GET /investments/{id}` | 360 |
| `GET /investments/{id}/transactions` | 360 |
| `PATCH /items` | 20 |

> `PATCH /items` é limitado a 20 solicitações por minuto. Isso é destinado a atualizações acionadas pelo usuário. Se você precisar de atualizações de itens diariamente, deve usar nosso recurso de auto-sync.

Cada limite é aplicado independentemente dos outros, por exemplo, você pode atingir o limite em `POST /auth`, mas ainda conseguir usar `GET /transactions`. Se um limite abranger mais de um endpoint, as solicitações para qualquer um dos endpoints contam para o limite.

### Tratando erros de limitação de taxa

Quando você excede o número máximo de solicitações por minuto para um endpoint, receberá um erro `429 Too Many Requests`:

```json
{
  "message": "Too many requests. Please try again later (see Retry-After header in seconds)",
  "code": 429
}
```

Qualquer solicitação subsequente falhará com o mesmo erro até que o contador do limitador de taxa seja redefinido, após um minuto.

Informações mais precisas são fornecidas nos cabeçalhos de resposta:

```json
{
  "RateLimit-Limit": "360",
  "RateLimit-Reset": "45",
  "Retry-After": "60"
}
```

- **RateLimit-Limit:** O número máximo de solicitações por minuto para este endpoint.
- **RateLimit-Reset:** Quantos segundos restam até que o limite seja redefinido e você possa solicitar o endpoint novamente.
- **Retry-After:** Campo padrão para o comportamento de repetição do cliente HTTP. Sempre retorna 60.

Ao ler esses cabeçalhos, você pode lidar com esse cenário aguardando `RateLimit-Reset` segundos e tentando novamente a solicitação.

Alguns clientes HTTP como [got](https://github.com/sindresorhus/got) vêm com um comportamento de repetição padrão que lê o cabeçalho `Retry-After` quando recebem uma resposta 429 e aguardam esse número de segundos para tentar novamente, o que também funciona.

### Eu continuo atingindo o limite!

Se você estiver atingindo repetidamente o limite de taxa para um endpoint, certifique-se de verificar o seguinte:

- Se você estiver fazendo algum tipo de processo em lote, certifique-se de que não tenha muitas invocações paralelas do mesmo endpoint e tente adicionar esperas entre cada chamada para evitar sobrecarregar a API muito rapidamente.
- Se você atingir o limite durante a operação normal de seu aplicativo, certifique-se de que não está duplicando solicitações por engano e que está reutilizando corretamente as chaves da API entre as chamadas (para evitar atingir o limite de `/auth`).
- Se você ainda precisar de uma taxa de invocação mais alta do que a que permitimos para o funcionamento do seu aplicativo, entre em contato com nossa equipe de suporte para resolver seu caso específico.