Limites e idempotência
O que o contrato garante sobre volume, repetição segura e tamanhos.
Limites de uso
O contrato 1.0.x não define um limite de taxa por requisição nem devolve cabeçalhos de cota. Isso não significa volume ilimitado: significa que o limite que importa é o do canal. Mensagem de WhatsApp fora do padrão de uso aceitável derruba a linha, e nenhuma cota da API protege disso. Trate a API como um canal de conversa, não de disparo em massa.
O que o servidor aplica hoje:
| Limite | Valor | Resposta ao passar |
|---|---|---|
| Tentativas com credencial inválida | mais de 5 por minuto, da mesma origem | 429 por um curto período |
| Chaves de API da conta ativas | 20 por conta | 409 com code: account_api_key_limit ao criar |
| Tempo de resposta do seu webhook | 5 segundos | a entrega é dada como falha |
| Corpo da resposta do seu webhook | até 1 MB lido | o excedente é descartado |
Quando um limite contratual por requisição existir, ele entra na referência com os cabeçalhos correspondentes e no changelog, antes de valer.
Idempotência
Repetir um pedido por timeout ou falha de rede não pode duplicar o efeito. O Nexus resolve isso de duas formas.
Chave natural
POST /api/wa/instances usa o instanceId como chave natural. Repetir a criação com o mesmo nome responde 409 e nunca cria uma segunda linha. Não existe criação implícita de "nova" por repetição.
Chave de idempotência
POST /api/send aceita o cabeçalho Idempotency-Key (entre 16 e 128 caracteres) ou o campo idempotencyKey no corpo. O mesmo valor, na mesma conta e na mesma operação, reaproveita a intenção já registrada em vez de enfileirar um segundo envio.
curl -X POST https://nexus.socialfy.me/api/send \
-H "x-api-key: nx_acct_SUA_CHAVE" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: pedido-48213-confirmacao" \
-d '{"instanceId":"comercial-sp","to":"+5511999990000","type":"text","message":"Pedido confirmado."}'Regras para a chave funcionar a seu favor:
- Gere a chave a partir da intenção (o pedido, o evento, o lembrete), não do instante.
pedido-48213-confirmacaorepete bem; um timestamp não repete nunca. - Reutilize a mesma chave só ao repetir a mesma operação com o mesmo conteúdo. Conteúdo diferente pede chave diferente.
- Guarde a chave do seu lado junto do registro que originou o envio. É ela que permite a repetição segura depois de um timeout.
O que fazer em timeout
- Não dispare de novo às cegas.
- Repita a mesma requisição com a mesma
Idempotency-Key. Se a primeira entrou, a segunda reaproveita; se não entrou, a segunda vale como primeira. - Confirme pelo estado ou pelo webhook
message_sentoumessage_failed.
Tamanhos e formatos
| Campo | Regra |
|---|---|
instanceId | minúsculas, números e hífen, de 3 a 64 caracteres |
| Telefone | E.164 com + |
Idempotency-Key | 16 a 128 caracteres |
| Segredo de webhook | mínimo de 32 caracteres |
| URL de webhook | HTTPS obrigatório |
Seu próximo passo está na Central de Ajuda Nexus.