// 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>
// 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