Límites de volumen

Cuánto podés pedir, cómo se ve un 429 y cómo esperar.

El límite es por organización, no por key: crear una segunda key no te compra un segundo presupuesto. Es a propósito — el presupuesto es de la cuenta, y partirlo por credencial haría que la carga de nuestro lado dependa de cuántas keys alguien creó.

VentanaLímite
Por minuto120 requests
Por hora3.000 requests

Se evalúan las dos, y la que se agote primero es la que te frena. Hay además un techo por IP deliberadamente holgado, alto como para que sólo lo toque una sola máquina inundándonos: un partner que integra muchas organizaciones desde un servidor no llega.

Cómo se ve un 429

HTTP/1.1 429 Too Many Requests
Retry-After: 24
RateLimit: "minute";r=0;t=24
RateLimit-Policy: "minute";q=120;w=60, "hour";q=3000;w=3600
{ "error": { "code": "API_KEY_RATE_LIMITED", "message": "Rate limit exceeded for this API key." } }

Retry-After viene en segundos y es el número real: esperar eso alcanza. Leelo en vez de adivinar un backoff — un sleep fijo es o más lento de lo necesario o insuficiente.

Las respuestas que pasan (y el 429) también mandan los headers IETF RateLimit / RateLimit-Policy: cuota restante y las ventanas de la organización (120/min y 3.000/hora). Leé RateLimit para aflojar antes de pegarle al techo; Retry-After sigue siendo el número a esperar en un 429.

async function llamar(url, init) {
  for (let intento = 0; intento < 5; intento++) {
    const res = await fetch(url, init);
    if (res.status !== 429) return res;
    const espera = Number(res.headers.get("Retry-After") ?? 5);
    await new Promise((r) => setTimeout(r, espera * 1000));
  }
  throw new Error("Sigue limitado después de 5 intentos");
}

Cómo quedarte abajo

  • Pedí páginas más grandes. limit=100 lee cuatro veces más por request que el default de 25 — ver Paginación.
  • Consultá con una frecuencia, no en un loop. Todavía no hay webhooks, así que consultar es el patrón; el error es consultar tan rápido como corre el código en vez de tan rápido como cambian los datos.
  • Manejá el 429 en vez de esquivarlo. Un reintento que lee Retry-After es más robusto que una frecuencia que calibraste una vez y no volviste a mirar.

Si tu integración realmente necesita más que esto, escribinos a support@trama.so y contanos la forma del tráfico. Estos números son un techo de arranque calibrado sobre uso real, no un límite comercial: no hay nada que comprar.

En esta página