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

# Rate limiting

> Limites de requisição na API pública GoatPay

## Visão geral

A API aplica rate limiting global para manter estabilidade e segurança.

| Métrica       | Valor                                                |
| ------------- | ---------------------------------------------------- |
| Limite        | **100 requisições por minuto**                       |
| Janela        | 60 segundos                                          |
| Identificador | **API key** (`X-API-Key` ou `Authorization: Bearer`) |

Quando você envia uma chave válida, o contador é **por chave** — integrações diferentes na mesma conta podem usar chaves distintas com limites independentes.

Requisições **sem** chave (rotas públicas de auth, health, webhooks de entrada dos PSPs) continuam limitadas **por IP**.

<Note>
  O header `X-API-Key` é lido antes da validação da chave para o rate limit. Chaves inválidas ou revogadas ainda compartilham o bucket daquele valor de chave (hash), não o IP — evita abuso por rotação de IP com a mesma chave.
</Note>

## Resposta 429

Quando o limite é excedido:

```json theme={null}
{
  "success": false,
  "error": {
    "code": "TOO_MANY_REQUESTS",
    "message": "Rate limit excedido"
  }
}
```

## Boas práticas

<Tip>
  Implemente backoff exponencial ao receber `429`.
</Tip>

<Tip>
  Em retentativas de `POST`, envie o mesmo body (incluindo `externalReference` quando usar) para evitar duplicatas.
</Tip>

<Tip>
  Prefira webhooks em vez de polling em `GET` repetidos.
</Tip>

## Próximos passos

<CardGroup cols={2}>
  <Card title="Visão geral" icon="book" href="/api-reference/overview">
    Autenticação e envelope de resposta
  </Card>

  <Card title="Guia PIX" icon="qrcode" href="/api-reference/guides/pix">
    Primeiro fluxo de integração
  </Card>
</CardGroup>
