Skip to main content
Do zero à primeira mensagem em poucos passos: Chat AppusuáriosJWT no seu backendconversaenvio.

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

  1. Visão geral → ChatNovo app
  2. Informe o nome do produto
  3. 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)

  1. Conecte sem ?token=
  2. Envie { "type": "auth", "token": "<jwt>" }
  3. { "type": "subscribe", "conversationId": "…" }
  4. { "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