Documentación / Completo
Límites de velocidad (por número, por cuenta, por clave)
POST /v1/messages
¿Programás con IA? Conectala a tu cuenta por MCP: revisa tu configuración, crea webhooks y plantillas con tu confirmación y te escribe el código. Ver cómo →
Tres límites, y cada uno cuenta por separado. Por número (connection), sólo POST /v1/messages: el ritmo que Meta le da a ese número — Convivencia 20 por segundo, Cloud API 80 por segundo, con una ráfaga de un segundo. Un número a fondo no frena a los demás de tu cuenta. Por cuenta (account), sólo POST /v1/messages, por minuto según el plan: prueba 600, Starter 1.200, Studio 2.400, Agencia 4.800, Escala 9.600; plan a medida sin tope; nunca menos de 600 por clave activa. Por clave (key): todo lo demás de /v1, 600 pedidos por minuto. Un envío no gasta los 600 de la clave.
curl -i -X POST https://api.waiaconnect.com/v1/messages \
-H "Authorization: Bearer wc_live_YOUR_API_KEY" \
-H "Idempotency-Key: 7c0e…-same-on-every-retry" \
-H "Content-Type: application/json" \
-d '{"connectionId":"conn_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX","to":"5493511234567","type":"text","text":{"body":"Hi"}}'
# 202 → X-RateLimit-Scope: connection X-RateLimit-Limit: 20 X-RateLimit-Remaining: 19
# 429 → Retry-After: 1
# { "error": { "code": "RATE_LIMITED", "limit": "connection", "connectionId": "conn_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
# "retryAfterSeconds": 1, "details": { "limitPerSecond": 20, "burst": 20 } } }El 429: el code es el de siempre, RATE_LIMITED. Suma error.limit (connection, account o key: cuál te frenó), error.connectionId (sólo si fue el del número) y error.retryAfterSeconds, igual al header Retry-After. Para account y key, la cifra está en details.limitPerMinute; para connection, en details.limitPerSecond y details.burst.
Toda respuesta de /v1 trae X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset (segundos hasta que se llena de nuevo) y X-RateLimit-Scope, del límite que más aprieta en ese momento.
Cómo armar tu cola: un limitador por número (hasta 20/s en Convivencia, 80/s en Cloud API), todos debajo de la cifra por minuto de tu cuenta. Ante un 429, esperá Retry-After y reintentá con la misma Idempotency-Key: un 429 no crea nada, el reintento es seguro. Con limit: "connection" pausá sólo ese número; con account o key, todo.
Aceptado no es entregado: después de un 202, la cola le pasa cada mensaje a Meta a su ritmo y no pierde ninguno. GET /v1/usage/by-connection cuenta mensajes, no pedidos: un 429 no aparece ahí.
¿Necesitás otra cifra de cuenta para un caso especial? Escribinos: se ajusta cuenta por cuenta.