Iframe Parameters
All widget configuration is passed via query parameters on the iframe src URL. Parameters fall into these categories: theme, display, 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.
| Parameter | Type | Description |
|---|---|---|
preset | string | Name of the preset JSON file to load (without .json). The widget fetches it from your configured preset hosting location. |
bg | string | Page 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. |
<iframe
src="https://widget.example.com/?preset=brand_dark_v2&bg=1e293b"
width="100%"
height="480"
frameborder="0"
style="border: none;"
></iframe>
TipSetting
backgroundColoron the<iframe>element itself does not affect content inside the frame. Use thebgquery parameter instead.
Language
| Parameter | Type | Default | Description |
|---|---|---|---|
lang | string | en-US | UI language for filter labels, button text, etc. |
Supported values:
| Code | Language |
|---|---|
en-US | English |
de-DE | German |
es-ES | Spanish |
it-IT | Italian |
nl-NL | Dutch |
<iframe
src="https://widget.example.com/?preset=brand_dark_v2&lang=it-IT"
...
></iframe>Priority: ?lang= query param overrides the default language. Falls back to en-US.
Unsupported codes fall back to en-US.
InfoThe
langparameter controls UI labels only (filter names, button text, etc.).
Odds & Currency Parameters
Override the odds format and currency set by the preset. These take precedence over preset values.
| Parameter | Type | Default | Description |
|---|---|---|---|
oddsFormat | string | american | Odds display format |
currency | string | USD | Currency code for betslip amounts |
Supported oddsFormat values:
| Value | Display | Example |
|---|---|---|
american | American odds (default) | +150, -200 |
decimal | Decimal odds | 2.50, 1.50 |
fractional | Fractional odds | 3/2, 1/2 |
probability | Implied probability % | 40.0%, 66.7% |
The probability format computes implied probability from decimal odds: (1 / decimalOdds) × 100. This is useful for prediction market integrations.
<!-- Prediction market style: probability odds in euros -->
<iframe
src="https://widget.example.com/?preset=brand_dark_v2&oddsFormat=probability¤cy=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.
TipThe
oddsFormatandcurrencyparameters are applied after the preset loads, so they always override preset values regardless of timing.
Filter Parameters
Pre-set the widget's initial filter state. These control which flows are fetched from the API.
| Parameter | UI Filter | Valid Values |
|---|---|---|
flowType | Context | fact, fun, plain |
betType | Wager Type | singles, parlay, same_game_parlay |
bettingMarketEntityType | Market Type | player, team, event |
likelihoodType | Probability | likely, possible, longshot |
splitType | Bet Type | overs, unders |
factFlowType | Fact Flow Display | base, 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
- 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.
- Client hydration - the filter UI reflects the iframe params immediately after hydration.
- 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:
factFlowTypeis 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.
| Parameter | Type | API Field | Description |
|---|---|---|---|
eventId | number | event_id | Filter by specific event ID |
leagueId | number | league_id | Filter by league ID |
leagueKey | string | league_key | Filter by league key (e.g. nba, united-states.nba) |
sportId | number | sport_id | Filter by sport ID |
sportKey | string | sport_key | Filter by sport key (e.g. american-football) |
playerId | number | player_id | Filter by player ID |
playerKey | string | player_key | Filter by player key (e.g. nikola-vucevic, nba.boston-celtics.nikola-vucevic) |
teamId | number | team_id | Filter by team ID |
teamKey | string | team_key | Filter 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.
| Parameter | Type | API Field | Description |
|---|---|---|---|
eventStartDateFrom | string | event_start_date_from | Filter events starting on or after this value. Accepts a date (2026-04-19) or a full ISO 8601 timestamp (2026-04-19T00:00:00Z). |
eventStartDateTo | string | event_start_date_to | Filter 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.
| Parameter | Type | API Field | Description |
|---|---|---|---|
minHitRateThreshold | number | min_hit_rate_threshold | Minimum hit rate (integer 0–100). |
maxHitRateThreshold | number | max_hit_rate_threshold | Maximum hit rate (integer 0–100). |
minImpliedProbabilityThreshold | number | min_implied_probability_threshold | Minimum implied probability (decimal, e.g. 0.5 for 50%). |
maxImpliedProbabilityThreshold | number | max_implied_probability_threshold | Maximum 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.
| Parameter | Type | API Field | Description |
|---|---|---|---|
bettingMarketCategoryId | number | betting_market_category_id | Filter by betting market category ID. See /v1/references/betting-market-categories. |
bettingMarketPositionId | number | betting_market_position_id | Filter by a specific betting market position ID. See /v1/references/betting-market-positions. |
bettingMarketIds | number[] | betting_market_ids | Comma-separated list of betting market IDs. See /v1/references/betting-markets. |
focusEntityTypeId | number | focus_entity_type_id | Filter 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.
| Parameter | Type | API Field | Description |
|---|---|---|---|
operatorIds | number[] | operator_ids | Comma-separated list of operator IDs. |
operatorKeys | string[] | operator_keys | Comma-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.
| Parameter | API Field | Description |
|---|---|---|
startingSoon | starting_soon | When true, only return flows for events starting soon. |
fullHitRate | full_hit_rate | When true, include full hit-rate data in the response. |
includeAltLines | include_alt_lines | When false, exclude alt lines. Defaults to true. |
includeDeeplinks | include_deeplinks | When 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. |
includeOnlyBasicTrends | include_only_basic_trends | When true, return only basic trends (omit fact flows with conditions). |
includeStarSignContent | include_star_sign_content | When true, include star-sign / horoscope content in flows. |
<!-- 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>Misc
| Parameter | Type | API Field | Description |
|---|---|---|---|
teamSplit | string | team_split | Team split filter value. |
URL Encoding Rules
| Type | URL form | Parsed value |
|---|---|---|
string | ?key=value | Non-empty string. Empty values are dropped. |
int | ?key=42 | parseInt(v, 10). NaN is dropped. |
float | ?key=0.75 | parseFloat(v). NaN is dropped. |
boolean | ?key=true / ?key=1 / ?key=false / ?key=0 | true / 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¤cy=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_v2theme 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 Parameter | API Parameter (snake_case) |
|---|---|
flowType | flow_type |
betType | bet_type |
bettingMarketEntityType | betting_market_entity_type |
likelihoodType | likelihood_type |
splitType | split_type |
factFlowType | fact_flow_type |
eventId | event_id |
leagueId | league_id |
leagueKey | league_key |
sportId | sport_id |
sportKey | sport_key |
playerId | player_id |
playerKey | player_key |
teamId | team_id |
teamKey | team_key |
eventStartDateFrom | event_start_date_from |
eventStartDateTo | event_start_date_to |
minHitRateThreshold | min_hit_rate_threshold |
maxHitRateThreshold | max_hit_rate_threshold |
minImpliedProbabilityThreshold | min_implied_probability_threshold |
maxImpliedProbabilityThreshold | max_implied_probability_threshold |
bettingMarketCategoryId | betting_market_category_id |
bettingMarketPositionId | betting_market_position_id |
bettingMarketIds | betting_market_ids |
focusEntityTypeId | focus_entity_type_id |
operatorIds | operator_ids |
operatorKeys | operator_keys |
startingSoon | starting_soon |
fullHitRate | full_hit_rate |
includeAltLines | include_alt_lines |
includeDeeplinks | include_deeplinks |
includeOnlyBasicTrends | include_only_basic_trends |
includeStarSignContent | include_star_sign_content |
teamSplit | team_split |
Next Steps
- Widget Overview - introduction and flow types
- Playground - design your theme
- Presets - preset structure and deployment
- Widget Events - handle postMessage events from the widget
Updated 11 days ago
