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

# Flusso in tempo reale (SSE)

> Ricevi i movimenti di quota inviati in Server‑Sent Events, senza polling.

`/api/stream` è un flusso **Server‑Sent Events**: alla connessione ricevi uno snapshot del board, poi ogni cambiamento viene **inviato** (nessun polling).

Poiché `EventSource` non permette header custom, passa la chiave in query: `?key=TUA_CHIAVE`.

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

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

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

es.addEventListener("update", (e) => {
  const { events } = JSON.parse(e.data);
  // events = match le cui quote principali sono cambiate
});

es.addEventListener("remove", (e) => {
  const { ids } = JSON.parse(e.data);
  // match rimossi dal board (terminati)
});
```

## Tipi di eventi

| Evento     | Payload             | Significato                                  |
| ---------- | ------------------- | -------------------------------------------- |
| `snapshot` | `{ events: [...] }` | Stato iniziale del board alla connessione.   |
| `update`   | `{ events: [...] }` | Match le cui quote principali sono cambiate. |
| `remove`   | `{ ids: [...] }`    | Match rimossi (terminati).                   |

Ogni elemento `events` riporta l'`event_id`, le squadre, il `live_status` e le quote principali (moneyline/spread/totals).

<Tip>
  Il flusso apre una connessione lunga e conta come **1 richiesta** al momento della connessione.
</Tip>
