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

# Rate limiting

> Limites de requisições aplicados na API de storefront da loja.gg.

A API de storefront (headless) aplica limites de requisição para proteger a plataforma contra abuso e picos anômalos.

| Escopo                      | Limite      |
| --------------------------- | ----------- |
| Global por chave            | 600 req/min |
| Catálogo                    | 300 req/min |
| Criar checkout (por chave)  | 60/min      |
| Criar checkout (por IP)     | 10/min      |
| Validar cupom (por IP)      | 15/min      |
| Login de comprador (por IP) | 10/min      |

<Note>
  Chaves de teste (`hk_test_*`) têm 1/5 desses limites. Headers de resposta: `X-RateLimit-Limit`, `X-RateLimit-Remaining`, `Retry-After`.
</Note>

Status HTTP ao exceder o limite: `429 Too Many Requests`, com o código `rate_limit_exceeded` (veja [Storefront headless — Erros](/api-reference/storefront-headless#6-erros)).

## Boas práticas

<CardGroup cols={2}>
  <Card title="Respeite o Retry-After" icon="clock">
    Em vez de tentar novamente imediatamente após um `429`, aguarde o tempo indicado no header.
  </Card>

  <Card title="Use idempotência no checkout" icon="shield-check">
    Retries de checkout devem reutilizar o mesmo `Idempotency-Key` — isso evita criar múltiplas sessões e não conta como carga adicional indevida.
  </Card>

  <Card title="Cacheie o catálogo" icon="database">
    Use o `ETag` retornado pela API de storefront e `If-None-Match` para reduzir chamadas desnecessárias.
  </Card>

  <Card title="Identifique-se corretamente" icon="fingerprint">
    Requisições autenticadas são identificadas por usuário/chave; requisições públicas, por IP. Evite reaproveitar a mesma chave de API para tráfego de múltiplas origens não relacionadas.
  </Card>
</CardGroup>
