Enterprise API

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

  • Partner slug supplied during Gambly onboarding.

Query Parameters

  • Article or video URL to analyze. Either url or markdown is required.

  • Raw article markdown. Either markdown or url is required.

  • Maximum number of unique betting entities to return.

  • Optional league hint such as NFL, NBA, or Premier League.

  • Bypass cache and force fresh worker analysis.

  • Skip cache lookup for this request.

  • Generate mobile-optimized sportsbook deep links when possible.

  • Comma-separated sportsbook IDs to include.

  • Comma-separated sportsbook IDs defining preferred result order.

  • Include bets inferred from article context.

  • Maximum number of inline widgets to generate.

Headers

Responses

  • application/json
  • application/json
  • application/json
  • application/json
  • application/json
  • application/json
Request Example for get/api/v1/article-widgets/{partnerSlug}
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
  }
}