Documentação / Completo
Limites de velocidade (por número, por conta, por chave)
POST /v1/messages
Programa com IA? Conecte-a à sua conta por MCP: ela revisa sua configuração, cria webhooks e modelos com sua confirmação e escreve o código. Veja como →
Três limites, e cada um conta separado. Por número (connection), só POST /v1/messages: o ritmo que a Meta dá a esse número — Coexistência 20 por segundo, Cloud API 80 por segundo, com uma rajada de um segundo. Um número a todo vapor não segura os outros da sua conta. Por conta (account), só POST /v1/messages, por minuto conforme o plano: teste 600, Starter 1.200, Studio 2.400, Agencia 4.800, Escala 9.600; plano sob medida sem teto; nunca menos de 600 por chave ativa. Por chave (key): todo o resto de /v1, 600 pedidos por minuto. Um envio não gasta os 600 da chave.
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 } } }O 429: o code é o de sempre, RATE_LIMITED. Soma error.limit (connection, account ou key: qual te segurou), error.connectionId (só se foi o do número) e error.retryAfterSeconds, igual ao header Retry-After. Para account e key, a cifra está em details.limitPerMinute; para connection, em details.limitPerSecond e details.burst.
Toda resposta de /v1 traz X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset (segundos até encher de novo) e X-RateLimit-Scope, do limite que mais aperta naquele momento.
Como montar sua fila: um limitador por número (até 20/s na Coexistência, 80/s na Cloud API), todos abaixo da cifra por minuto da sua conta. Diante de um 429, espere Retry-After e tente de novo com a mesma Idempotency-Key: um 429 não cria nada, a nova tentativa é segura. Com limit: "connection" pause só esse número; com account ou key, tudo.
Aceito não é entregue: depois de um 202, a fila passa cada mensagem à Meta no ritmo dela e não perde nenhuma. GET /v1/usage/by-connection conta mensagens, não pedidos: um 429 não aparece ali.
Precisa de outra cifra de conta para um caso especial? Escreva para nós: ajusta-se conta por conta.