Skip to main content
Chat in-app é a conversa dentro do seu produto. Não é Chat no site (widget com IA na página). Aqui o usuário já está autenticado no seu app.

O que é Chat na Notifique?

É o canal para mensagens 1:1 e grupos no iOS, Android ou web do seu produto. Você cria um Chat App no workspace, cadastra usuários com um externalUserId estável e emite um JWT no seu backend. O app móvel ou o front nunca vê o signing secret. Você pode:
  • Criar Chat Apps com origens permitidas (CORS) e flags do que o JWT pode fazer
  • Sincronizar usuários (PUT /v1/chat/users) e agentes da equipe (POST /v1/chat/agents)
  • Emitir JWT (POST /v1/chat/users/token) com TTL de 60 s a 24 h (padrão 1 h)
  • Abrir conversas 1:1 ou grupo pela API Key; o cliente só cria se você ligar as flags
  • Enviar e listar mensagens por REST (POST /v1/chat/messages) ou WebSocket
  • Espelhar na Inbox automaticamente
  • Receber webhooks chat.received (usuário) e chat.sent (agente), mais ciclo de conversa e membros
Diferente do WhatsApp, chat não usa instância de canal. Basta Chat App, usuários e API Key (ou JWT do usuário) com os escopos certos.

Identidade

O identificador do usuário no seu sistema é externalUserId (immutável). A Notifique gera um id interno (chatUserId). O JWT leva: O secret de assinatura fica só no servidor. Rotacione no painel ou com POST /v1/chat/apps/{id}/rotate-secret — tokens antigos param de valer.

Tempo real

Conecte em wss://api.notifique.dev/v1/chat/ws. Não coloque o JWT na query string. O primeiro frame é:
Resposta auth.ok. Depois: subscribe / unsubscribe, message.send, message.read, typing.start / typing.stop, pingpong. Eventos da conversa chegam no mesmo socket (message.new, etc.). Há teto de conexões simultâneas por plano (e um teto no host). Estouro → o gateway recusa a conexão.

Cobrança e limites

Cada mensagem enviada consome o SKU CHAT_MESSAGE: 1 crédito (ou R$ 0,01 no Pague pelo uso). Os mesmos números aparecem em Planos e preços no painel.

Flags padrão (restritivas)

No Chat App, por padrão:
  • allowClientCreateDirect = false
  • allowClientCreateGroup = false
  • allowClientAddMembers = false
Com isso, o JWT não cria conversa nem adiciona membro. A API Key (backend) cria. JWT com flag desligada → 403 CHAT_CLIENT_CREATE_DISABLED.

Quando usar?

Funciona para inbox do produto, suporte 1:1 e grupos pequenos. Mensagem em massa, OTP ou reengajamento fora do app → Push, e-mail ou WhatsApp. Widget na landing page → Chat no site.

Como funciona na prática

  1. Crie um Chat App no painel (Visão geral → Chat) ou POST /v1/chat/apps
  2. Cadastre o usuário com externalUserId quando ele existir no seu banco
  3. Emita o JWT no seu backend e entregue só ao cliente autenticado
  4. O app abre o WebSocket, autentica e se inscreve nas conversas
  5. Sua API Key abre a conversa 1:1 (dois USER) ou o grupo; o cliente envia mensagens
Cada API Key pertence a um workspace. Na v1 não envie x-workspace-id.

O que dá para fazer

  • Conversas DIRECT com exatamente dois usuários USER (idempotente por par: CHAT_DIRECT_EXISTS se já existe)
  • Grupos com política de entrada (OPEN, ADMIN_ADD, INVITE) e de convite (ANY_MEMBER, ADMINS_ONLY)
  • Idempotência de mensagem com clientMessageId (mesmo id → mesma mensagem)
  • Tipos no envio PIV1: text, image, audio, file (payload.mediaUrl só HTTPS). A resposta usa TEXT / IMAGE / AUDIO / FILE.
  • Origens no Chat App: se a lista não estiver vazia, o Origin do JWT precisa bater

Depois da primeira mensagem

  • Acompanhe por webhooks
  • Responda no painel (Chat ou Inbox) como agente
  • Teste no Sandbox com sk_test_... antes de produção

Próximos passos