Antes de começar
Você vai precisar de:- Uma chave de API com permissão para eventos e automações (na doc técnica:
events:read,events:write,automations:read,automations:write— ou uma chave “completa” se a sua política permitir). - Na mesma conta, escopos de envio dos canais que os templates usarem (
email:send,whatsapp:send, …), como no Quick Start de templates. - Pelo menos um template já criado no workspace (anote os ids).
- URL base da API (ex.:
https://api.notifique.dev). - Autenticação:
Authorization: Bearer sk_live_...ou cabeçalhox-api-key.
sk_live_xxxxx pela sua chave.
1. Registrar o evento (“quando isso acontecer…”)
O seu backend escolhe o nome estável do fato (ex.:user.created). Aqui você só cadastra esse nome na API.
POST /v1/events — escopo events:write.
O campo schemaJson é opcional: tipos por campo (string, number, boolean). Se existir, o payload do disparo é conferido antes de criar execuções.
Pedido
success: true e data com id, name, createdAt.
2. Criar a automação (“…faça esta sequência”)
POST/v1/automations — escopo automations:write.
O graph tem steps (cada um com stepKey, stepType, config) e connections (from / to). Deve existir exatamente um passo trigger com config.eventName igual ao evento já cadastrado.
Três dias em milissegundos: 259200000 (= 3 × 24 × 60 × 60 × 1000).
Pedido
YOUR_WELCOME_TEMPLATE_ID e YOUR_TIPS_TEMPLATE_ID pelos ids reais. Em sendTemplate, campos como fromEmail, instanceId ou telegramInstanceId seguem a mesma ideia do envio manual de template.
Fluxos maiores (vários envios, condição se/senão, atualizar contato, encerrar fluxo) usam o mesmo formato de grafo; muitas equipes desenham primeiro no painel e depois espelham na API.
Condições, fim de ramo e gatilho por mensagem (cola rápida)
condition— sempre duas saídas do mesmo passo, combranch"true"e"false". Dá para empilhar várias condições (uma filha da outra num ramo).- Gatilho por evento — em
condition.configusesource"event"ou"contact",propertyKey,operatore, se precisar,compareValue. - Gatilho por mensagem recebida — use
source": "message"; não usepropertyKey— o texto comparado é o da mensagem recebida. endFlow— passo terminador:"stepType": "endFlow","config": {}, sem conexão saindo desse passo. Só encerra aquele caminho.
3. Disparar (“agora aconteceu de verdade”)
POST/v1/events/send — escopo events:write.
event— mesmo nome cadastrado.payload— dados que o schema (se houver) aceita.- Destinatário — um entre
contactId,emailouphone(telefone no formato internacional E.164).
Idempotency-Key ajuda a não duplicar a jornada em retry de rede (idempotentReplay quando aplicável).
4. Ver se a jornada rodou
- GET
/v1/automations/:id/runs?page=1&limit=20— lista execuções — escopoautomations:read. - GET
/v1/automations/:id/runs/:runId— detalhe com passos e status — escopoautomations:read.
automationId que voltou ao criar a automação (ou liste com GET /v1/automations).
Continuar
- Introdução — visão geral e boas práticas
- Quick Start de templates — criar os modelos usados no grafo
