> ## Documentation Index
> Fetch the complete documentation index at: https://docs.notifique.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Usuario y agente

> USER es quien está en tu app. AGENT es tu equipo hablando desde el panel o la API.

<Tip>
  En Chat, **usuario** y **agente** no son roles de tu producto. Son **quién habla en la conversación**. Eso cambia webhooks, métricas y el JWT que entregas en la app.
</Tip>

## En pocas palabras

|                           | Usuario (`USER`)                               | Agente (`AGENT`)                                              |
| ------------------------- | ---------------------------------------------- | ------------------------------------------------------------- |
| Quién                     | Persona autenticada **en tu app**              | Miembro del workspace (soporte, operación, bot de la empresa) |
| Cómo se crea              | `PUT /v1/chat/users` (por defecto)             | `POST /v1/chat/agents` (vincula `workspaceUserId`)            |
| JWT en la app del cliente | Sí                                             | No. La app del cliente no debe recibir JWT de agente          |
| Envío desde el panel      | No                                             | Sí — el panel habla como agente                               |
| Envío con API Key         | Pasa `senderExternalUserId` de un USER o AGENT | Igual: `senderExternalUserId` es quien aparece                |
| Webhook                   | `chat.received`                                | `chat.sent`                                                   |

## Cuándo usar USER

Usa `USER` para **todo el que entra al chat desde tu aplicación**. Cada persona tiene un `externalUserId` estable en **tu** base.

Flujo típico:

1. La persona inicia sesión en tu app
2. Tu backend hace upsert (`PUT /v1/chat/users`)
3. Tu backend emite el JWT (`POST /v1/chat/users/token`)
4. La app abre el WebSocket con ese JWT y envía como esa persona

El JWT lleva `kind: USER`. Quien tiene ese token **es** esa persona en la conversación.

## Cuándo usar AGENT

Usa `AGENT` cuando el mensaje debe aparecer como **tu empresa**, no como un usuario final.

Casos:

* Alguien del equipo responde en el **panel** (Chat o Inbox) — Notifique ya crea el agente `agent:{workspaceUserId}`
* Tu backend envía un aviso en el hilo **como soporte**
* Quieres métricas de **enviados** (agente) vs **recibidos** (usuario) en el detalle del Chat App

```http theme={null}
POST /v1/chat/agents
Content-Type: application/json
Authorization: Bearer sk_live_xxxxx
```

```json theme={null}
{
  "chatAppId": "clxxapp...",
  "workspaceUserId": "clxxuser...",
  "externalUserId": "agent:clxxuser...",
  "name": "Ana (soporte)"
}
```

`workspaceUserId` debe ser miembro del workspace. El `externalUserId` por defecto es `agent:{workspaceUserId}`.

Luego envía como ese agente:

```json theme={null}
{
  "from": "clxxapp...",
  "to": ["cnv_xxxxx"],
  "type": "text",
  "payload": { "message": "Hola, ¿en qué puedo ayudar?" },
  "senderExternalUserId": "agent:clxxuser..."
}
```

## Qué no mezclar

* **No** entregues JWT de `AGENT` en la app del cliente. El cliente habla con JWT de `USER`.
* **No** registres al equipo como `USER` si atiende desde el panel — el webhook saldría como `chat.received`.
* Dos `USER` en un 1:1 es conversación entre personas de tu producto. Un `USER` y un `AGENT` es atención.

## Flags del Chat App

Quién puede **crear conversación**, **crear grupo** y **añadir miembros** con JWT de usuario vale para cualquiera con token de usuario. Un agente por API Key ignora esas flags: el backend siempre puede crear.

Ver [Quick Start](/es/chat-api/como-funciona/quick-start) y [Enviar mensajes](/es/chat-api/como-funciona/enviar-mensagens).
