> ## 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

> Límites de frecuencia de la API pública.

Cada API key tiene **dos buckets independientes de 60 requests por minuto**,
contra una ventana deslizante:

* **General** — lecturas, tags, mailbox, notes, files.
* **Mensajes** — envíos bajo `conversation.messages.*` (text, quick-reply, template).

Saturar uno no afecta al otro: puedes agotar el bucket de mensajes y seguir
leyendo conversaciones (y al revés).

## Cuando se excede

Al pasar el límite la API responde `429` con código `RATE_LIMIT_EXCEEDED`:

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

## Headers de la respuesta

Toda respuesta `429` incluye estos headers:

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

<ResponseField name="X-RateLimit-Limit" type="integer">
  El límite del bucket que aplicó al request (60 en cualquiera de los dos).
</ResponseField>

<ResponseField name="X-RateLimit-Remaining" type="integer">
  Requests disponibles en la ventana actual del bucket que aplicó.
</ResponseField>

<ResponseField name="X-RateLimit-Reset" type="integer">
  Momento en que la ventana se reinicia.
</ResponseField>

## Cómo manejar un 429

<Steps>
  <Step title="Detecta el status">
    Trata cualquier respuesta `429` como rate limit, sin parsear el body.
  </Step>

  <Step title="Lee el Retry-After">
    Espera la cantidad de segundos que indica el header `Retry-After`.
  </Step>

  <Step title="Reintenta con backoff">
    Reenvía el request. Para cargas grandes (campañas), espacia los requests en
    vez de mandarlos en ráfaga.
  </Step>
</Steps>
