Skip to main content
We continuously improve the Odds API. This page lists new features, changes, fixes, and breaking changes.
All timestamps are UTC. If a change affects data shape or behavior, it will be marked as Breaking.

2026-05-25

✨ Added

  • WebSocket receiveType: "zstd" — dictless compression. Opt-in zstd egress with no dictionary handling: every data frame is a standalone dictless zstd frame (dictId 0), decoded in one line (zstd.decompress(frame) → JSON). ~5–6× smaller than JSON on odds — the simplest way to cut bandwidth. See Compression.
  • WebSocket receiveType: "zstd-dict" — trained dictionaries. Maximum ratio (~7–9× on odds) using per-channel dictionaries the server pushes as dict control frames at connect.

🔁 Changed

  • receiveType: "zstd" now means dictless. During the zstd beta, "zstd" previously delivered trained dictionaries; that behavior moved to the new "zstd-dict". If you were decoding dictionary frames under "zstd", switch to "zstd-dict".
  • Dictionary version cache removed. The dicts login field is gone; the server now re-sends the (~32 KB) dictionaries on every zstd-dict connection, so clients no longer persist or version dictionaries across reconnects. A dicts field, if still sent, is ignored.

2026-04-09

✨ Added

  • Fixture view: venue section — new nested object on all fixture responses with venueId, venueName, and venueLocation. Translated per language.
  • Fixture view: clock section — new nested object on all fixture responses with currentPeriod, currentTime, remainingTime, remainingTimeInPeriod, and stopped. All keys present with null values until clock data is populated for a fixture.
  • Fixture view: participant1ShortName / participant2ShortName — new fields in the participants section of fixture responses, sourced from translated participant data.
  • Fixture view: seasonRound — new field in the season section of fixture responses.
  • Futures view: marketId — the market section in future responses now includes the marketId from the futures table. Name fields (marketName, marketType, playerMarket, participantMarket) remain null for now.
  • Participants endpoint: participantShortName — the GET /{lang}/participants response now includes participantShortName for each participant.
  • New REST endpoint: GET /{lang}/venues?venueIds=... — returns venue data with translated venueName and venueLocation.
  • New WebSocket channel: clocks — delivers live clock updates per fixture (same routing as scores: filtered by fixtureId, sport, tournament). Supports resume/replay.

⚠️ Breaking

  • Fixture response shape changed — all fixture endpoints (REST and WebSocket) now include three new top-level keys: venue (object), clock (object), and updated participants / season sections. Clients parsing fixture responses strictly should update their models.
    • season now includes seasonRound: integer | null
    • participants now includes participant1ShortName: string | null and participant2ShortName: string | null
    • venue: { venueId, venueName, venueLocation } added after season
    • clock: { currentPeriod, currentTime, remainingTime, remainingTimeInPeriod, stopped } added after scores
  • Future response shape changedmarket.marketId is now populated (integer or null) instead of always null.

2025-12-12

✨ Added

  • WebSocket resume & replay support using entryId cursors
  • New WebSocket channels:
    • injuries
    • lineups
    • stats
  • AsyncAPI 3.0 reference for WebSocket gateway

🔧 Improved

  • Reduced WebSocket latency for odds and scores
  • Better filtering for sportIds, tournamentIds, and bookmakers

🐛 Fixed

  • Fixed an issue where some odds updates were delivered without bookmaker gating
  • Fixed incorrect live flag on some fixtures during transitions

2025-11-28

⚠️ Breaking

  • odds.payload.odds keys are now always bookmaker-scoped
    • Old clients expecting a flat structure must update

✨ Added

  • Support for receiveType: "binary" (MessagePack)
  • Added entryId to all update messages

2025-11-10

✨ Added

  • Initial WebSocket gateway
  • Channels:
    • fixtures
    • scores
    • odds
    • bookmakers