Het vakblad van de iGaming-industrie
Nederlands
MediaSoftware

SportsbookGidsen

Hoe een odds-feed-API werkt, van snapshot tot afrekening

Zo werkt de odds-feed-API van een sportsbook: evenementen, markten en uitkomsten, snapshots en delta's, schorsingen, weddenschappen en afrekening, voor operators.

Een sportsbookscherm ziet er statisch uit: een lijst wedstrijden, een kolom prijzen. Daaronder is een oddsfeed een stroom van duizenden kleine wijzigingen, en het werk van de operator is ze allemaal in de juiste volgorde toe te passen. Deze gids volgt die stroom van het eerste verzoek tot de afgerekende weddenschap.

1. Het datamodel

Bijna elke feed gebruikt dezelfde hiërarchie:

  • Sport: voetbal, tennis, esports.
  • Toernooi of competitie: Premier League, ATP Tokio, League of Legends Worlds.
  • Evenement: één wedstrijd, met een begintijd en deelnemers.
  • Markt: één vraag over het evenement, zoals 1X2, over/under 2,5 doelpunten of maphandicap.
  • Uitkomst: één antwoord, met een prijs en een status (actief, geschorst, afgerekend).

Elk element heeft een stabiele identificator. De meeste integratiefouten ontstaan door namen als identificator te gebruiken: teamnamen veranderen van spelling, ID’s niet.

2. Eerst snapshot, dan delta’s

Bij het opstarten vraagt de client een snapshot op: de volledige actuele stand. Daarna ontvangt hij delta’s, kleine berichten als “deze prijs is bewogen”, “deze markt is geschorst”, “dit evenement is begonnen”.

Goede feeds nummeren hun delta’s. Nocturn Sport bijvoorbeeld beschrijft zijn feed als een volledige snapshot plus delta’s met versienummer. Heeft de client versie N en ontvangt hij N+2, dan weet hij dat er een bericht verloren ging en herlaadt hij in plaats van een verouderde prijs te tonen. Feeds zonder versies dwingen de client te gokken, en door te gokken bieden bookmakers uiteindelijk de odds van gisteren aan.

3. Push en pull

Bij live voetbal kan een prijs meerdere keren per minuut veranderen, dus live feeds pushen berichten meestal over een blijvende verbinding. Pre-matchprijzen bewegen langzaam genoeg om ze om de paar seconden via HTTP te pullen. Veel operators gebruiken beide: pull voor de pre-matchcatalogus, push voor in-play.

4. Schorsingen

Een schorsing is de feed die zegt: “neem hier nu geen weddenschappen op aan”. Aanleidingen zijn een doelpunt, een strafschop, een break, het einde van een map of de leverancier die zijn eigen databron kwijtraakt. De client moet schorsingen sneller toepassen dan wat dan ook; een prijs die in de seconden na een doelpunt wordt geaccepteerd, is de klassieke manier om geld te verliezen.

Pre-matchmarkten sluiten ook vóór de aftrap. Nocturn Sport sluit ze bijvoorbeeld één minuut voor de start.

5. De weddenschap plaatsen

Gaat de API verder dan prijzen publiceren, dan volgt het plaatsen een vast patroon:

  1. De client stuurt de selectie, de getoonde prijs en de inzet, met een unieke request-ID.
  2. De server controleert of de prijs nog geldig is en de markt open.
  3. Hij accepteert, weigert of biedt een nieuwe prijs.
  4. Valt het netwerk weg, dan stuurt de client opnieuw met dezelfde request-ID, en geeft de server het oorspronkelijke antwoord terug in plaats van een tweede weddenschap aan te maken.

Die laatste stap, idempotentie, beschermt zowel het saldo van de speler als de boeken van de operator.

6. Afrekening

Als het evenement afgelopen is, publiceert de feed per uitkomst de resultaten: gewonnen, verloren, ongeldig, of half gewonnen en half verloren bij gesplitste lijnen zoals Aziatische handicaps. Het platform rekent elke weddenschap daarmee af. Correcties komen voor: een uitslag kan na controle worden aangepast, dus een afrekenproces moet netjes opnieuw kunnen afrekenen.

7. Wat je test voordat je live gaat

  • Verbreek de verbinding midden in een wedstrijd en controleer het herstel.
  • Speel een delta in de verkeerde volgorde af en controleer of de client het merkt.
  • Plaats dezelfde weddenschap twee keer met één request-ID.
  • Reken een combinatieweddenschap af waarvan één onderdeel ongeldig is.

Een feed die die vier tests doorstaat, is klaar voor een zaterdagmiddag.

Veelgestelde vragen

Wat is het verschil tussen een snapshot en een delta?

Een snapshot is de volledige actuele stand van elk evenement, elke markt en elke prijs. Een delta bevat alleen wat sinds een bepaalde versie is veranderd. Clients laden één keer een snapshot en passen daarna de delta's op volgorde toe.

Waarom hebben delta's een versienummer?

Zodat de client een gat opmerkt. Heeft hij versie 1.204 en ontvangt hij 1.206, dan weet hij dat 1.205 ontbreekt en moet hij herladen in plaats van een verkeerde prijs te tonen.

Waarom worden markten geschorst?

Omdat de prijs niet meer veilig is: een doelpunt, een rode kaart, een break in het tennis of een verbroken verbinding met de databron. Een geschorste markt weigert weddenschappen tot hij heropent met een nieuwe prijs.

Regelt een oddsfeed ook het plaatsen van weddenschappen?

Sommige wel, sommige niet. Een pure feed publiceert alleen prijzen. Een sportsbook-API voegt plaatsen, historie en afrekening toe, meestal met een unieke request-ID per weddenschap zodat een nieuwe poging een inzet niet verdubbelt.

Push of pull: welke levering is beter?

Push (een berichtenstroom of socket) past bij live wedden, waar prijzen per seconde veranderen. Pull (pollen via HTTP) is eenvoudiger en volstaat vaak voor pre-match.