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

# Rate limits

> Limites de frequência da API pública.

Cada API key tem **dois buckets independentes de 60 requisições por minuto**,
contra uma janela deslizante:

* **Geral** — leituras, tags, mailbox, notes, files.
* **Mensagens** — envios sob `conversation.messages.*` (text, quick-reply, template).

Saturar um não afeta o outro: você pode esgotar o bucket de mensagens e
continuar lendo conversas (e vice-versa).

## Quando é excedido

Ao passar o limite a API responde `429` com código `RATE_LIMIT_EXCEEDED`:

```json theme={null}
{ "code": "RATE_LIMIT_EXCEEDED", "message": "..." }
```

## Headers da resposta

Toda resposta `429` inclui estes headers:

<ResponseField name="Retry-After" type="integer">
  Segundos a esperar antes de repetir.
</ResponseField>

<ResponseField name="X-RateLimit-Limit" type="integer">
  O limite do bucket que aplicou ao request (60 em qualquer um dos dois).
</ResponseField>

<ResponseField name="X-RateLimit-Remaining" type="integer">
  Requisições disponíveis na janela atual do bucket que aplicou.
</ResponseField>

<ResponseField name="X-RateLimit-Reset" type="integer">
  Momento em que a janela é reiniciada.
</ResponseField>

## Como tratar um 429

<Steps>
  <Step title="Detecte o status">
    Trate qualquer resposta `429` como rate limit, sem parsear o body.
  </Step>

  <Step title="Leia o Retry-After">
    Espere a quantidade de segundos indicada pelo header `Retry-After`.
  </Step>

  <Step title="Repita com backoff">
    Reenvie a requisição. Para cargas grandes (campanhas), espace as requisições
    em vez de enviá-las em rajada.
  </Step>
</Steps>
