VENUMVoltar ao site
DESENVOLVEDORES

API da VENUM

Tudo em JSON, sobre HTTPS, na base https://dash.venum.app.br/api/v1. Uma chave de API dá acesso a uma conta — a mesma que aparece no painel de quem gerou a chave. Webhooks avisam o seu sistema em vez de ele ficar perguntando.

Recursos para máquinas

Como obter uma chave

No painel (dash.venum.app.br), em Integrações, gere uma chave vnm_…. Chave somente leitura responde apenas aos GET; para enviar mensagem ou mover lead, gere uma de acesso total. A chave vale para uma conta e pode ser revogada a qualquer momento.

Autenticação

Mande a chave no cabeçalho Authorization. Toda rota exige.

curl https://dash.venum.app.br/api/v1/conta \
  -H "Authorization: Bearer vnm_SUACHAVE"

Rotas

MétodoRotaO que faz
GET/api/v1/contaConfirma a chave e mostra a conta (o "ping" da integração).
GET/api/v1/contatosLista contatos — filtros: estagio (novo, atendimento, qualificado, adiado, ganho, perdido), desde (AAAA-MM-DD), busca, limite (até 200), pagina.
GET/api/v1/pedidosVendas registradas, com resumo (quantidade, valor total, recebido, a receber) — filtros: desde, ate, status.
POST/api/v1/mensagensEnvia mensagem pelo WhatsApp da conta: texto (janela de 24h) ou template aprovado.
PATCH/api/v1/leads/{id}Move o lead no funil; ganho com valor cria o pedido e dispara a API de Conversões.

Listas são paginadas (paginacao.pagina, limite, total) e vêm ordenadas da mais recente para a mais antiga. Cada contato traz janela_aberta: se o cliente escreveu nas últimas 24h, texto livre é entregue; passou disso, o WhatsApp exige um template aprovado. Valores monetários nas listas (valor) chegam como texto decimal (ex.: "249.90"); o filtro estagio ainda não aceita sem_resposta.

Enviar uma mensagem

curl -X POST https://dash.venum.app.br/api/v1/mensagens \
  -H "Authorization: Bearer vnm_SUACHAVE" \
  -H "Content-Type: application/json" \
  -d '{ "telefone": "5547999990000", "texto": "Seu pedido saiu para entrega!" }'

Fora da janela de 24h, envie um template aprovado (se vierem texto e template juntos, vale o template):

{ "telefone": "5547999990000",
  "template": { "nome": "aviso_envio", "idioma": "pt_BR", "variaveis": ["Maria", "BR123456789"] } }

Resposta: { "enviada": true, "mensagem_id": "wamid…", "contato_id": 1234 }. Se o contato ainda não existir, ele é criado (e o evento contato.criado é emitido).

Mover um lead

Estágios: novo, atendimento, qualificado, adiado, sem_resposta, ganho, perdido.

curl -X PATCH https://dash.venum.app.br/api/v1/leads/1234 \
  -H "Authorization: Bearer vnm_SUACHAVE" \
  -H "Content-Type: application/json" \
  -d '{ "estagio": "ganho", "valor": 249.90, "produto": "Plano anual" }'

Marcar ganho com valor maior que zero cria o pedido e envia a conversão para a Meta — exatamente como se alguém tivesse clicado no painel. A resposta traz pedido_id e capi.enviada. Valor negativo é recusado (valor_invalido). Para adiado, informe retomar_em (AAAA-MM-DD) e, se quiser, retomar_motivo.

Webhooks

Cadastre um endereço em Integrações, escolha os eventos e responda com qualquer 2xx em até 10 segundos. Outra resposta, ou tempo esgotado, faz a VENUM tentar de novo em 5, 30, 120 e 360 minutos (5 tentativas no total; depois a entrega fica marcada como falha no painel). Cada entrega vem com User-Agent: Venum-Webhook/1 e os cabeçalhos X-Venum-Event, X-Venum-Delivery e X-Venum-Signature (t=<timestamp>,v1=<hmac>).

{
  "evento": "lead.mudou_estagio",
  "criado_em": "2026-08-24T18:00:00.000Z",
  "conta_id": 12,
  "dados": { "contato_id": 1234, "estagio": "ganho", "rotulo": "Ganho", "valor": 249.9, "pedido_id": 88, "capi_enviada": true }
}

Confira a assinatura. Calcule HMAC-SHA256 de t + "." + corpo cru com o segredo do endpoint e compare com v1; recuse se t tiver mais de 5 minutos.

EventoQuando
mensagem.recebidaO cliente mandou mensagem (é assim que um contato novo vindo do WhatsApp aparece)
mensagem.enviadaAlguém — ou a IA — respondeu
contato.criadoA própria API criou o contato num POST /api/v1/mensagens para um telefone novo
lead.mudou_estagioO lead andou no funil (inclui ganho e perdido)
pedido.criadoUma venda foi registrada, com valor
agendamento.criadoReservado — ainda não é emitido pela plataforma
agendamento.canceladoReservado — ainda não é emitido pela plataforma

Quando dá errado

Erro sempre vem com um código estável em erro (trate por ele) e um texto em mensagem (mostre para a pessoa).

HTTPerroSignificado
400estagio_invalido, data_invalida, telefone_invalido…Pedido malformado — a mensagem diz o que corrigir
401nao_autorizadoChave ausente, errada ou revogada
403sem_permissaoChave é somente leitura e a rota escreve
404nao_encontradoO id não existe nesta conta
409conta_desconectadaO WhatsApp não está conectado no painel
422falha_no_envioA Meta recusou — o texto explica (ex.: fora da janela de 24h)

Precisa de mais?

Um evento ou campo que não está aqui? A lista cresce conforme o uso. Fale com a gente pelo WhatsApp.