parlays

Same-Game Parlay Odds

Changed on

Price a correlated same-game parlay (SGP) from selected oddsIds.

All oddsIds must belong to one fixture. The legs are priced by the bookmaker itself, so price reflects the correlation between them; singlesPrice is the naive product and the gap is the correlation margin. Several bookmakers may be requested at once and are returned side by side.

Returns ONE fixture view with an sgp section added.

Max 20 legs per request.

get/fixtures/odds/sgp

Request

  • Base URL
    https://v5.oddspapi.io/en
  • URL
    https://v5.oddspapi.io/en/fixtures/odds/sgp
  • Auth
    • API key in query parameter apiKey
    • or API key in header X-API-Key

Query parameters

oddsIdsstring required

Comma- or space-separated oddsIds in the form {fixtureId}:{bookmaker}:{outcomeId}:{playerId}. Duplicates are removed and the list is sorted. Each bookmaker's legs form one parlay. Max 20 legs. All must share one fixture.

Response

One FixtureSgpResponse for the fixture the legs belong to.

fixtureIdstring required

Fixture identifier: {prefix}{sportId}{tournamentId}{nativeId} — see Core Concepts → ID structure.

reissuedFixtureIdstring nullable required

The fixture that replaced this one, when a cancelled fixture has been re-listed under a new id. null is the normal value: it is only ever populated on a cancelled fixture (status.statusId 3) whose replacement already exists in the feed, so permanent cancellations stay null, and a fixture can go from null to an id after you first saw it cancelled. One hop: if the replacement was itself cancelled, follow its own reissuedFixtureId.

previousFixtureIdstring nullable required

The inverse of reissuedFixtureId: the cancelled fixture this one replaced. Unlike the forward pointer this sits on a normal scheduled or live fixture, so a fixture carries its own history even if you never saw the cancelled one. null is the normal value. One hop and one predecessor at most — follow it repeatedly to walk back to the start of a chain, where a fixture postponed twice gives A → B → C and B carries both previousFixtureId: A and reissuedFixtureId: C. Cleared again if a postponement is reverted.

startTimeinteger required

Epoch seconds (UTC).

trueStartTimestring nullable

Actual start time (ISO 8601), once known — may differ from the scheduled startTime.

trueEndTimestring nullable

Actual end time (ISO 8601), once known.

scoresobject required

Score rows keyed by period (result, p1, …).

expectedPeriodsinteger nullable

Number of regular periods expected for this fixture — use it (with periodLength) to interpret period keys per sport/league.

periodLengthinteger nullable

Length of a regular period in minutes.

externalProvidersExternalProviders required
bookmakersobject required

bookmakerSlug -> BookmakerFixtureMeta, for the requested bookmakers only.

oddsOddsByBookmaker required
missingOddsIdsstring[]

Requested oddsIds of this fixture that could not be found (unknown bookmaker, unknown or expired oddsId). Present only when at least one leg is missing.

sgpSgpByBookmaker required

bookmakerSlug -> (parlayId -> SgpEntry). parlayId is built exactly as on /fixtures/odds/parlay, so the two are directly comparable. A bookmaker is omitted — leaving {} — when its legs were not all found, or when they were but its own pricing service could not quote the parlay (in which case there is no missingOddsIds).

Changes