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

# Límites de uso

> Ráfagas por credencial, ritmo sostenido por clínica y un techo horario de fichas de pacientes, con cabeceras RateLimit en cada respuesta.

Los límites protegen a cada clínica de un cliente desbocado y a los pacientes de extracciones masivas. Para un uso normal son holgados.

## Los límites

| Límite | Cuenta | Ventana | Por defecto |
| - | - | - | - |
| `burst` | Peticiones por **credencial** | 10 s | 100 |
| `standard` | Peticiones por **clínica** a operaciones estándar, todas las credenciales juntas | 60 s | 600 |
| `heavy` | Peticiones por **clínica** a operaciones pesadas (ninguna en esta versión) | 60 s | 30 |
| `patient_records` | Fichas de pacientes **devueltas** a una credencial | 1 hora | 2.000 |
| Pruebas de webhook | `POST /v1/webhooks/{id}/test` por webhook | 60 s | 5 |

* `standard` lo comparten todas las claves, apps y asistentes de la clínica: un bucle en una integración puede frenar a las demás. Reparte los procesos por lotes.
* `patient_records` cuenta lo que sale de Brelio: una página de 100 pacientes cuenta 100. Cuando se alcanza, se avisa a los propietarios de la clínica.
* Una clínica puede tener límites más altos por acuerdo.

## Cabeceras

Cada respuesta a una llamada autenticada lleva las cabeceras IETF `RateLimit-Policy` y `RateLimit`:

```text theme={null}
RateLimit-Policy: "burst";q=100;w=10, "standard";q=600;w=60
RateLimit: "standard";r=599;t=52
```

* `RateLimit-Policy` lista los límites que aplican: `q` es la cuota y `w` la ventana en segundos.
* `RateLimit` informa del más cercano: `r` peticiones restantes, `t` segundos hasta que se reinicia.

## Cuando llegas a uno

```text theme={null}
HTTP/1.1 429 Too Many Requests
RateLimit-Policy: "burst";q=100;w=10, "standard";q=600;w=60
RateLimit: "standard";r=0;t=43
Retry-After: 43
```

```json 429 RATE_LIMITED theme={null}
{
  "type": "https://api.brelio.app/problems/rate-limited",
  "title": "Too Many Requests",
  "status": 429,
  "code": "RATE_LIMITED",
  "detail": "The standard limit was reached.",
  "request_id": "a258784d-fd6b-4674-af1e-f653bf8ad727",
  "params": {},
  "hint": "Wait 43 s before retrying; spread calls or ask for a higher limit.",
  "retryAfterSeconds": 43
}
```

Espera `Retry-After` segundos (también en `retryAfterSeconds`) antes de la siguiente llamada. Por MCP, el mismo objeto llega como resultado de error de la herramienta.

```javascript Node.js theme={null}
async function call(url, init) {
  for (;;) {
    const response = await fetch(url, init)
    if (response.status !== 429) return response
    const seconds = Number(response.headers.get('retry-after') ?? '1')
    await new Promise((resolve) => setTimeout(resolve, seconds * 1000))
  }
}
```

## Si el limitador no responde

Si el limitador no responde, las peticiones pasan, pero las operaciones con datos de pacientes se rechazan con `503 PLATFORM_LIMITS_UNAVAILABLE` y `Retry-After: 5`, para que nunca se salte el techo de fichas de pacientes.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.