CDN Endpoint

The FAST Widget

Drop-in challenge engine for any sportsbook. One script tag. Shadow DOM isolation. Full white-label support. No build step required.

// Minimal embed
<script
  src="https://widget.fundedfast.eu/fast-widget.iife.js"
  data-api-key="pk_your-widget-key"
  data-user-id="current-user-id"
  data-fast-widget
></script>
// Full customization
<script
  src="https://widget.fundedfast.eu/fast-widget.iife.js"
  data-api-key="pk_your-widget-key"
  data-user-id="current-user-id"
  data-user-token="<from your backend>" // required in production
  data-lang="en"                // en, de, hr
  data-theme="dark"              // dark, light
  data-position="bottom-right"    // bottom-right, bottom-left
  data-brand-color="#c9a227"      // primary brand color
  data-brand-color-end="#f0d78c"  // gradient end
  data-brand-logo="https://..."   // operator logo URL
  data-brand-font="Inter"        // Google Font name
  data-currency="EUR"           // display currency
  data-show-leaderboard="true"   // toggle sections
  data-show-badges="true"
  data-show-history="true"
  data-show-shop="true"
  data-show-confetti="true"
  data-show-lang-picker="true"
  data-fab-size="56"            // FAB button size in px
  data-fast-widget
></script>
// Display modes (data-mode)
<script src="..." data-api-key="pk_..." data-user-id="..."
  data-mode="fab"                 // default: floating button, bottom corner
  // data-mode="sidebar"          - renders inline, fills the script tag's parent element
  // data-mode="fullpage"         - fullscreen page: seamless background, centered content & nav
  data-fast-widget
></script>
// Payments & approvals: server-side, not in the browser.
// When a user buys a challenge, FAST calls your backend approval URL
// (signed POST, 5s timeout). Charge the wallet, then respond
// { "approved": true } - or false to decline. Configure it in
// Backoffice > Settings > Approval URL. The widget just reports events:
<script>
  window.FastWidget.mount({
    apiKey: 'pk_your-widget-key',
    userId: 'player-42',
    onEvent: (event, data) => {
      if (event === 'challenge.purchased') { /* approved, challenge live */ }
      if (event === 'challenge.purchase_failed') { /* declined or errored */ }
    }
  });
</script>
// Engagement modules (bonuses, missions, tournaments, loyalty)
// Activate the modular Shell for full engagement suite
<script>
  window.FastWidget.mount({
    apiBase: 'https://api.fundedfast.eu/v1',
    apiKey: 'pk_your-widget-key',
    userId: 'player-42',
    theme: 'dark',
    // Modules auto-detected from your plan tier:
    // Launch: challenges
    // Growth: + bonuses, missions, tournaments
    // Pro: + loyalty (all modules)
    onEvent: (event, data) => {
      console.log(event, data);
      // Events: bonus.activated, mission.joined,
      // tournament.joined, reward.claimed, ...
    }
  });
</script>

Security Model

The widget uses a pk_ public key - safe to embed in frontend code.

Read-only access to user progress, challenges, bonuses, missions, tournaments, and loyalty. Cannot modify rulesets or access other users.

User Token Lifecycle

data-user-token is minted by your backend (POST /v1/sse/token, server key) and lasts 1 hour.

The widget auto-renews it before expiry - open tabs keep working. Renewal is capped at 24h per token; past that, onTokenExpired fires and your page re-mints: widget.update({ userToken }).

Engagement Modules

Challenges - Funded account challenges with progress ring, shop, withdrawal

Bonuses - Wagering requirements with progress tracking, offer activation

Missions - Time-boxed objectives with join, progress bars, rewards

Tournaments - Live leaderboard competitions with scoring and prizes

Loyalty - Points, tier progression, cashback, benefits

Modules are controlled by your plan and load automatically — no extra config needed.