De cero al primer mensaje : Chat App → usuarios → JWT en tu backend → conversación → envío .
En pocas palabras
Crea un Chat App y guarda id, publicKey y el signing secret (solo en el servidor).
Da de alta usuarios con externalUserId estable.
Emite el JWT en tu backend (POST /v1/chat/users/token). La app solo recibe el token.
Abre el 1:1 con la API Key (las flags de creación por JWT vienen apagadas).
Envía con la API Key (senderExternalUserId) o con el JWT del miembro.
Contexto: Introducción . Alcances: Alcances de la API Key .
Nunca incrustes el signing secret en la app. Solo tu servidor firma JWT.
1. Crear Chat App
Panel: Visión general → Chat → Nuevo app . O API:
Alcance: chat:apps:create . Guarda el id . El signingSecret solo aparece en la creación o al rotar.
2. Usuarios
Repite para user_bob. Alcance: chat:users .
3. JWT (tu backend)
Entrega data.token solo al cliente autenticado como Alice. TTL por defecto 3600 s; máximo 86400 .
4. Conversación 1:1 (API Key)
Con las flags por defecto el JWT no crea conversación (403 CHAT_CLIENT_CREATE_DISABLED).
DIRECT exige exactamente dos USER. El par ya existe → 409 CHAT_DIRECT_EXISTS.
5. Enviar
Mismo contrato PIV1 que los otros canales: from (id del Chat App), to (id de la conversación), type y payload.
Cada envío consume 1 crédito (CHAT_MESSAGE).
Con JWT del miembro: el mismo path, sin senderExternalUserId. El path antiguo POST /v1/chat/conversations/{id}/messages sigue funcionando.
6. WebSocket
wss://api.notifique.dev/v1/chat/ws — primer frame { "type": "auth", "token": "<jwt>" } (sin token en la query).
Próximos pasos