Deeplinker — Sportsbook support

Single-bet, parlay and futures deep-link coverage, generated directly from the engine on each release.

release 2026.08.19.1 · commit d524aff · generated 2026-08-18 23:25 UTC
27
Parlay books
25
BET (adds to slip)
2
GAME (link only)
BET  parlay link adds every leg to the slip GAME  link opens but doesn't add to slip  no parlay link on that platform

These are the books GetParlayDeepLink can build a multi-leg (parlay) betslip link for. Books not listed have no parlay deep link.

Sportsbook Desktop iOS Android
BetMGMbetmgm BET BET BET
BetMGM (UK)betmgm_uk_ BET GAME GAME
BetRiversbetrivers BET GAME GAME
BetRivers (New York)betrivers_new_york_ BET GAME GAME
Blue Bookblue_book BET BET BET
Borgataborgata BET GAME GAME
Bwinbwin BET GAME GAME
Caesarscaesars BET BET BET
DraftKingsdraftkings BET BET BET
Fanaticsfanatics BET BET
FanDuelfanduel BET BET BET
FanDuel (Ontario)fanduel_ontario_ BET BET BET
Hard Rockhard_rock GAME BET BET
Hard Rock (Florida)hard_rock_florida_ GAME BET BET
Hard Rock (Illinois)hard_rock_illinois_ GAME BET BET
Novignovig BET BET GAME
Paddy Powerpaddy_power BET GAME GAME
PartyPokerpartypoker BET GAME GAME
PrizePicksprizepicks BET BET BET
PrizePicks (5/6-Pick Flex)prizepicks_5_or_6_pick_flex_ BET BET BET
Prophet Xprophet_x GAME BET BET
Sleepersleeper BET BET
Sportingbetsportingbet BET GAME GAME
Sports Interactionsports_interaction BET GAME GAME
theScorethescore BET BET BET
Betway (Alaska)betway_alaska_ GAME GAME GAME
SugarHousesugarhouse GAME GAME GAME
No sportsbooks match that filter.
8
Futures books
8
BET (adds to slip)
0
GAME (link only)
BET  futures link adds the selection to the slip GAME  link opens but doesn't add to slip  no futures link on that platform

These are the books GetDeepLinkFuture can build a futures (outright / championship-winner) link for. Futures use their own URL shapes — there is no event page to land on — so coverage is narrower than single bets, and books not listed have no futures deep link.

Sportsbook Desktop iOS Android Notes
Betfairbetfair BET BET BET
BetMGMbetmgm BET BET BET
Caesarscaesars BET BET BET Not live-tested — no Caesars futures odds yet
DraftKingsdraftkings BET BET BET
Fanaticsfanatics BET BET Not live-tested — event id still null in the futures feed
FanDuelfanduel BET BET BET
FanDuel (Ontario)fanduel_ontario_ BET BET BET
Paddy Powerpaddy_power BET BET BET
No sportsbooks match that filter.

Base URL https://dl.oddsjam.com — JSON in, JSON out, no authentication. In-cluster callers can skip the edge and use http://deeplinker:8090.

Every link-returning response is the same object: mobile and desktop convenience URLs plus a urls map carrying, per platform, the URL and whether it adds_to_slip / is direct_bet_enabled. deep_link is null — never an error — when the book is unsupported or the odd lacks the identifiers that book needs, so always null-check before rendering a button.

Pass state to resolve <STATE> / <COUNTRY> / <PARTNER_ID> placeholders and per-locale domains; omit it to get raw URLs and localize yourself. GET responses are edge-cacheable for days (a link only changes when new sportsbook identifiers are written for the odd); POST responses never are, so prefer the GET endpoints on hot paths. Errors are {"error": "…"} with no-store. The & in a URL arrives as \u0026 — Go's JSON encoder escapes it and any decoder puts it back.

Odds deep links

Single-bet links for game odds. Resolve by odd id when the odd lives in the odds Redis, or POST the metadata you already hold and skip the lookup entirely.

GET /v1/deeplink

Resolve one odd id and return its per-platform links. Edge-cached, so this is the endpoint to hit from a client.

FieldTypeDescription
odd_id REQUIRED string Shaped game_id:sportsbook:market:bet_name. Percent-encode it — bet names contain +.
state string Locale to resolve <STATE> / <COUNTRY> / <PARTNER_ID> placeholders and per-locale domains (nj, pa, ca-on, uk, br-br…). Omit to get raw URLs with placeholders intact and localize per user.
include_adds_to_slip bool Default true. false drops the per-platform adds_to_slip / direct_bet_enabled flags from urls.
Request
curl -s 'https://dl.oddsjam.com/v1/deeplink?odd_id=12345:draftkings:player_points:lebron_james_over_25%2B5&state=nj'
Response
{
  "odd_id": "12345:draftkings:player_points:lebron_james_over_25+5",
  "deep_link": {
    "mobile": "dksb://sb/addbet/0QA123456",
    "desktop": "https://sportsbook.draftkings.com/event/32219541?outcomes=0QA123456",
    "urls": {
      "ios": {
        "url": "dksb://sb/addbet/0QA123456",
        "adds_to_slip": true,
        "direct_bet_enabled": false
      },
      "android": {
        "url": "dksb://sb/addbet/0QA123456",
        "adds_to_slip": true,
        "direct_bet_enabled": false
      },
      "desktop": {
        "url": "https://sportsbook.draftkings.com/event/32219541?outcomes=0QA123456",
        "adds_to_slip": true,
        "direct_bet_enabled": false
      }
    }
  }
}
POST /v1/deeplinks

Resolve up to 500 odd ids in one pipelined Redis round trip. Unknown ids come back present with a null link.

FieldTypeDescription
odd_ids REQUIRED string[] Max 500 per request.
state string Locale to resolve <STATE> / <COUNTRY> / <PARTNER_ID> placeholders and per-locale domains (nj, pa, ca-on, uk, br-br…). Omit to get raw URLs with placeholders intact and localize per user.
include_adds_to_slip bool Default true. false drops the per-platform adds_to_slip / direct_bet_enabled flags from urls.
Request
curl -s https://dl.oddsjam.com/v1/deeplinks \
  -H 'Content-Type: application/json' \
  -d '{"odd_ids": ["12345:draftkings:player_points:lebron_james_over_25+5",
                   "67890:fanduel:moneyline:miami_heat"],
       "state": "nj"}'
Response
{
  "deep_links": {
    "12345:draftkings:player_points:lebron_james_over_25+5": {
      "mobile": "dksb://sb/addbet/0QA123456",
      "desktop": "https://sportsbook.draftkings.com/event/32219541?outcomes=0QA123456",
      "urls": {
        "ios": {
          "url": "dksb://sb/addbet/0QA123456",
          "adds_to_slip": true,
          "direct_bet_enabled": false
        },
        "android": {
          "url": "dksb://sb/addbet/0QA123456",
          "adds_to_slip": true,
          "direct_bet_enabled": false
        },
        "desktop": {
          "url": "https://sportsbook.draftkings.com/event/32219541?outcomes=0QA123456",
          "adds_to_slip": true,
          "direct_bet_enabled": false
        }
      }
    },
    "67890:fanduel:moneyline:miami_heat": null
  }
}
POST /v1/generate

Build a link from metadata you supply — no Redis lookup. Everything but sportsbook is optional; each book uses the subset of ids it needs.

FieldTypeDescription
sportsbook REQUIRED string Any spelling of the book name; it is normalized ("DraftKings", "draft kings", "draftkings").
deep_link_info object Sportsbook identifiers: sportsbook_event_id, sportsbook_full_event_id, sportsbook_market_id, sportsbook_selection_id, line_id, canonical_url.
sport, league, home_team, away_team, market_name, bet_name string Odd context; books that build search or event URLs need these.
game_start_date string ISO-8601 kickoff, used by books whose URL differs pre-game vs live.
is_live bool Overrides the game_start_date comparison for those books.
kind string "odd" (default) or "future" — see Future deep links.
state string Locale to resolve <STATE> / <COUNTRY> / <PARTNER_ID> placeholders and per-locale domains (nj, pa, ca-on, uk, br-br…). Omit to get raw URLs with placeholders intact and localize per user.
include_adds_to_slip bool Default true. false drops the per-platform adds_to_slip / direct_bet_enabled flags from urls.
Request
curl -s https://dl.oddsjam.com/v1/generate \
  -H 'Content-Type: application/json' \
  -d '{"sportsbook": "FanDuel",
       "deep_link_info": {"sportsbook_market_id": "42.395971",
                          "sportsbook_selection_id": "1721338703"},
       "sport": "basketball",
       "league": "NBA",
       "market_name": "Moneyline",
       "bet_name": "Philadelphia 76ers",
       "state": "nj"}'
Response
{
  "deep_link": {
    "mobile": "fanduelsportsbook://account.sportsbook.fanduel.com/sportsbook/addToBetslip?marketId=42.395971\u0026selectionId=1721338703",
    "desktop": "https://nj.sportsbook.fanduel.com/addToBetslip?marketId=42.395971\u0026selectionId=1721338703",
    "urls": {
      "ios": {
        "url": "fanduelsportsbook://account.sportsbook.fanduel.com/sportsbook/addToBetslip?marketId=42.395971\u0026selectionId=1721338703",
        "adds_to_slip": true,
        "direct_bet_enabled": false
      },
      "android": {
        "url": "fanduelsportsbook://account.sportsbook.fanduel.com/sportsbook/addToBetslip?marketId=42.395971\u0026selectionId=1721338703",
        "adds_to_slip": true,
        "direct_bet_enabled": false
      },
      "desktop": {
        "url": "https://nj.sportsbook.fanduel.com/addToBetslip?marketId=42.395971\u0026selectionId=1721338703",
        "adds_to_slip": true,
        "direct_bet_enabled": false
      }
    }
  }
}

Future deep links

Outright / championship-winner links. Futures have their own registry and URL shapes — there is no event page to land on — so coverage is narrower than single bets; see the Future DeepLink tab.

GET /v1/future-deeplink

Resolve one future id from the futures metadata in Redis.

FieldTypeDescription
future_id REQUIRED string Shaped league:sportsbook:market:bet_name.
state string Locale to resolve <STATE> / <COUNTRY> / <PARTNER_ID> placeholders and per-locale domains (nj, pa, ca-on, uk, br-br…). Omit to get raw URLs with placeholders intact and localize per user.
include_adds_to_slip bool Default true. false drops the per-platform adds_to_slip / direct_bet_enabled flags from urls.
Request
curl -s 'https://dl.oddsjam.com/v1/future-deeplink?future_id=nba:draftkings:championship_winner:boston_celtics&state=nj'
Response
{
  "future_id": "nba:draftkings:championship_winner:boston_celtics",
  "deep_link": {
    "mobile": "https://sportsbook.draftkings.com/event/31445?outcomes=0QA987654",
    "desktop": "https://sportsbook.draftkings.com/event/31445?outcomes=0QA987654",
    "urls": {
      "ios": {
        "url": "https://sportsbook.draftkings.com/event/31445?outcomes=0QA987654",
        "adds_to_slip": true,
        "direct_bet_enabled": false
      },
      "android": {
        "url": "https://sportsbook.draftkings.com/event/31445?outcomes=0QA987654",
        "adds_to_slip": true,
        "direct_bet_enabled": false
      },
      "desktop": {
        "url": "https://sportsbook.draftkings.com/event/31445?outcomes=0QA987654",
        "adds_to_slip": true,
        "direct_bet_enabled": false
      }
    }
  }
}
POST /v1/future-deeplinks

Batch futures resolve, up to 500 ids, same envelope as the odds batch.

FieldTypeDescription
future_ids REQUIRED string[] Max 500 per request.
state string Locale to resolve <STATE> / <COUNTRY> / <PARTNER_ID> placeholders and per-locale domains (nj, pa, ca-on, uk, br-br…). Omit to get raw URLs with placeholders intact and localize per user.
include_adds_to_slip bool Default true. false drops the per-platform adds_to_slip / direct_bet_enabled flags from urls.
Request
curl -s https://dl.oddsjam.com/v1/future-deeplinks \
  -H 'Content-Type: application/json' \
  -d '{"future_ids": ["nba:draftkings:championship_winner:boston_celtics"], "state": "nj"}'
Response
{
  "deep_links": {
    "nba:draftkings:championship_winner:boston_celtics": {
      "mobile": "https://sportsbook.draftkings.com/event/31445?outcomes=0QA987654",
      "desktop": "https://sportsbook.draftkings.com/event/31445?outcomes=0QA987654",
      "urls": {
        "ios": {
          "url": "https://sportsbook.draftkings.com/event/31445?outcomes=0QA987654",
          "adds_to_slip": true,
          "direct_bet_enabled": false
        },
        "android": {
          "url": "https://sportsbook.draftkings.com/event/31445?outcomes=0QA987654",
          "adds_to_slip": true,
          "direct_bet_enabled": false
        },
        "desktop": {
          "url": "https://sportsbook.draftkings.com/event/31445?outcomes=0QA987654",
          "adds_to_slip": true,
          "direct_bet_enabled": false
        }
      }
    }
  }
}
POST /v1/generate

Same body as the odds generate endpoint, with "kind": "future" — it routes to the futures builder instead of the game-odds one.

FieldTypeDescription
kind REQUIRED string Must be "future" here; omitted or "odd" builds a game-odds link.
sportsbook REQUIRED string Futures books only. The futures feed's "fd" shorthand is accepted as input and always answers as fanduel.
Request
curl -s https://dl.oddsjam.com/v1/generate \
  -H 'Content-Type: application/json' \
  -d '{"kind": "future",
       "sportsbook": "DraftKings",
       "deep_link_info": {"sportsbook_event_id": "31445",
                          "sportsbook_selection_id": "0QA987654"},
       "league": "NBA",
       "market_name": "Championship Winner",
       "bet_name": "Boston Celtics",
       "state": "nj"}'
Response
{
  "deep_link": {
    "mobile": "https://sportsbook.draftkings.com/event/31445?outcomes=0QA987654",
    "desktop": "https://sportsbook.draftkings.com/event/31445?outcomes=0QA987654",
    "urls": {
      "ios": {
        "url": "https://sportsbook.draftkings.com/event/31445?outcomes=0QA987654",
        "adds_to_slip": true,
        "direct_bet_enabled": false
      },
      "android": {
        "url": "https://sportsbook.draftkings.com/event/31445?outcomes=0QA987654",
        "adds_to_slip": true,
        "direct_bet_enabled": false
      },
      "desktop": {
        "url": "https://sportsbook.draftkings.com/event/31445?outcomes=0QA987654",
        "adds_to_slip": true,
        "direct_bet_enabled": false
      }
    }
  }
}

Parlay deep links

One link that puts several selections on the same betslip, for the books listed on the Parlay DeepLink tab. Legs are always caller-supplied — there is no id-resolving variant.

POST /v1/parlay-deeplink

Build a multi-leg betslip link. A single-leg parlay yields the same link as the single-bet endpoint for that book.

FieldTypeDescription
sportsbook REQUIRED string Book must support parlays, else deep_link is null (still 200).
legs REQUIRED object[] One deep_link_info map per leg, same shape /v1/generate takes. Max 500.
sport string Some books key the betslip path off the sport.
state string Locale to resolve <STATE> / <COUNTRY> / <PARTNER_ID> placeholders and per-locale domains (nj, pa, ca-on, uk, br-br…). Omit to get raw URLs with placeholders intact and localize per user.
include_adds_to_slip bool Default true. false drops the per-platform adds_to_slip / direct_bet_enabled flags from urls.
Request
curl -s https://dl.oddsjam.com/v1/parlay-deeplink \
  -H 'Content-Type: application/json' \
  -d '{"sportsbook": "FanDuel",
       "sport": "basketball",
       "state": "nj",
       "legs": [{"sportsbook_market_id": "42.395971",
                 "sportsbook_selection_id": "1721338703"},
                {"sportsbook_market_id": "42.395104",
                 "sportsbook_selection_id": "1721254199"}]}'
Response
{
  "deep_link": {
    "mobile": "fanduelsportsbook://account.sportsbook.fanduel.com/sportsbook/addToBetslip?marketId[0]=42.395971\u0026selectionId[0]=1721338703\u0026marketId[1]=42.395104\u0026selectionId[1]=1721254199",
    "desktop": "https://nj.sportsbook.fanduel.com/addToBetslip?marketId[0]=42.395971\u0026selectionId[0]=1721338703\u0026marketId[1]=42.395104\u0026selectionId[1]=1721254199",
    "urls": {
      "ios": {
        "url": "fanduelsportsbook://account.sportsbook.fanduel.com/sportsbook/addToBetslip?marketId[0]=42.395971\u0026selectionId[0]=1721338703\u0026marketId[1]=42.395104\u0026selectionId[1]=1721254199",
        "adds_to_slip": true,
        "direct_bet_enabled": false
      },
      "android": {
        "url": "fanduelsportsbook://account.sportsbook.fanduel.com/sportsbook/addToBetslip?marketId[0]=42.395971\u0026selectionId[0]=1721338703\u0026marketId[1]=42.395104\u0026selectionId[1]=1721254199",
        "adds_to_slip": true,
        "direct_bet_enabled": false
      },
      "desktop": {
        "url": "https://nj.sportsbook.fanduel.com/addToBetslip?marketId[0]=42.395971\u0026selectionId[0]=1721338703\u0026marketId[1]=42.395104\u0026selectionId[1]=1721254199",
        "adds_to_slip": true,
        "direct_bet_enabled": false
      }
    }
  }
}

Capabilities & health

The same tables this page renders, served as JSON — use them to pick the button label (BET vs GAME) per book and platform instead of hardcoding a list. The book lists below are real but truncated with … for readability; the endpoints return them in full.

GET /v1/books

Every book with a registered builder, per bet kind. Names are always canonical.

Request
curl -s https://dl.oddsjam.com/v1/books
Response
{
  "books": [
    "1xbet",
    "4cx",
    "888sport",
    "action_24_7",
    "atg",
    "…"
  ],
  "future_books": [
    "betfair",
    "betmgm",
    "caesars",
    "draftkings",
    "fanatics",
    "…"
  ],
  "parlay_books": [
    "betmgm",
    "betmgm_uk_",
    "betrivers",
    "betrivers_new_york_",
    "betway_alaska_",
    "…"
  ]
}
GET /v1/deeplink-books

Per-platform capability lists. future_adds_to_slip_books is intersected with the futures registry, so it never claims a book that can't build a futures link.

FieldTypeDescription
platform string desktop (default), ios or android.
Request
curl -s 'https://dl.oddsjam.com/v1/deeplink-books?platform=ios'
Response
{
  "one_click_books": [
    "1xbet",
    "4cx",
    "888sport",
    "action_24_7",
    "…"
  ],
  "adds_to_slip_books": [
    "betfair_future",
    "betmgm",
    "blue_book",
    "caesars",
    "…"
  ],
  "parlay_adds_to_slip_books": [
    "betmgm",
    "blue_book",
    "caesars",
    "draftkings",
    "…"
  ],
  "future_adds_to_slip_books": [
    "betfair",
    "betmgm",
    "caesars",
    "draftkings",
    "…"
  ]
}
GET /health

Liveness plus Redis reachability; 503 when Redis is unreachable. Never cached.

Request
curl -s https://dl.oddsjam.com/health
Response
{
  "status": "ok"
}