Skip to Content
API ReferenceDeep Links

Deep Links

Generate sportsbook deep links from opportunity hash IDs. Deep links take users directly to the relevant bet slip or event page on a sportsbook’s website, enabling one-click bet placement from your application.

Endpoints

MethodPathDescription
GET/api/v1/deeplinksGet deep links for a single opportunity
POST/api/v1/deeplinks/batchGet deep links for up to 100 opportunities
GET/api/v1/deeplink/{id}Redirect to a sportsbook (public, no auth)

Authentication

Requires API key for GET /deeplinks and POST /deeplinks/batch. Available to Hobby tier and above.

The redirect endpoint (GET /deeplink/{id}) is public and does not require authentication — the opaque ID prevents enumeration.

Deep links are generated from opportunity data. The id parameter is the hash_id field returned by the +EV, Arbitrage, Middles, and Low Hold endpoints.


GET /api/v1/deeplinks

Returns deep links for a single opportunity, keyed by sportsbook.

Query Parameters

ParameterTypeDefaultDescription
idstringrequiredOpportunity hash ID (16-character hex string, e.g., 77b0749a1faae425)
statestringpaUS state code for state-specific sportsbook URLs (e.g., nj, ny, il)

Example Requests

curl -X GET "https://api.sharpapi.io/api/v1/deeplinks?id=77b0749a1faae425&state=nj" \ -H "X-API-Key: YOUR_API_KEY"

Response

Success (200)

{ "success": true, "data": { "id": "77b0749a1faae425", "deep_links": { "draftkings": "https://sportsbook.draftkings.com/event/12345?outcomes=abc123", "fanduel": "https://nj.sportsbook.fanduel.com/addToBetslip?marketId=m456&selectionId=s789" } }, "meta": { "updated_at": "2026-02-11T12:00:15.000Z" } }

Error Responses

400 Invalid ID format

{ "error": { "code": "invalid_request", "message": "Invalid id format. Expected 16-character hex string." } }

403 Tier restricted

{ "error": { "code": "tier_restricted", "message": "Deep links requires hobby tier or higher", "tier": "free", "required_tier": "hobby" } }

404 Not found

{ "error": { "code": "not_found", "message": "Deep link not found for this opportunity" } }

Response Headers

X-RateLimit-Limit: 120 X-RateLimit-Remaining: 119 X-RateLimit-Reset: 1737853200 X-Data-Delay: 0 X-Request-Id: req_dl_abc123 Cache-Control: public, s-maxage=10, max-age=5

POST /api/v1/deeplinks/batch

Returns deep links for multiple opportunities in a single request. IDs that are not found return null.

Request Body

{ "ids": ["77b0749a1faae425", "abc1234567890def", "def9876543210abc"], "state": "nj" }
FieldTypeDefaultDescription
idsstring[]requiredArray of opportunity hash IDs (1-100 items, each 16-character hex)
statestringpaUS state code for state-specific sportsbook URLs

Example Requests

curl -X POST "https://api.sharpapi.io/api/v1/deeplinks/batch" \ -H "X-API-Key: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{"ids": ["77b0749a1faae425", "abc1234567890def"], "state": "nj"}'

Response

Success (200)

{ "success": true, "data": { "77b0749a1faae425": { "draftkings": "https://sportsbook.draftkings.com/event/12345?outcomes=abc123", "fanduel": "https://nj.sportsbook.fanduel.com/addToBetslip?marketId=m456&selectionId=s789" }, "abc1234567890def": null, "def9876543210abc": { "betmgm": "https://nj.betmgm.com/en/sports/events/67890?options=opt123&type=Single" } }, "meta": { "updated_at": "2026-02-11T12:00:15.000Z", "count": 3, "found": 2 } }

Error Responses

400 Missing IDs

{ "error": { "code": "invalid_request", "message": "Missing or empty \"ids\" array in request body" } }

400 Batch size exceeded

{ "error": { "code": "invalid_request", "message": "Maximum batch size is 100 ids" } }

400 Invalid ID format

{ "error": { "code": "invalid_request", "message": "Invalid id format. Expected 16-character hex strings. Invalid: xyz123" } }

Response Headers

X-RateLimit-Limit: 120 X-RateLimit-Remaining: 119 X-RateLimit-Reset: 1737853200 X-Data-Delay: 0 X-Request-Id: req_dlb_xyz789 Cache-Control: public, s-maxage=10, max-age=5

GET /api/v1/deeplink/{id}

Redirects the user directly to the sportsbook page for a given odds ID or opportunity hash ID. This is a public endpoint — no API key required.

Use this endpoint in <a href> links to send users directly to a sportsbook. The response is a 302 Found redirect, not JSON.

Path Parameters

ParameterTypeDescription
idstringRequired. Either a numeric odds ID (e.g., 135102220304350) or an opportunity hash ID (16-char hex, e.g., 77b0749a1faae425)

Query Parameters

ParameterTypeDefaultDescription
statestringpaUS state code for state-specific URLs
bookstringSportsbook filter (for multi-book opportunities like middles/arbitrage)
fallbackstringURL to redirect to if the ID is not found

Example

<!-- In your application HTML --> <a href="https://api.sharpapi.io/api/v1/deeplink/77b0749a1faae425?state=nj&book=draftkings"> Bet on DraftKings </a>

Response

Success (302 Found)

HTTP/1.1 302 Found Location: https://sportsbook.draftkings.com/event/12345?outcomes=abc123 Cache-Control: private, max-age=60 X-Deep-Link-Type: outcome

The X-Deep-Link-Type header indicates the link specificity:

ValueDescription
outcomeDirect link to a specific bet selection (with selection ID)
eventLink to the event page (no specific selection)
homepageFallback to the sportsbook homepage

Error Responses

404 Not found

{ "error": { "code": "not_found", "message": "Deep link ID not found" } }

If the fallback query parameter is provided and the ID is not found, the endpoint redirects to the fallback URL instead of returning a 404 JSON response.


Single Response

FieldTypeDescription
data.idstringThe opportunity hash ID
data.deep_linksobjectMap of sportsbook ID to deep link URL
meta.updated_atstringISO 8601 timestamp of the opportunity data

Batch Response

FieldTypeDescription
dataobjectMap of hash ID to deep links object (or null if not found)
meta.countnumberTotal number of IDs requested
meta.foundnumberNumber of IDs with at least one deep link
meta.updated_atstringISO 8601 timestamp

Supported Sportsbooks

Deep links are generated for sportsbooks that support direct linking. State-specific books (marked with *) use the state parameter to generate the correct regional URL.

SportsbookLink TypeState-Specific
DraftKingsOutcome/EventNo
FanDuelOutcome/EventYes*
BetMGMOutcome/EventYes*
CaesarsOutcome/EventYes*
BetRiversEventYes*
PinnacleEventNo
bet365EventNo
BetwayEventNo
FanaticsEventNo
NovigEventNo

Outcome links open the sportsbook with the specific bet pre-selected in the bet slip. Event links open the event page where the user can find the market manually. Outcome links provide a better user experience when available.

  • +EV Opportunities - Source of hash_id values for +EV bets
  • Arbitrage - Source of hash_id values for arbitrage opportunities
  • Middles - Source of hash_id values for middle opportunities
  • Low Hold - Source of hash_id values for low-hold opportunities
Last updated on