Iframe Parameters

All widget configuration is passed via query parameters on the iframe src URL. Parameters fall into these categories: theme, language, odds & currency, geolocation, live scores, filters (chips and pass-through), entity scoping, date filters, hit-rate / probability thresholds, betting-market identifiers, operator filters, and display toggles.

Most non-theme parameters are forwarded to the backend /v1/trends/mixed-flows endpoint to pre-filter the feed before the first paint. See the API reference for the corresponding request body fields.

Basic Embed

<iframe
  src="https://widget.example.com/?preset=brand_dark_v2"
  width="100%"
  height="480"
  frameborder="0"
  style="border: none;"
></iframe>

Theme Parameters

Control the visual appearance of the widget.

ParameterTypeDescription
presetstringName of the preset JSON file to load (without .json). The widget fetches it from your configured preset hosting location.
bgstringPage background color - hex value without # (e.g., bg=1e293b). Defaults to 0a0a1a. If the loaded preset also contains a pageBgHex field, the preset value takes precedence.
colorModestringdark or light. Forces the color mode, overriding the preset's stored colorMode.
layoutModestringcarousel or feed. Forces the layout, overriding the preset's stored layoutMode.

When both colorMode and layoutMode are present alongside preset, the widget first tries a mode-specific preset file named {preset}_{layoutMode}_{colorMode}.json (e.g. brand_feed_dark.json) and falls back to the bare {preset}.json if it doesn't exist. See Presets for details.

<iframe
  src="https://widget.example.com/?preset=brand_dark_v2&bg=1e293b"
  width="100%"
  height="480"
  frameborder="0"
  style="border: none;"
></iframe>
📘

Tip

Setting backgroundColor on the <iframe> element itself does not affect content inside the frame. Use the bg query parameter instead.

Language

ParameterTypeDefaultDescription
langstringen-USUI language for filter labels, button text, etc.

Supported values:

CodeLanguage
en-USEnglish
es-ESSpanish
it-ITItalian
pt-BRPortuguese (Brazil)
<iframe
  src="https://widget.example.com/?preset=brand_dark_v2&lang=it-IT"
  ...
></iframe>

Priority: ?lang= query param overrides the default language configured for your deployment. Falls back to en-US.

Locale matching is tolerant: values are normalized (pt_brpt-BR), and granular regional variants resolve to the closest supported language (es-419, es-MX → Spanish). Any other value falls back to English.

📘

Info

The lang parameter localizes the full experience - the widget UI (filter names, button text, countdown labels, date formatting) and the trend narrative content, which the widget requests from the API in the same language (via the X-Language header). See Localization for how narrative translation works. Additional languages are added over time - ask your Odditt contact about upcoming coverage.

Odds & Currency Parameters

Override the odds format and currency set by the preset. These take precedence over preset values.

ParameterTypeDefaultDescription
oddsFormatstringamericanOdds display format
currencystringUSDCurrency code for betslip amounts

Supported oddsFormat values:

ValueDisplayExampleTypical product mode
americanAmerican odds (default)+150, -200sportsbook (US)
decimalDecimal odds2.50, 1.50sportsbook (intl)
fractionalFractional odds3/2, 1/2sportsbook (UK/IE)
multiplierDecimal with x suffix2.0x, 2.5xdfs
probabilityImplied probability %40.0%, 66.7%prediction market

The probability format computes implied probability from decimal odds: (1 / decimalOdds) × 100. This is useful for prediction market integrations.

The multiplier format is identical to decimal odds with an x suffix appended; it is the default for DFS product mode. The format is purely presentational — the underlying value in the payload is always the raw decimal number.

Product Mode

ParameterTypeDefaultDescription
productModestringsportsbookControls odds format defaults, market filtering, and stat-line rendering.

Supported values: sportsbook, dfs, prediction_market.

The product mode is independent of the widget mode (operator / affiliate / clean). It controls what the card looks like, not what happens on tap. See the Product Modes guide for the full breakdown.

When productMode=dfs, the API automatically scopes the feed to player over/under props (betting_market_entity_type=player, position IDs [4, 5]), defaults the odds format to multiplier, and returns stat lines with the direction prefix stripped and the odds replaced by a MORE / LESS label.

<!-- DFS product mode: multiplier odds, player overs/unders only -->
<iframe
  src="https://widget.example.com/?preset=brand_dark_v2&productMode=dfs"
  width="100%"
  height="480"
  frameborder="0"
  style="border: none;"
></iframe>
<!-- Prediction market style: probability odds in euros -->
<iframe
  src="https://widget.example.com/?preset=brand_dark_v2&oddsFormat=probability&currency=EUR"
  width="100%"
  height="480"
  frameborder="0"
  style="border: none;"
></iframe>

Priority: defaults → preset → iframe params. If the preset sets oddsType: "decimal" but the iframe URL has ?oddsFormat=probability, probability wins.

📘

Tip

The oddsFormat and currency parameters are applied after the preset loads, so they always override preset values regardless of timing.

Geolocation

Tell the widget where the end user is located. This drives operator offer eligibility (affiliate mode) and market availability.

ParameterTypeDefaultDescription
countrystring-Two-letter country code (e.g. US).
regionstring-State / subnational region code (e.g. NJ). Valid codes per country: GET /v1/references/subnational-regions.
<iframe
  src="https://widget.example.com/?preset=brand_dark_v2&country=US&region=NJ"
  ...
></iframe>

Live Scores & Realtime

Realtime streaming and live scores are enabled per deployment and may not be available on your plan - check with your Odditt contact. On deployments without it, these parameters have no effect and the widget renders with its initially fetched data.

ParameterTypeDefaultDescription
showLiveScoresbooleanpreset valueWhen true, in-play events show a LIVE pill with period, clock, and score. When false, live game-state display is disabled. When omitted, the preset's showLiveScores setting applies.
realtimebooleantrueSet realtime=false to disable all realtime streaming for this embed (live odds, parlay pricing, and live scores). Only relevant on deployments where realtime streaming is enabled.

See the Live Scores & Realtime guide for what updates in realtime and how the live game-state display works.

PostMessage Target

ParameterTypeDefaultDescription
parentOriginstring*Target origin used by the widget when calling postMessage() on the parent window.

Restrict widget events to your domain so other pages embedding your iframe cannot receive them:

<iframe
  src="https://widget.example.com/?preset=brand_dark_v2&parentOrigin=https://mysite.com"
  ...
></iframe>

See Widget Events for the full event reference and rationale.

Filter Parameters

Pre-set the widget's initial filter state. These control which flows are fetched from the API.

ParameterUI FilterValid Values
flowTypeContextfact, fun, plain
betTypeWager Typesingles, parlay, same_game_parlay
bettingMarketEntityTypeMarket Typeplayer, team, event
likelihoodTypeProbabilitylikely, possible, longshot
splitTypeBet Typeovers, unders
factFlowTypeFact Flow Displaybase, expanded
<!-- Show only fact flows with singles bets, overs only -->
<iframe
  src="https://widget.example.com/?preset=brand_dark_v2&flowType=fact&betType=singles&splitType=overs"
  width="100%"
  height="480"
  frameborder="0"
  style="border: none;"
></iframe>

How Filters Work

  1. Server-side rendering - filter params are parsed from the URL and included in the initial API call, so the first page load already returns filtered data.
  2. Client hydration - the filter UI reflects the iframe params immediately after hydration.
  3. Subsequent fetches - pagination and user-initiated filter changes use the current filter state (seeded from iframe params).

Filter Locking

When the preset includes allowOverrideIframeFilters: false, filter categories set via iframe params are locked in the UI - they show locked chip styling and their options are disabled. Filters not set via iframe remain editable.

When allowOverrideIframeFilters: true (default), users can freely change all filters, including those initially set via iframe params.

Interaction with Presets

  • Iframe filter params always take precedence over preset values.
  • Presets never contain filter state - filter state is controlled exclusively by iframe params and user interaction.
  • Exception: factFlowType is stored in presets but can also be set via iframe params. The iframe param wins during initial state seeding.

Entity Parameters

Narrow the widget feed to a specific event, league, sport, player, or team. All are optional and can be combined.

ParameterTypeAPI FieldDescription
eventIdsnumber[]event_idsFilter by one or more event IDs (comma-separated)
leagueIdsnumber[]league_idsFilter by one or more league IDs
leagueKeystringleague_keyFilter by league key (e.g. nba, united-states.nba)
sportIdsnumber[]sport_idsFilter by one or more sport IDs
sportKeystringsport_keyFilter by sport key (e.g. american-football)
playerIdsnumber[]player_idsFilter by one or more player IDs
playerKeystringplayer_keyFilter by player key (e.g. nikola-vucevic, nba.boston-celtics.nikola-vucevic)
teamIdsnumber[]team_idsFilter by one or more team IDs
teamKeystringteam_keyFilter by team key (e.g. new-england-patriots, nfl.new-england-patriots)
<!-- NFL only, scoped to a specific team -->
<iframe
  src="https://widget.example.com/?preset=brand_dark_v2&leagueKey=nfl&teamKey=chiefs"
  width="100%"
  height="480"
  frameborder="0"
  style="border: none;"
></iframe>

Entity parameters are forwarded to the backend on every API call (both SSR and client-side). Only parameters present in the URL are included - omitted parameters have no effect. Integer parameters that cannot be parsed are silently ignored. When both an ID and a key are supplied for the same entity (e.g. leagueId and leagueKey), the ID takes precedence.

Date Filters

Restrict the feed to events starting within a date window.

ParameterTypeAPI FieldDescription
eventStartDateFromstringevent_start_date_fromFilter events starting on or after this value. Accepts a date (2026-04-19) or a full ISO 8601 timestamp (2026-04-19T00:00:00Z).
eventStartDateTostringevent_start_date_toFilter events starting on or before this value. Accepts a date (2026-04-26) or a full ISO 8601 timestamp (2026-04-26T23:59:59Z).
<!-- Only events between April 19 and April 26, 2026 -->
<iframe
  src="https://widget.example.com/?preset=brand_dark_v2&eventStartDateFrom=2026-04-19&eventStartDateTo=2026-04-26"
  ...
></iframe>

Hit Rate & Probability Thresholds

Filter flows by historical hit rate or implied probability of the underlying bet.

ParameterTypeAPI FieldDescription
minHitRateThresholdnumbermin_hit_rate_thresholdMinimum hit rate (integer 0–100).
maxHitRateThresholdnumbermax_hit_rate_thresholdMaximum hit rate (integer 0–100).
minImpliedProbabilityThresholdnumbermin_implied_probability_thresholdMinimum implied probability (decimal, e.g. 0.5 for 50%).
maxImpliedProbabilityThresholdnumbermax_implied_probability_thresholdMaximum implied probability (decimal).
<!-- Only flows that have hit at least 70% of the time -->
<iframe
  src="https://widget.example.com/?preset=brand_dark_v2&minHitRateThreshold=70"
  ...
></iframe>

Betting Market Identifiers

Scope the feed to specific betting-market categories, positions, or markets. IDs come from the corresponding reference endpoints.

ParameterTypeAPI FieldDescription
bettingMarketCategoryIdsnumber[]betting_market_category_idsFilter by one or more betting market category IDs. See /v1/references/betting-market-categories.
bettingMarketPositionIdsnumber[]betting_market_position_idsFilter by one or more betting market position IDs. See /v1/references/betting-market-positions.
bettingMarketIdsnumber[]betting_market_idsComma-separated list of betting market IDs. See /v1/references/betting-markets.
focusEntityTypeIdnumberfocus_entity_type_idFilter by focus entity type ID.
<!-- Limit to a specific category, e.g. player props -->
<iframe
  src="https://widget.example.com/?preset=brand_dark_v2&bettingMarketCategoryId=12&bettingMarketIds=101,102,103"
  ...
></iframe>

Operator Filters

Restrict odds (and deeplinks) to specific sportsbook operators.

ParameterTypeAPI FieldDescription
operatorIdsnumber[]operator_idsComma-separated list of operator IDs.
operatorKeysstring[]operator_keysComma-separated list of operator external keys (e.g. draftkings). Resolved IDs are merged with operatorIds.
<!-- Odds from DraftKings and FanDuel only -->
<iframe
  src="https://widget.example.com/?preset=brand_dark_v2&operatorKeys=draftkings,fanduel"
  ...
></iframe>

See /v1/references/operators for the full operator catalog.

Display Toggles

Boolean flags that change which flows are returned or what extra fields are included.

ParameterAPI FieldDescription
startingSoonstarting_soonWhen true, only return flows for events starting within the next hour. For a custom window, use eventStartDateFrom / eventStartDateTo instead.
fullHitRatefull_hit_rateWhen true, only return fact flows whose trends have hit 100% of the time.
includeAltLinesinclude_alt_linesWhen false, exclude alt lines. Defaults to true.
includeDeeplinksinclude_deeplinksWhen true, returns operator-specific odds and deeplink URLs (bet_ios_deep_link_url, bet_android_deep_link_url, bet_web_deep_link_url) for each flow. Requires exactly one operator ID in operatorIds.
includeOnlyBasicTrendsinclude_only_basic_trendsWhen true, return only basic trends (omit fact flows with conditions).
includeStarSignContentinclude_star_sign_contentWhen true, permits star-sign / horoscope content in the feed. To specifically surface horoscope content, also pass the corresponding tag types.
useCartoonImagesuse_cartoon_imagesWhen true, logo fields on flows and parlay legs are replaced with cartoon-jersey image URLs derived from the relevant team, player, or league. Defaults to false.
<!-- Feed shows only starting-soon events, with deeplinks to DraftKings -->
<iframe
  src="https://widget.example.com/?preset=brand_dark_v2&startingSoon=true&operatorIds=10&includeDeeplinks=true"
  ...
></iframe>

Tag Filters

Segment the feed by content or metadata tags. Resolve tag type IDs from the tag registry first - see the Segmentation & Tags guide.

ParameterTypeAPI FieldDescription
contentTagTypeIdsnumber[]content_tag_type_idsFilter by what the flow is about (narrative angle). OR mode by default.
contentTagRequireAllbooleancontent_tag_require_allWhen true, a flow must match all content tags (AND).
metadataTagTypeIdsnumber[]metadata_tag_type_idsFilter by structural attributes (league, position, etc.). OR mode by default.
metadataTagRequireAllbooleanmetadata_tag_require_allWhen true, a flow must match all metadata tags (AND).
<!-- Only flows tagged with content types 15 or 42 -->
<iframe
  src="https://widget.example.com/?preset=brand_dark_v2&contentTagTypeIds=15,42"
  ...
></iframe>

Misc

ParameterTypeAPI FieldDescription
teamSplitstringteam_splithome or away - filter to trends computed over a team's home or away games only.
pageSizenumberpage_sizeNumber of flows fetched per page (initial load and each infinite-scroll page). Defaults to 20.
widgetModestringwidget_modeoperator, affiliate, or clean. Normally fixed in your deployment's preset (a preset widgetMode value takes precedence over this param). See Widget Modes.
device_typestringauto-detectedios, android, or desktop. Overrides user-agent detection when choosing app vs. web deep links in the affiliate cart.

URL Encoding Rules

TypeURL formParsed value
string?key=valueNon-empty string. Empty values are dropped.
int?key=42parseInt(v, 10). NaN is dropped.
float?key=0.75parseFloat(v). NaN is dropped.
boolean?key=true / ?key=1 / ?key=false / ?key=0true / false. Case-insensitive. Anything else is dropped.
intArray?ids=1,2,3[1, 2, 3]. NaN entries dropped; empty list dropped.
stringArray?keys=a,b,c["a", "b", "c"]. Whitespace trimmed; empty list dropped.

Repeated keys (?ids=1&ids=2&ids=3) are also accepted for array types if your embedder prefers HTML-form-style encoding.

Complete Example

Combining several parameter categories in a single embed:

<iframe
  src="https://widget.example.com/?preset=brand_dark_v2&bg=1e293b&lang=it-IT&oddsFormat=probability&currency=EUR&flowType=fact&betType=singles&splitType=overs&leagueKey=nfl&bettingMarketEntityType=player&eventStartDateFrom=2026-01-01&minHitRateThreshold=70&operatorIds=10,20,30"
  width="100%"
  height="480"
  frameborder="0"
  style="border: none;"
></iframe>

This embed:

  • Loads the brand_dark_v2 theme preset
  • Sets the page background to #1e293b
  • Displays UI labels in Italian
  • Shows odds as implied probability percentages
  • Uses EUR currency for betslip amounts
  • Shows only fact flows with singles bets and overs
  • Scopes to NFL content and the player market type
  • Restricts events to those starting on or after Jan 1 2026
  • Hides any flow that hasn't hit at least 70% of the time
  • Limits odds to operators 10, 20, and 30

API Parameter Mapping

For reference, here is how iframe parameters map to the backend /v1/trends/mixed-flows request body:

Iframe ParameterAPI Parameter (snake_case)
flowTypeflow_type
betTypebet_type
bettingMarketEntityTypebetting_market_entity_type
likelihoodTypelikelihood_type
splitTypesplit_type
factFlowTypefact_flow_type
eventIdsevent_ids
leagueIdsleague_ids
leagueKeyleague_key
sportIdssport_ids
sportKeysport_key
playerIdsplayer_ids
playerKeyplayer_key
teamIdsteam_ids
teamKeyteam_key
eventStartDateFromevent_start_date_from
eventStartDateToevent_start_date_to
minHitRateThresholdmin_hit_rate_threshold
maxHitRateThresholdmax_hit_rate_threshold
minImpliedProbabilityThresholdmin_implied_probability_threshold
maxImpliedProbabilityThresholdmax_implied_probability_threshold
bettingMarketCategoryIdsbetting_market_category_ids
bettingMarketPositionIdsbetting_market_position_ids
bettingMarketIdsbetting_market_ids
focusEntityTypeIdfocus_entity_type_id
operatorIdsoperator_ids
operatorKeysoperator_keys
startingSoonstarting_soon
fullHitRatefull_hit_rate
includeAltLinesinclude_alt_lines
includeDeeplinksinclude_deeplinks
includeOnlyBasicTrendsinclude_only_basic_trends
includeStarSignContentinclude_star_sign_content
useCartoonImagesuse_cartoon_images
pageSizepage_size
productModeproduct_mode
widgetModewidget_mode
contentTagTypeIdscontent_tag_type_ids
contentTagRequireAllcontent_tag_require_all
metadataTagTypeIdsmetadata_tag_type_ids
metadataTagRequireAllmetadata_tag_require_all
teamSplitteam_split

Next Steps


Did this page help you?