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

# Flujo en tiempo real (SSE)

> Recibe los movimientos de cuota enviados por Server‑Sent Events, sin polling.

`/api/stream` es un flujo **Server‑Sent Events**: al conectar recibes un snapshot del board, luego cada cambio se **envía** (sin polling).

Como `EventSource` no permite header personalizado, pasa la clave en la query: `?key=TU_CLAVE`.

```javascript Node.js theme={null}
import { EventSource } from "eventsource";

const es = new EventSource("https://api.apinn.io/api/stream?key=TU_CLAVE");

es.addEventListener("snapshot", (e) => {
  const { events } = JSON.parse(e.data);
  console.log("snapshot inicial:", events.length, "partidos");
});

es.addEventListener("update", (e) => {
  const { events } = JSON.parse(e.data);
  // events = partidos cuyas cuotas principales han cambiado
});

es.addEventListener("remove", (e) => {
  const { ids } = JSON.parse(e.data);
  // partidos retirados del board (terminados)
});
```

## Tipos de eventos

| Evento     | Payload             | Significado                                      |
| ---------- | ------------------- | ------------------------------------------------ |
| `snapshot` | `{ events: [...] }` | Estado inicial del board al conectar.            |
| `update`   | `{ events: [...] }` | Partidos cuyas cuotas principales se han movido. |
| `remove`   | `{ ids: [...] }`    | Partidos retirados (terminados).                 |

Cada elemento `events` lleva el `event_id`, los equipos, el `live_status` y las cuotas principales (moneyline/spread/totals).

<Tip>
  El flujo abre una conexión larga y cuenta como **1 petición** en el momento de la conexión.
</Tip>
