Generate betting offers for an article
Available for: Enterprise API.
Analyze an article URL or inline markdown and return matched betting offers, sportsbook odds, deep links, and supporting text for an embedded widget. Use the partner books endpoint to discover sportsbook IDs, then requestedBookIds and bookOrder to select and order the results.
Analyze article content and return matched betting offers that can be embedded in a publisher-owned widget. Provide either url for Gambly to fetch the article, or markdown for inline article text. Responses include partner metadata, matched bets, sportsbook odds, deeplinks, evidence snippets, cache metadata, and worker telemetry. Use GET /api/v1/article-widgets/{partnerSlug}/books to discover sportsbook IDs, then pass requestedBookIds and bookOrder to control which books are returned and how they are ordered. forceRefresh bypasses cached results; skipCache prevents cache lookup for the request. Use X-Api-Key to authenticate the request.
Path Parameters
- Type: stringpartner
Slug requiredPartner slug supplied during Gambly onboarding.
Query Parameters
- Type: stringurl
Article or video URL to analyze. Either url or markdown is required.
- Type: stringmarkdown
Raw article markdown. Either markdown or url is required.
- Type: integerFormat: int32max
Bets Maximum number of unique betting entities to return.
- Type: stringleague
Hint Optional league hint such as NFL, NBA, or Premier League.
- Type: booleanforce
Refresh Bypass cache and force fresh worker analysis.
- Type: booleanskip
Cache Skip cache lookup for this request.
- Type: booleanis
Mobile Device Generate mobile-optimized sportsbook deep links when possible.
- Type: stringrequested
Book Ids Comma-separated sportsbook IDs to include.
- Type: stringbook
Order Comma-separated sportsbook IDs defining preferred result order.
- Type: booleaninclude
Implicit Bets Include bets inferred from article context.
- Type: integerFormat: int32inline
Widget Cap Maximum number of inline widgets to generate.
- Type: stringapi
-version
Headers
- Type: stringX
- A P I - Version
Responses
- application/json
- application/json
- application/json
- application/json
- application/json
- application/json
curl 'https://data.unabated.com/api/v1/article-widgets/demo-partner?url=https%3A%2F%2Fexample.com%2Fmlb-preview-article&markdown=Shohei%20Ohtani%20could%20hit%20a%20home%20run%20tonight.&maxBets=1&leagueHint=MLB&forceRefresh=false&skipCache=true&isMobileDevice=false&requestedBookIds=1%2C2&bookOrder=1%2C2&includeImplicitBets=false&inlineWidgetCap=1' \
--header 'X-Api-Key: YOUR_SECRET_TOKEN'
{
"partner": {
"id": 1,
"slug": "string",
"displayName": "string",
"status": "string",
"allowCreate": true
},
"bets": [
{
"betOffer": {
"id": 1,
"price": null,
"generatedEdge": null,
"points": null,
"betOpeningPoints": null,
"betOpeningPrice": null,
"sourceData": null,
"feedUniqueId": null,
"leagueId": 1,
"leagueName": null,
"dl": null,
"teamId": null,
"opponentId": null,
"altTeamId": null,
"playerId": null,
"eventId": null,
"bookId": 1,
"periodTypeId": 1,
"betTypeId": 1,
"betOfferTypeId": 1,
"betSubType": null,
"popularityScore": null,
"betSubTypeCleaned": null,
"alternateOffers": [
{
"id": 1,
"price": null,
"generatedEdge": null,
"points": null,
"betOpeningPoints": null,
"betOpeningPrice": null,
"sourceData": null
}
],
"timestamp": null,
"gamblyModifiedTimestamp": null,
"overUnder": null,
"betIndex": 1,
"edge": null,
"syntheticHold": null,
"shouldGamblyBotIgnore": true,
"isLiveBet": true,
"isAltLine": true,
"altBetId": 1,
"betEntityId": null,
"betEntityIdCleaned": null,
"isSGPEnabled": true,
"seasonPart": null,
"offerGroupHash": null,
"statusId": 1,
"alternateOffersJson": null,
"gamblyOverrideSeasonPart": null,
"gamblyOverrideIsEnabled": null,
"personalizationPlayerScore": null,
"personalizationLeagueScore": null,
"personalizationBetTypeScore": null,
"personalizationTeamScore": null,
"personalizationAltTeamScore": null,
"personalizationGlobalPopularityScore": null,
"book": {
"id": 1,
"name": null,
"logoUrl": null,
"thumbnailUrl": null,
"siteUrl": null,
"dl": null,
"priority": 1,
"statusId": 1,
"bookType": null,
"isActive": true
},
"event": {
"id": 1,
"name": null,
"eventStart": null,
"eventEnd": null,
"overtimeNumber": null,
"dayOfWeek": null,
"gameStatus": null,
"gameClock": null,
"periodTypeId": null,
"teams": [
{
"id": 1,
"name": null,
"abbreviation": null,
"displayNameOverride": null,
"preferredDisplayName": null,
"logoUrl": null,
"leagueId": null,
"gamblySportId": null,
"gamblyOpticIdentifier": null,
"gamblyTeamPriority": null
}
],
"seasonPart": {
"id": 1,
"seasonId": null,
"name": null,
"seasonPartType": null,
"seasonPartStart": null,
"seasonPartEnd": null
},
"seasonId": null,
"seasonPartId": null,
"leagueId": 1,
"leagueName": null,
"gamblyOpticIdentifier": null,
"gamblyOverrideStartTime": null
},
"team": {
"id": 1,
"name": null,
"abbreviation": null,
"displayNameOverride": null,
"preferredDisplayName": null,
"logoUrl": null,
"leagueId": null,
"gamblySportId": null,
"gamblyOpticIdentifier": null,
"gamblyTeamPriority": null
},
"opponent": {
"id": 1,
"name": null,
"abbreviation": null,
"displayNameOverride": null,
"preferredDisplayName": null,
"logoUrl": null,
"leagueId": null,
"gamblySportId": null,
"gamblyOpticIdentifier": null,
"gamblyTeamPriority": null
},
"player": {
"id": 1,
"headshotUrl": null,
"firstName": null,
"lastName": null,
"currentTeamId": null,
"position": null,
"preferredName": null,
"gamblyPersonPriority": null,
"gamblyLongRangePersonPriority": null,
"gamblyOpticIdentifier": null
},
"periodType": {
"id": 1,
"name": null,
"nameShort": null,
"leagues": [
1
]
},
"betOfferType": {
"id": 1,
"name": null,
"nameShort": null,
"nameMobile": null,
"marketTypeId": 1,
"marketTypeName": null,
"betOn": null,
"sides": null,
"canDraw": null,
"selectionCountType": null,
"betRange": null,
"inferredBetTypeName": null,
"containsBetSubTypes": true,
"betTypePriority": 1
},
"league": {
"id": 1,
"sportId": 1,
"name": null,
"gamblySeasonalPriority": 1,
"priority": 1,
"gamblyOpticIdentifier": null,
"opticIdentifier": null,
"gamblyIsCompositeLeague": true,
"gamblyShouldIngestFromOptic": true
}
},
"deeplink": {
"id": null,
"url": null,
"deeplinkStatus": null,
"message": null
},
"evidence": [
"string"
],
"matchConfidence": null,
"isDirectMatch": true
}
],
"metadata": {
"articleUrl": null,
"leagueHint": null,
"requestedMaxBets": 1,
"matchedCount": 1,
"workerLatency": null,
"fetchedAtUtc": "2026-10-02T05:41:28.110Z",
"cacheTtlSeconds": 1,
"cacheHit": true,
"workerResultType": null,
"inlineWidgetCap": 1,
"includeImplicitBets": true,
"bookOrderHash": null,
"bookOrder": [
1
]
},
"telemetry": {
"cacheStatus": null,
"errorCode": null,
"workerStatusCode": 1,
"workerLatencyMs": null
}
}