Mapping OpticOdds IDs to ProphetX IDs

Translate OpticOdds provider IDs to ProphetX IDs, and the reverse, for sport events, players, competitors, markets, and strikes.

If you already integrate with OpticOdds for sports data, GET /v4/mm/get_mappings translates their IDs into ProphetX IDs — or the other direction — so you don't need to maintain your own mapping table. provider is the only query parameter that names the data source, and opticodds is the only value it accepts today; more providers may be added later.


Request

GET /partner/v4/mm/get_mappings

ParamRequiredNotes
providerYData provider. Only opticodds today.
entity_typeYsport_event, player, competitor, market, or strike.
event_idRequired for market/strike, not allowed otherwiseThe ProphetX event ID to scope the lookup to.
provider_idsNComma-separated OpticOdds IDs, up to 100 unique (duplicates are dropped before the cap is checked).
prophetx_idsNComma-separated ProphetX IDs, up to 100 unique. Not valid for entity_type=strike — use prophetx_strike_ids instead.
prophetx_strike_idsNComma-separated ProphetX strike IDs, up to 100 unique. Only valid for entity_type=strike.
limitNDefault 20, max 1000.
next_cursorNFrom the previous response's next_cursor — treat it as opaque.

If you set both a provider_ids filter and a prophetx_ids (or prophetx_strike_ids) filter on the same call, a mapping must match both lists, not either — the filters are ANDed together.

Results are ordered by provider_id, descending.


Response

{
  "data": {
    "mappings": [
      {
        "provider": "opticodds",
        "entity_type": "market",
        "provider_id": "point_spread",
        "prophetx_id": 219,
        "event_id": 10078829
      }
    ],
    "next_cursor": "<opaque string, omitted on the last page>"
  }
}

prophetx_id is set for sport_event, player, competitor, and market. A strike has no single integer ID — use prophetx_strike_id instead, which matches the strike_id you already see on market selections.

Markets and strikes are only mapped for events that actually came from the given provider, and only once that market or strike has a provider key. Don't expect a mapping for every ProphetX market — only the ones ProphetX actually sourced from OpticOdds.


What provider_id and the ProphetX ID mean, by entity_type

entity_typeThe ProphetX side (prophetx_id / prophetx_strike_id)The OpticOdds side (provider_id)
sport_eventthe sport event IDthe OpticOdds fixture ID
playerthe player ID returned by get_playersthe OpticOdds player ID
competitorthe competitor ID — the same value as competitor_id on market selectionsthe OpticOdds team ID, or, in individual sports such as tennis, the OpticOdds player ID
marketthe market ID within the event given by event_iddepends on the market shape — see below
strikethe strike_id on market selections (via prophetx_strike_id)<fixture_id>:<market provider_id>:<outcome>:<points> — see below

Market provider_id formats

One OpticOdds market can become more than one ProphetX market, so the format depends on the shape:

Market shapeprovider_id formatExample
A plain main marketthe OpticOdds market_id directlypoint_spread
A player or team prop<OpticOdds player/team ID>:<OpticOdds market_id>:<ProphetX sub type><player_id>:player_points:player_total_points
3-way moneyline (splits into three separate ProphetX markets)<home team ID>:<market_id>, <away team ID>:<market_id>, draw:<market_id>draw:moneyline_3-way
Tennis "player to win a set" (one market per player)<OpticOdds competitor ID>:player_to_win_a_set<competitor_id>:player_to_win_a_set

Strike provider_id format

<fixture_id>:<market provider_id>:<outcome>:<points>
  • outcome is lowercase: over, under, home, away, yes, or no.
  • points is the strike, to one decimal. A market with no strike value — moneyline, or a yes/no market — uses 0.0.

Examples:

  • <fixture_id>:point_spread:home:-3.5
  • <fixture_id>:draw:moneyline_3-way:yes:0.0

Pagination

Pass the next_cursor from a response back in as the next_cursor query param to fetch the next page. The last page has no next_cursor.


Did this page help you?