Rate limits

Pra proteger a plataforma contra abuso e estouro de cota, cada endpoint tem um limite por minuto, contado pelo token usado.

O contador fica no banco, compartilhado por todas as instâncias da API. O limite que você lê aqui é o limite que vale de verdade, não uma estimativa por servidor.

Limites atuais

Endpoint Limite Janela Contagem por
GET /contacts (lista e lookup) 120 req 60 s chave
GET /conversations, /messages, /agents, /connections, /campaigns, /automations 120 req 60 s chave
GET /org, /templates, /fields, /tags, /pipelines, /users, /quick-replies 60 req 60 s chave
POST /templates/sync 60 req 60 s chave
/webhooks e sub-rotas 60 req 60 s chave
GET /events 120 req 60 s chave
POST /messages 120 req 60 s chave
Ações de /conversations/{id} 120 req 60 s chave
POST /contacts/batch 30 req 60 s chave
POST /contacts e sub-rotas (/tag, /assign, /note, /field, /stage) 300 req 60 s chave
GET /contacts-schema 60 req 60 s chave
POST /automation-trigger sem limite explícito não se aplica token do fluxo
Endpoints de envio (/send-template, /send-message, /send-buttons, /send-list, /send-cta-url, /send-location-request, /send-product, /send-product-list, /send-conversation-message) 60 req 60 s chave
GET /health sem limite não se aplica nenhuma

Resposta quando estoura

Quando você ultrapassa o limite, a resposta é:

  • HTTP 429 Too Many Requests
  • Header Retry-After: <segundos> (quanto tempo esperar antes da próxima tentativa).
  • Corpo JSON: { "error": "Too many requests", "retry_after": <segundos> }
curl -i -X POST https://api.wevi.chat/functions/v1/contacts \
  -H "Authorization: Bearer SEU_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{...}'

# HTTP/1.1 429 Too Many Requests
# Retry-After: 47
# {"error":"Too many requests","retry_after":47}

Estratégia recomendada

  • Backoff exponencial: na primeira falha 429, espera o Retry-After. Na segunda seguida, dobre o tempo.
  • Não paralelize além do limite. Se vai sincronizar 10 mil contatos, faça em série ou em lotes pequenos com setTimeout.
  • Use idempotency_key nos endpoints de envio (/send-template, /send-message) pra retries não duplicarem mensagens.

Limites mais altos

Se precisa de throughput maior que os 300 req/min do /contacts (por exemplo, importação inicial de uma base grande), fale com a gente em contato@wevi.chat. Podemos liberar caso a caso ou recomendar import via CSV pela UI.

Dois baldes

Cada limite é contado por chave e, em paralelo, por organização, com cinco vezes o valor. O balde mais apertado é o que vale e o que aparece nos headers X-RateLimit-*. Assim, criar dez chaves não multiplica o teto por dez.

A contagem fica no banco. Em rajadas, ela pode ficar alguns hits atrás do real por um instante, porque a autorização é guardada por 30 segundos na instância que atendeu a chamada.

Próximo

Códigos de erro