> ## 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.

# Escuchar sesión EventStream

> Conecta un nuevo consumer a una sesión existente y recibe eventos por SSE.

Permite a un nuevo consumer conectarse a una sesión existente y recibir sus eventos mediante SSE. Es útil para reconexiones o para que múltiples clientes escuchen la misma sesión.

## Endpoint

```http theme={null}
POST /assistants-channel/api/v1/channel/api/eventstream/{sessionId}/listen
```

## 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 a la que se desea conectar.
</ParamField>

## Body

No requiere body.

## Ejemplos

<CodeGroup>
  ```bash cURL theme={null}
  curl -N -X POST "https://api.backend.inconcertcc.com/assistants-channel/api/v1/channel/api/eventstream/{sessionId}/listen" \
    -H "Content-Type: application/json" \
    -H "apikey: tu-api-key-aqui"
  ```

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

  const response = await fetch(
    `https://api.backend.inconcertcc.com/assistants-channel/api/v1/channel/api/eventstream/${sessionId}/listen`,
    {
      method: "POST",
      headers: {
        "Content-Type": "application/json",
        apikey: process.env.INCONCERT_API_KEY
      }
    }
  );

  const reader = response.body.getReader();
  const decoder = new TextDecoder();

  while (true) {
    const { value, done } = await reader.read();
    if (done) break;
    console.log(decoder.decode(value, { stream: true }));
  }
  ```

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

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

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

  with requests.post(url, headers=headers, stream=True, timeout=60) as response:
      response.raise_for_status()
      for line in response.iter_lines(decode_unicode=True):
          if line:
              print(line)
  ```
</CodeGroup>

## Respuesta

La respuesta es un stream SSE igual al endpoint **Init**, con los mismos tipos de eventos.

<ResponseExample>
  ```http Response theme={null}
  id: 1
  event: session.consumer.attached
  data: {"sessionId":"uuid-de-sesion"}

  id: 2
  event: hearthbeat
  data: {"minutes":0.5}
  ```
</ResponseExample>

## Códigos de respuesta

| Código | Descripción                      |
| ------ | -------------------------------- |
| `200`  | Stream SSE abierto exitosamente. |
| `400`  | Error en la petición.            |

<Tip>
  Usa **Listen** después de recibir `reconnect_required` para continuar escuchando una sesión sin crear una conversación nueva.
</Tip>
