Skip to main content
Casos de uso completos que você pode rodar de verdade com uma API Key. Todas as chamadas usam o header Authorization: Bearer — veja Autenticação e o Guia de API Key para obter e configurar a chave. Base: https://api.nuvia.ai, prefixo /v1. Cada caso indica os escopos de API Key necessários — conceda apenas esses na criação da chave.

Caso 1 — Enviar sua primeira mensagem

Escopos: inboxes:read, conversations:read, messages:read, messages:create.
1

Descubra seus canais (inboxes)

Liste as caixas de entrada conectadas à sua empresa.
2

Obtenha uma conversa

O envio de mensagem é feito dentro de uma conversa. Liste conversas para pegar um conversationId (ou crie uma com POST /v1/conversations).
cURL
3

Envie uma mensagem de texto

POST /v1/messages/send com o conversationId e o objeto message.
Use contentType: "TEXT" para mensagens de texto.
4

Leia o histórico da conversa

GET /v1/messages/conversation/:id retorna as mensagens; anexos ficam em GET /v1/messages/conversation/:id/attachments.
cURL

Caso 2 — Receber eventos via webhooks

Registre uma URL sua para a Nuvia notificar em tempo real (mensagens, conversas, contatos). Este caso mostra o fluxo ponta a ponta; o formato do payload, a lista completa de eventos e as garantias de entrega estão no guia de Webhooks. Escopos: para registrar e consultar, webhooks:create e webhooks:read; para gerenciar, webhooks:update e webhooks:delete (+ messages:create se você responder automaticamente).
1

Registre um webhook

POST /v1/webhooks. São 10 eventos válidos: MESSAGE_SENT, MESSAGE_RECEIVED, MESSAGE_DELIVERED, MESSAGE_READ, CONVERSATION_CREATED, CONVERSATION_UPDATED, CONTACT_CREATED, CONTACT_UPDATED, FOLLOWUP_SENT e FIELD_UPDATED — o que cada um entrega está na tabela de eventos.Sua empresa tem um webhook: se já houver um configurado, esta chamada devolve 409. Atualize o existente em vez de criar outro.
Campos opcionais: custom_headers (para você validar a origem) e status (ACTIVE/INACTIVE).
2

Receba os callbacks

Quando um evento ocorre, a Nuvia faz um POST para a sua url, com o header X-Webhook-Event e um corpo de três campos:
data traz o recurso do evento — a mensagem, a conversa ou o contato, no mesmo formato dos GET correspondentes. FIELD_UPDATED é a exceção e tem estrutura própria.
Responda 2xx em até 10 segundos e processe em background. Não há retry: se a sua resposta falhar ou estourar o tempo, o evento é perdido. Detalhes em Garantias de entrega.
3

Reaja ao evento

A partir do callback, você pode agir via API — por exemplo, responder com POST /v1/messages/send (Caso 1) ou baixar anexos com GET /v1/messages/conversation/:id/attachments.
4

Gerencie a configuração

GET /v1/webhooks devolve um objeto com a configuração da empresa (ou null) — não é uma lista. Use o id desse objeto para atualizar com PUT /v1/webhooks/:id ou remover com DELETE /v1/webhooks/:id. Para pausar sem perder a configuração, prefira PUT com status: "INACTIVE".

Caso 3 — Campanhas e disparo em massa

Escopos: campaigns:create, campaigns:read, campaigns:update, campaigns:delete (+ messages:create para o atalho de template em massa).
1

Crie a campanha

POST /v1/campaigns. Campos obrigatórios: name, channel_type, trigger_type e audience_config; opcionais incluem description, trigger_config, behavior_config e sender_config. As estruturas internas desses objetos de configuração estão na Referência da API — siga o schema de lá.A audiência é definida na própria criação, dentro de audience_config (por contact_ids, lists ou filters). Não há um passo de matrícula (enrollment) separado a fazer via API — a campanha já nasce com a audiência que você informar aqui.
2

Confira antes de disparar

Use os previews (não criam nada): POST /v1/campaigns/audience-preview conta os contatos da audiência e POST /v1/campaigns/preview-message resolve as variáveis da mensagem.
3

Ative e acompanhe

Ative com POST /v1/campaigns/:id/activate (pause com /pause). Acompanhe com GET /v1/campaigns/:id/analytics e GET /v1/campaigns/:id/step-analytics, e exporte os contatos com GET /v1/campaigns/:id/enrollments/export.
cURL
Atalho: para enviar um template de WhatsApp para vários contatos sem montar uma campanha, use POST /v1/messages/send-bulk-template (escopo messages:create). O passo a passo, com os parâmetros de template e os limites da Meta, está no guia Template em massa no WhatsApp.

Caso 4 — Sincronizar contatos

Mantenha seu CRM externo e a Nuvia em sincronia. Escopos: contacts:read, contacts:create, contacts:update, contacts:delete.
1

Cheque duplicidade por telefone

Antes de criar, resolva os telefones para ver quais já existem: POST /v1/contacts/find-by-phones.
2

Crie os contatos que faltam

POST /v1/contacts. Campos: firstname, lastname, phone, email, company e properties.
3

Atualize e liste

Atualize um contato com PUT /v1/contacts/:id (ou só o nome com PUT /v1/contacts/:id/name) e liste/pagine com GET /v1/contacts. Para remover o vínculo de um contato com um CRM externo, use DELETE /v1/contacts/:id/crm-link — isso apenas desfaz a vinculação; o contato continua existindo na Nuvia (não é exclusão de contato).

Outras superfícies públicas

Consumíveis por API Key e cobertas na Referência: Agentes, Tabelas e listas, Conversas e Base de conhecimento. Veja o mapa em Seções da API.

Próximos passos

Guia de API Key

Escopos, criação e revogação de chaves.

Referência da API

Todos os endpoints, parâmetros e respostas.