Do zero à primeira mensagem em poucos passos: Chat App → usuários → JWT no seu backend → conversa → envio .
Em poucas palavras
Crie um Chat App e guarde id, publicKey e o signing secret (só no servidor).
Cadastre usuários com externalUserId estável.
Emita o JWT no seu backend (POST /v1/chat/users/token). O app só recebe o token.
Abra a conversa 1:1 com a API Key (flags de criação pelo JWT vêm desligadas).
Envie com a API Key (senderExternalUserId) ou com o JWT do membro.
Contexto: Introdução . Escopos: Escopos da API Key .
Antes de começar
Chave com chat:apps:create , chat:users , chat:conversations:write e chat:messages:send (ou admin em teste)
Autenticação: Authorization: Bearer sk_live_... ou x-api-key
Base URL: https://api.notifique.dev. Use sk_test_... no Sandbox se estiver começando
Nunca embuta o signing secret no app. Só o seu servidor assina JWT.
1. Criar Chat App
1A. Pelo painel
Visão geral → Chat → Novo app
Informe o nome do produto
Copie a chave pública e o signing secret (este último só uma vez, ou rotacione depois)
1B. Pela API
Resposta 200 com signingSecret (só nesta criação ou no rotate):
Escopo: chat:apps:create . Guarde o id .
2. Cadastrar usuários
Repita para user_bob. Escopo: chat:users . O PUT é upsert.
3. Emitir JWT (no seu backend)
Entregue data.token só ao cliente logado como Alice. TTL padrão 3600 s; máximo 86400 .
4. Abrir conversa 1:1 (API Key)
O JWT, com as flags padrão, não cria conversa (403 CHAT_CLIENT_CREATE_DISABLED).
DIRECT exige exatamente dois usuários USER. Já existir o par → 409 CHAT_DIRECT_EXISTS.
Escopo: chat:conversations:write .
5. Enviar mensagem
Contrato PIV1, igual aos outros canais: from (id do Chat App), to (id da conversa), type e payload.
Pela API Key (precisa senderExternalUserId):
Cada envio consome 1 crédito (CHAT_MESSAGE). Escopo: chat:messages:send . O path antigo POST /v1/chat/conversations/{id}/messages continua funcionando.
Imagem, áudio e arquivo: Enviar mensagens . Quem fala na sala: Usuário e agente .
Pelo JWT do membro:
Sem API Key. O remetente é o usuário do token. Listar mensagens: GET /v1/chat/conversations/{id}/messages com o JWT.
6. WebSocket (opcional)
Conecte sem ?token=
Envie { "type": "auth", "token": "<jwt>" }
{ "type": "subscribe", "conversationId": "…" }
{ "type": "message.send", "conversationId": "…", "body": "oi", "clientMessageId": "…" }
7. Webhooks (opcional)
Ative chat.received, chat.sent, chat.conversation.created e os demais chat.* que sua integração usa.
Guia: Eventos dos webhooks .
Próximos passos