Reference

API reference

Generated from the same OpenAPI contract served at /api/v1/spec. This page covers the customer-facing v1 REST odds routes; the OpenAPI download endpoint itself is documented on OpenAPI.

Contract changes

Backwards-compatible additions may appear under /api/v1. Breaking changes require a dated changelog entry and a deprecation window; coverage removals use the same policy path. See Change policy.

GET/api/v1/sportsAuth: Required

List available sports

Lists sports with at least one entitled bookmaker that has product-verified coverage for the requested transport. Broad sport lists exclude source_limited and live_beta sources.

Parameters

transport

query · string · rest | live · default rest

Single product channel to query. `rest` and `live` are API products, not event phase labels.

limit

query · integer · default 50 · 1-500

Maximum number of results per page

offset

query · integer · default 0 · 0-∞

Number of results to skip

Responses

200

Paginated list of sports

400

Invalid request parameters

401

Missing or invalid API key. Supply `Authorization: Bearer <key>` (recommended) or `X-Api-Key: <key>`.

403

Request is authenticated but not entitled. `transport=live` requires `plan_limits.live_enabled=true` and can return `live_not_enabled`; odds detail requests can also return `forbidden` when no product-verified bookmaker entitlement exists for the requested sport and transport.

429

Rate limit or monthly quota exceeded

503

Rate-limit backend unavailable (fail-closed)

GET/api/v1/eventsAuth: Required

List events with optional filters

Lists events with current odds from entitled bookmakers that have product-verified coverage for the requested transport. Broad event queries exclude source_limited and live_beta sources.

Parameters

sport

query · string · football | tennis | basketball | ice_hockey | handball | baseball | darts | australian_rules | rugby | cricket | combat_sport | volleyball | american_football | golf | motorsport | cycling | table_tennis | snooker | badminton | esports | waterpolo | winter_sport

Filter by sport slug

league

query · string

Filter by league key (e.g. `bundesliga`)

dateFrom

query · string · date-time

Earliest kickoff (ISO-8601); must be before or equal to dateTo when both are provided

dateTo

query · string · date-time

Latest kickoff (ISO-8601); must be after or equal to dateFrom when both are provided

transport

query · string · rest | live · default rest

Single product channel to query. `rest` and `live` are API products, not event phase labels.

limit

query · integer · default 50 · 1-500

Maximum number of results per page

offset

query · integer · default 0 · 0-∞

Number of results to skip

Responses

200

Paginated list of events

400

Invalid request parameters

401

Missing or invalid API key. Supply `Authorization: Bearer <key>` (recommended) or `X-Api-Key: <key>`.

403

Request is authenticated but not entitled. `transport=live` requires `plan_limits.live_enabled=true` and can return `live_not_enabled`; odds detail requests can also return `forbidden` when no product-verified bookmaker entitlement exists for the requested sport and transport.

429

Rate limit or monthly quota exceeded

503

Rate-limit backend unavailable (fail-closed)

GET/api/v1/events/{eventId}/oddsAuth: Required

Get odds for a specific event

Returns all available odds grouped by market type, with bookmaker odds nested per market. Results require entitlement and product-verified coverage for the requested transport; source_limited and live_beta sources are not returned from broad customer odds surfaces.

Parameters

eventIdrequired

path · string · /^[0-9]+$/

Numeric event id from `/events`. Non-numeric values return `400 validation_failed`; well-formed but unknown ids return `404 not_found`.

bookmaker

query · array

Optional comma-separated bookmaker slug filter. Blank or duplicate entries are rejected. Results still require entitlement and product-verified coverage for the requested transport.

transport

query · string · rest | live · default rest

Single product channel to query. `rest` and `live` are API products, not event phase labels.

Responses

200

Odds for the event

400

Invalid request parameters

401

Missing or invalid API key. Supply `Authorization: Bearer <key>` (recommended) or `X-Api-Key: <key>`.

403

Request is authenticated but not entitled. `transport=live` requires `plan_limits.live_enabled=true` and can return `live_not_enabled`; odds detail requests can also return `forbidden` when no product-verified bookmaker entitlement exists for the requested sport and transport.

404

Numeric eventId is well-formed but the event does not exist (or is not visible to this organization).

429

Rate limit or monthly quota exceeded

503

Rate-limit backend unavailable (fail-closed)

GET/api/v1/bookmakersAuth: Required

List all available bookmakers

Lists entitled bookmakers with product-verified coverage for the requested transport. Broad bookmaker lists exclude source_limited and live_beta sources.

Parameters

sport

query · string · football | tennis | basketball | ice_hockey | handball | baseball | darts | australian_rules | rugby | cricket | combat_sport | volleyball | american_football | golf | motorsport | cycling | table_tennis | snooker | badminton | esports | waterpolo | winter_sport · default football

Filter by sport slug (default: football)

transport

query · string · rest | live · default rest

Single product channel to query. `rest` and `live` are API products, not event phase labels.

limit

query · integer · default 50 · 1-500

Maximum number of results per page

offset

query · integer · default 0 · 0-∞

Number of results to skip

Responses

200

Paginated list of bookmakers

400

Invalid request parameters

401

Missing or invalid API key. Supply `Authorization: Bearer <key>` (recommended) or `X-Api-Key: <key>`.

403

Request is authenticated but not entitled. `transport=live` requires `plan_limits.live_enabled=true` and can return `live_not_enabled`; odds detail requests can also return `forbidden` when no product-verified bookmaker entitlement exists for the requested sport and transport.

429

Rate limit or monthly quota exceeded

503

Rate-limit backend unavailable (fail-closed)

GET/api/v1/specAuth: Required

Download the OpenAPI 3.1 contract for the v1 API

Returns the same machine-readable OpenAPI 3.1 specification that powers the developer portal at `/docs`. This endpoint is public — no API key is required — and is served with `Access-Control-Allow-Origin: *` and `Cache-Control: public, max-age=300` so client generators and third-party API tools can fetch it directly.

Responses

200

OpenAPI 3.1 specification document for this API