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

# Enviar mensaje EventStream

> Envía un mensaje de texto a una sesión activa del Canal API EventStream.

Envía un mensaje de texto del usuario a una sesión activa. La respuesta del asistente no se devuelve en esta petición: se recibe por el stream SSE abierto con **Init** o **Listen**.

## Endpoint

```http theme={null}
PUT /assistants-channel/api/v1/channel/api/eventstream/{sessionId}/{consumerId}
```

## Autenticación

<ParamField header="apikey" type="string" required>
  API Key proporcionada para tu integración.
</ParamField>

## Parámetros de ruta

<ParamField path="sessionId" type="string" required>
  Identificador de la sesión obtenido desde el evento `Initialized`.
</ParamField>

<ParamField path="consumerId" type="string" required>
  Identificador del consumer obtenido desde el evento `Initialized`.
</ParamField>

## Body

<ParamField body="message" type="string" required>
  Mensaje de texto que se enviará al asistente.
</ParamField>

```json Request theme={null}
{
  "message": "¿Cuál es el estado de mi pedido?"
}
```

## Ejemplos

<CodeGroup>
  ```bash cURL theme={null}
  curl -X PUT "https://api.backend.inconcertcc.com/assistants-channel/api/v1/channel/api/eventstream/{sessionId}/{consumerId}" \
    -H "Content-Type: application/json" \
    -H "apikey: tu-api-key-aqui" \
    -d '{"message":"¿Cuál es el estado de mi pedido?"}'
  ```

  ```javascript JavaScript theme={null}
  const sessionId = "uuid-de-sesion";
  const consumerId = "uuid-del-consumer";

  const response = await fetch(
    `https://api.backend.inconcertcc.com/assistants-channel/api/v1/channel/api/eventstream/${sessionId}/${consumerId}`,
    {
      method: "PUT",
      headers: {
        "Content-Type": "application/json",
        apikey: process.env.INCONCERT_API_KEY
      },
      body: JSON.stringify({
        message: "¿Cuál es el estado de mi pedido?"
      })
    }
  );

  if (!response.ok) {
    throw new Error(`Error enviando mensaje: ${response.status}`);
  }
  ```

  ```python Python theme={null}
  import os
  import requests

  session_id = "uuid-de-sesion"
  consumer_id = "uuid-del-consumer"
  url = f"https://api.backend.inconcertcc.com/assistants-channel/api/v1/channel/api/eventstream/{session_id}/{consumer_id}"

  headers = {
      "Content-Type": "application/json",
      "apikey": os.environ["INCONCERT_API_KEY"]
  }

  payload = {
      "message": "¿Cuál es el estado de mi pedido?"
  }

  response = requests.put(url, headers=headers, json=payload, timeout=10)
  response.raise_for_status()
  ```
</CodeGroup>

## Respuesta

| Código | Descripción                    |
| ------ | ------------------------------ |
| `201`  | Mensaje enviado correctamente. |
| `400`  | Error en la petición.          |

<Info>
  Para recibir la respuesta del asistente, mantén abierto el stream SSE de la sesión. Busca eventos como `crew.status.writing`, `assistant.response`, `assistant.message` y `crew.status.waiting`.
</Info>
