# Límites y cuotas

La API de Meteor aplica dos tipos de límite por **API key**: un **rate limit** (cuántos requests por minuto) y una **cuota** (cuántos requests por mes). Ambos protegen la plataforma y son visibles en cada respuesta — no tienes que adivinar cuánto te queda.

## Rate limit (requests por minuto)

Cada key tiene su propio presupuesto de requests por minuto, independiente del resto del tráfico de tu workspace. El valor por defecto es **100 requests por minuto**; tu plan puede asignarle un límite mayor a la key cuando la emites.

El límite se cuenta por key (no por IP ni por workspace), así que dos keys del mismo workspace no compiten entre sí.

## Headers en cada respuesta

Toda respuesta de la API pública trae el estado de tu rate limit, para que ajustes el ritmo sin llegar al bloqueo:

| Header | Qué dice |
|---|---|
| `X-RateLimit-Limit` | El tope de requests de la ventana actual (refleja el límite de tu key). |
| `X-RateLimit-Remaining` | Cuántos requests te quedan en la ventana. |
| `X-RateLimit-Reset` | Segundos hasta que la ventana se reinicia. |

```bash
curl -i https://api.met.meteor.com.co/api/v1/runs \
  -H "Authorization: Bearer met_live_tu_key"
# ...
# HTTP/2 200
# x-ratelimit-limit: 100
# x-ratelimit-remaining: 99
# x-ratelimit-reset: 60
```

## Cuando te pasas: 429 + `Retry-After`

Si superas el rate limit, la API responde **429** con un header `Retry-After` (segundos a esperar) y el cuerpo de error estándar:

```json
{
  "error": {
    "type": "rate_limit_error",
    "code": "rate_limited",
    "message": "Too many requests."
  }
}
```

Los **SDKs oficiales reintentan solos** respetando el `Retry-After` (con backoff), así que en la mayoría de los casos no tienes que manejar el 429 a mano. Si integras la API directamente, espera los segundos que indica `Retry-After` antes de reintentar.

## Cuota mensual

Además del rate limit por minuto, tu plan define una **cuota mensual** de requests. Al superarla, la API responde **429** con `code: "quota_exceeded"`. La cuota depende de tu plan; el consumo del mes y las alertas (80% / 100%) los ves en el Workbench, en **Ajustes → Desarrolladores → Actividad → Salud** — ahí mismo tienes el volumen por día, la latencia p95 y [cada request buscable por `request_id`](errores-e-idempotencia.html#cuando-algo-falla-mira-tus-propias-requests).

> El plan Developer y los planes de pago tienen cuotas y rate limits distintos. Los valores exactos de tu plan se aplican a la key al emitirla y se reflejan en `X-RateLimit-Limit`.

## En resumen

- Mira `X-RateLimit-Remaining` para autorregularte.
- Un **429** con `rate_limited` es transitorio → reintenta tras `Retry-After` (los SDKs lo hacen solos).
- Un **429** con `quota_exceeded` es tu cuota del mes → sube de plan o espera al reinicio mensual.
