What you are looking at
The board above is not a mock-up. It lists the tennis events currently available from the 7 Unicorn Gaming odds API, with the same event ids, market ids and in-play flags your integration will receive. Each row is one market on one match: two runners on Match Odds, with Set Betting and game handicap markets listed where the exchange offers them. Tennis markets suspend between points, so expect frequent status flips. Open a live match and the back and lay prices refresh every second or so; a suspended market shows its status change the moment the feed suspends it, which is the behaviour you should test your settlement logic against.

Tennis
Only live (in-play) matches carry meaningful prices on this page. Pre-match events appear in the list with their market ids so you can see how far ahead the schedule is published, but the demo does not show early prices.
What the JSON looks like
Each market returns one object per poll or push. Sample, field names as in the docs:
{
"event_id": "34012877",
"event_name": "Alcaraz v Sinner",
"market_id": "1.234567890",
"market_name": "Match Odds",
"in_play": true,
"status": "OPEN",
"runners": [
{"selection_id": 1001, "name": "Alcaraz",
"back": [{"price": 1.85, "size": 12400}],
"lay": [{"price": 1.87, "size": 9800}]},
{"selection_id": 1002, "name": "Sinner",
"back": [{"price": 2.16, "size": 7600}],
"lay": [{"price": 2.18, "size": 5100}]}
],
"updated_at": "2026-09-18T14:02:11Z"
}Sizes are the amounts available at that price in the exchange currency; prices are decimal odds. When a market closes you receive the same object with status CLOSED and, once known, a winner selection so your backend can settle without a second call.