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

# Flux temps réel (SSE)

> Recevez les mouvements de cote poussés en Server‑Sent Events, sans polling.

`/api/stream` est un flux **Server‑Sent Events** : à la connexion vous recevez un snapshot du board, puis chaque changement est **poussé** (pas de polling).

Comme `EventSource` ne permet pas de header custom, passez la clé en query : `?key=VOTRE_CLE`.

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

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

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

es.addEventListener("update", (e) => {
  const { events } = JSON.parse(e.data);
  // events = matchs dont les cotes principales ont changé
});

es.addEventListener("remove", (e) => {
  const { ids } = JSON.parse(e.data);
  // matchs retirés du board (terminés)
});
```

## Types d'événements

| Événement  | Payload             | Sens                                         |
| ---------- | ------------------- | -------------------------------------------- |
| `snapshot` | `{ events: [...] }` | État initial du board à la connexion.        |
| `update`   | `{ events: [...] }` | Matchs dont les cotes principales ont bougé. |
| `remove`   | `{ ids: [...] }`    | Matchs retirés (terminés).                   |

Chaque élément `events` porte l'`event_id`, les équipes, le `live_status` et les cotes principales (moneyline/spread/totals).

<Tip>
  Le flux ouvre une connexion longue et compte pour **1 requête** au moment de la connexion.
</Tip>
