Un écran de sportsbook paraît statique : une liste de matchs, une colonne de cotes. En dessous, un flux de cotes est un torrent de milliers de petits changements, et le travail de l’opérateur consiste à les appliquer tous, dans le bon ordre. Ce guide suit ce flux de la première requête au pari réglé.
1. Le modèle de données
Presque tous les flux utilisent la même hiérarchie :
- Sport : football, tennis, esports.
- Tournoi ou ligue : Premier League, ATP Tokyo, Worlds de League of Legends.
- Événement : un match, avec une heure de début et des participants.
- Marché : une question sur l’événement, comme 1X2, plus/moins de 2,5 buts ou handicap par map.
- Issue : une réponse, avec une cote et un statut (actif, suspendu, réglé).
Chaque élément a un identifiant stable. La plupart des bugs d’intégration viennent du fait de traiter les noms comme des identifiants : l’orthographe des équipes change, les ID non.
2. D’abord le snapshot, ensuite les deltas
Au démarrage, le client demande un snapshot : l’état complet du moment. Ensuite, il reçoit des deltas, de petits messages qui disent « cette cote a bougé », « ce marché est suspendu », « cet événement a commencé ».
Les bons flux numérotent leurs deltas. Nocturn Sport, par exemple, décrit son flux comme un snapshot complet suivi de deltas versionnés. Si le client détient la version N et reçoit la N+2, il sait qu’un message a été perdu et recharge au lieu d’afficher une cote périmée. Les flux sans versions obligent le client à deviner, et c’est en devinant que des bookmakers finissent par proposer les cotes de la veille.
3. Push et pull
En football live, une cote peut changer plusieurs fois par minute, donc les flux live poussent généralement les messages sur une connexion persistante. Les cotes avant-match bougent assez lentement pour qu’un pull HTTP toutes les quelques secondes suffise souvent. Beaucoup d’opérateurs utilisent les deux : pull pour le catalogue avant-match, push pour le live.
4. Les suspensions
Une suspension, c’est le flux qui dit « ne prenez pas de paris là-dessus maintenant ». Les déclencheurs : un but, un penalty, un break, la fin d’une map, ou la perte par le fournisseur de sa propre source de données. Le client doit appliquer les suspensions plus vite que tout le reste ; accepter une cote dans les secondes qui suivent un but est la façon classique de perdre de l’argent.
Les marchés avant-match ferment aussi avant le coup d’envoi. Nocturn Sport, par exemple, les ferme une minute avant le début.
5. La prise de pari
Si l’API va au-delà de la publication des cotes, la prise de pari suit un schéma :
- Le client envoie la sélection, la cote qu’il a affichée et la mise, avec un identifiant de requête unique.
- Le serveur vérifie que la cote est toujours valable et le marché ouvert.
- Il accepte, refuse ou propose une nouvelle cote.
- En cas de panne réseau, le client renvoie la requête avec le même identifiant, et le serveur renvoie la réponse d’origine au lieu de créer un second pari.
Cette dernière étape, l’idempotence, protège à la fois le solde du joueur et les comptes de l’opérateur.
6. Le règlement
À la fin de l’événement, le flux publie les résultats par issue : gagnant, perdant, annulé, ou moitié gagnant et moitié perdant pour les lignes partagées comme les handicaps asiatiques. La plateforme règle chaque pari en conséquence. Les corrections existent : un résultat peut être modifié après vérification, donc le processus de règlement doit pouvoir régler à nouveau proprement.
7. Ce qu’il faut tester avant la mise en ligne
- Couper la connexion en plein match et vérifier la reprise.
- Rejouer un delta dans le désordre et vérifier que le client s’en aperçoit.
- Placer deux fois le même pari avec un seul identifiant de requête.
- Régler un combiné dont une sélection est annulée.
Un flux qui passe ces quatre tests est prêt pour un samedi après-midi.
Questions fréquentes
Quelle différence entre un snapshot et un delta ?
Un snapshot est l'état complet et actuel de chaque événement, marché et cote. Un delta ne contient que ce qui a changé depuis une version donnée. Le client charge un snapshot une fois, puis applique les deltas dans l'ordre.
Pourquoi les deltas sont-ils versionnés ?
Pour que le client puisse détecter un trou. S'il détient la version 1 204 et reçoit la 1 206, il sait que la 1 205 manque et doit recharger plutôt que d'afficher une cote erronée.
Pourquoi les marchés sont-ils suspendus ?
Parce que la cote n'est plus sûre : un but, un carton rouge, un break au tennis ou une perte de connexion à la source de données. Un marché suspendu refuse les paris jusqu'à sa réouverture avec une nouvelle cote.
Un flux de cotes gère-t-il la prise de paris ?
Certains oui, d'autres non. Un flux pur ne publie que des cotes. Une API de sportsbook ajoute la prise de paris, l'historique et le règlement, généralement avec un identifiant de requête unique par pari pour qu'une nouvelle tentative ne double pas une mise.
Push ou pull : quel mode de livraison choisir ?
Le push (flux de messages ou socket) convient au live, où les cotes changent à la seconde. Le pull (interrogation HTTP) est plus simple et souvent suffisant pour l'avant-match.