Conector de Redes
OpenAPIAPI v0.1.0
Explorar documentación

Operar · Cuotas

Regula el tráfico con las cabeceras de cada respuesta.

El Conector aplica ventanas fijas de un minuto para proteger el servicio y los transportistas. Los valores pueden variar por cliente, credencial, ambiente y tipo de operación.

Dos tipos de contador

Solicitudes generales

Cuenta las operaciones autenticadas. Se aplica al conjunto del cliente y también a cada credencial.

Creación de envíos

Añade un límite específico a POST /v1/shipments para proteger altas y posibles cargos.

La petición se rechaza antes de llegar al caso de uso o al transportista cuando cualquiera de los contadores aplicables está agotado.

Leer las cabeceras

RateLimit-Limit
Capacidad de la ventana aplicable a esta operación.
RateLimit-Remaining
Solicitudes disponibles antes de agotar la ventana.
RateLimit-Reset
Timestamp Unix en el que comienza una ventana nueva.
Retry-After
Segundos mínimos de espera; aparece cuando la API responde 429.
Respuesta autenticada
HTTP/1.1 200 OK
RateLimit-Limit: 600
RateLimit-Remaining: 524
RateLimit-Reset: 1789059660
X-Correlation-ID: eb56f36d-75f8-4187-9041-fced87ab21ed

Los números anteriores son ilustrativos; no constituyen una cuota comercial comprometida.

Cuando recibas un 429

Detén nuevas solicitudes del mismo flujo, respetaRetry-After y añade variación aleatoria al backoff si varios workers comparten la credencial.

rate_limit_exceeded
HTTP/1.1 429 Too Many Requests
Content-Type: application/problem+json
RateLimit-Limit: 60
RateLimit-Remaining: 0
RateLimit-Reset: 1789059660
Retry-After: 17
X-Correlation-ID: eb56f36d-75f8-4187-9041-fced87ab21ed

{
  "type": "https://docs.sendingbay.com/problems/rate_limit_exceeded",
  "title": "Límite de solicitudes superado",
  "status": 429,
  "detail": "Se alcanzó la cuota de esta credencial",
  "code": "rate_limit_exceeded",
  "correlation_id": "eb56f36d-75f8-4187-9041-fced87ab21ed"
}
  1. EsperaUsa Retry-After como demora mínima.
  2. ConservaSi era un alta, no cambies Idempotency-Key ni el contenido.
  3. DistribuyeEvita que todos los procesos reintenten al mismo tiempo.
  4. EscalaSi la cuota no cubre tu volumen sostenido, solicita una revisión a SendingBay.
TypeScript · reintento básico
async function requestWithQuotaRetry(
  request: Request,
): Promise<Response> {
  const retryRequest = request.clone();
  const response = await fetch(request);

  if (response.status !== 429) return response;

  const retryAfter = Number(response.headers.get("Retry-After") ?? "1");
  await new Promise((resolve) => setTimeout(resolve, retryAfter * 1000));

  // Conserva Idempotency-Key y el mismo cuerpo si era un alta de envío.
  return fetch(retryRequest);
}
Referencia relacionada

Recupera cada error con una estrategia explícita.

Ir a errores →