Uma referência única para todos os canais
A NexxiSend nasce como API: o console é apenas um cliente dela. Esta página descreve o contrato planejado da Universal Messaging API. Os endpoints ainda não estão públicos — nenhuma chave é emitida nesta etapa.
Quickstart
- 1Crie um workspace e gere uma API key com escopo restrito.
- 2Envie a primeira mensagem no sandbox, sem custo e sem envio real.
- 3Assine os webhooks de status e reconcilie custo por tentativa.
- 4Ative providers reais quando as credenciais estiverem no vault.
Autenticação
Bearer token por workspace, com escopos por recurso. Chaves de provider ficam no backend, nunca no cliente.
Authorization: Bearer nxs_live_•••••••curl -X POST https://api.nexxisend.com/v1/messages \
-H "Authorization: Bearer $NEXXI_API_KEY" \
-H "Idempotency-Key: ord_92f4c1" \
-H "Content-Type: application/json" \
-d '{
"to": "+5511999999999",
"content": { "text": "Seu código é 481920" },
"channels": ["whatsapp", "sms"],
"routing": { "strategy": "lowest_effective_cost" },
"fallback": { "enabled": true, "window_seconds": 60 }
}'Resposta 202
{
"id": "msg_01HTX9",
"status": "routed",
"channel": "whatsapp",
"provider": "meta_cloud_api",
"attempts": 1,
"cost_estimate": 0.0089,
"currency": "BRL",
"fallback_chain": ["whatsapp", "sms"],
"created_at": "2026-03-14T18:22:41Z"
}Endpoints planejados
Recursos previsíveis, erros tipados, paginação por cursor e idempotência por chave em toda operação de escrita.
- POST/v1/messagesEnvio omnichannel com roteamento e fallback.
- GET/v1/messages/{id}Estado atual, tentativas, provider e custo.
- GET/v1/messages/{id}/eventsTimeline completa de eventos da mensagem.
- POST/v1/contactsContatos com consentimento e opt-out.
- GET/v1/routes/simulateSimula a decisão do NexxiRoute AI sem enviar.
- GET/v1/finops/usageCusto, receita e margem por período.
- POST/v1/webhooksRegistro de endpoints e eventos assinados.
Webhooks
Eventos assinados com HMAC, reentrega com backoff e ordem por mensagem. Cada payload carrega provider, tentativa, custo e motivo de falha — base do FinOps e do audit trail.
message.queued
Aceita e enfileirada; idempotência já resolvida.
message.routed
Canal e provider escolhidos, com motivo da decisão.
attempt.failed
Tentativa falhou; fallback avaliado.
message.delivered
Entrega confirmada pelo provider.
message.read
Leitura, quando o canal reporta.
contact.opted_out
Opt-out registrado e supressão aplicada.
Idempotência
Reenvie a mesma requisição com a mesma Idempotency-Key sem risco de duplicar envio ou cobrança. O fallback nunca reentrega uma mensagem já confirmada como entregue.
Erros tipados
- 401invalid_api_keyChave ausente, revogada ou de outro workspace.
- 403permission_deniedToken sem escopo para o recurso ou tenant.
- 409idempotency_conflictMesma Idempotency-Key com payload diferente.
- 422no_route_availableNenhuma rota elegível para o destino e política.
- 429rate_limitedLimite do workspace excedido; use Retry-After.
- 503provider_unavailableProviders indisponíveis após fallback.
Boas práticas
- Valide a assinatura antes de processar o payload.
- Responda 2xx rápido e processe de forma assíncrona.
- Trate eventos como at-least-once e deduplique por event id.
- Nunca exponha API keys no frontend.
SDKs e sandbox
SDKs para Node, Python, PHP e Go estão planejados sobre a mesma Universal Messaging API, junto de um sandbox com providers simulados. Status atual: em construção — nada aqui simula uma integração já ativa.