Skip to content

Adding a play-for-fun sportsbook to your game or app

How to add an in-game sportsbook to your game or app: play-for-fun with no real money, a separate free token balance, your branding and 18+ players only.

Updated 7 min readBy The Sportsbook team

An in-game sportsbook lets your players bet on real football, basketball, esports and other matches inside your game or app, using a free token balance and never real money: a play-for-fun sportsbook inside your product. With The Sportsbook you embed a web sportsbook (an iframe and a JavaScript SDK) in a page or web view of your app, open a session for each signed-in player from your server, and keep tokens either in our managed balance or in your own balance service through a seamless wallet. The hard rule for studios: that balance is separate, free and never connected to anything players can buy or trade.

Key takeaways

Why real sports work as live content in a game

Live-ops teams spend a lot of effort producing reasons to log in: events, seasons, limited-time modes. Sport produces them without your team lifting a finger. The calendar runs all year across leagues and time zones, and your players already follow some of it.

A sportsbook turns that into something they can do in your product. Pre-match bets give players a reason to come back after the match; live betting, where the plan includes it, gives them a reason to stay during it. Accumulators give the more engaged players something to plan. None of this needs your team to produce content: fixtures, odds, results and settlement come with the platform.

For a studio, the questions are practical. Where does it live? What balance does it use? How does it look? Who can play? The rest of this article takes them in that order.

Where an in-game sportsbook lives: a web page or a web view

The Sportsbook is a web embed. Your server opens a session for the signed-in player with your API key and gets a single-use launch URL that expires after 60 seconds; your page mounts the sportsbook with it.

Shell
curl -X POST https://api.thesportsbook.app/b2b/v1/sessions \  -H "Authorization: Bearer $SPORTSBOOK_API_KEY" \  -H "Content-Type: application/json" \  -d '{"user_ref": "viewer-42", "display_name": "Viewer 42", "locale": "en"}'
HTML
<div data-thesportsbook data-launch-url="LAUNCH_URL_FROM_YOUR_SERVER"></div><script src="https://play.thesportsbook.app/sdk.js"></script>

Where you put that page is up to you:

The layout follows the width of the frame, so in a phone-sized web view the sidebar becomes a drawer and the betslip a bottom sheet. Sessions last 12 hours, and the SDK can swap in a new session without reloading the frame. The iframe integration guide covers the session flow and events in detail.

Use your own player id as user_ref: a pseudonymous identifier, never an email address or a real name. The display name should be the nickname the player chose.

The currency question

This is the section that decides whether the sportsbook fits your game, so it's worth being blunt.

The sportsbook balance can't be your soft currency if players can buy it. Most games have a currency that can be earned by playing and also bought in the store. Even if a player only ever earned theirs, that currency can be bought, so it has monetary value, and converting it into sportsbook tokens is not allowed (AUP 3.2(f)).

The sportsbook balance has to be separate. If you run any other points, currency or items scheme, the sportsbook tokens are their own balance, not convertible to or from that scheme (AUP 3.3). In seamless mode, the balance you connect must be that separate balance.

Nothing comes out of the sportsbook into the game. No in-game items, skins, currencies or points that are sold, can be bought, or can be traded or transferred (AUP 4.1(d)). In most games that's every item worth having, so the working rule is simple: no items as rewards.

What's left is a clean design:

Players must always be able to get enough tokens to keep playing without paying (AUP 3.5). When they run low, the embed shows a "Get more tokens" button; the SDK tells your page through onTokensRequested, and you open your free refill. It must never lead to a store. The free token economy guide goes into starting balances, refills and seasons.

A seamless wallet for your own balance service

If your backend already has a balance service with a ledger, you can keep the sportsbook tokens there as a separate balance type. In seamless mode (the Operator-Held Token Balance) the sportsbook calls three endpoints you host: debit when a bet is placed, credit when it settles, rollback when it's voided or can't be completed. Each call is signed with HMAC-SHA256 and carries an idempotency key you must apply at most once. Placement debits wait up to 6 seconds for your answer, with up to 3 attempts; settlement credits retry up to 20 times.

Seamless is a Custom add-on or included in Full, and your wallet URL and signing secret are configured on our side, so it starts with a conversation through our contact page. The managed mode (the Hosted Token Balance), where we keep a record of each balance and you credit tokens through the API, works on every plan and is usually the faster way to launch. The seamless wallet integration guide covers the protocol, retries and reconciliation.

Branding it like your game

In the console's Studio you can start from one of six presets and change every color, upload your logo and favicon, set the corner radius, and choose sidebar or top bar navigation, list or grid match cards and a floating or docked betslip. On paid plans you also get 18 Google Fonts or your own font files (useful if your game has a display typeface), a separate heading font, density and odds button style. The Studio checks text and odds colors against WCAG AA before you save.

Name your tokens with your game's own word, shown before or after the amount. Currency symbols and codes aren't allowed as labels. There's no custom CSS and no custom domain today: the sportsbook loads from play.thesportsbook.app inside your page. The white-label sportsbook branding walkthrough shows each option.

Age: 18+ players only, not aimed at minors

This is the point where game studios have to be most careful. Only people aged 18 or over may play, or the higher age that applies where the player is (AUP 7.1). You must use age-assurance measures that fit your audience and the law where your players are. And you must not direct the sportsbook, or any marketing for it, at minors, or use content, characters or placements likely to appeal particularly to under-18s (AUP 7.2).

In practice:

Rules on simulated betting differ between countries and platforms, and app stores have their own policies. Check the rules where your players are and those of the stores you publish on, and take advice from a lawyer in your jurisdiction. We describe our own rules in the acceptable use and play-for-fun policy; we can't tell you what your local rules require.

Plans and next steps

The Free plan (one sport, up to 3 leagues, pre-match, up to 250 monthly active players, no time limit today) is enough to prototype inside a build. Custom starts at $49 a month ($39 billed yearly) with add-ons for more sports, league packs, live betting, the 2D match viewer and the seamless wallet; Full is $490 a month ($399 billed yearly) with everything, at the time of writing (September 2026). See pricing.

If you're weighing whether a play-for-fun model fits your game, start with what a play-for-fun sportsbook is. If you want to talk through your balance design, web view setup or age gating with us, request a walkthrough; the integration docs (opens in a new tab) are public if your engineers want to read first.

Frequently asked questions

Can players use my game's premium currency to bet in the sportsbook?

No. The sportsbook balance has to be a separate free token balance. It can't be filled from a currency players can buy, and it can't be converted into that currency, items or anything else that can be bought, sold or traded. Tokens stay worthless in both directions.

Is there a native iOS or Android SDK?

No. The Sportsbook ships a web embed: an iframe plus a JavaScript SDK. Studios that want it inside a native app load that page in a web view, which is their own choice and their own code. The layout adapts to the width it gets.

Can the top players get in-game items or skins?

No. Items that are sold or can be bought, sold, traded or transferred are exactly what the rules exclude. Keep recognition to leaderboard positions, titles, badges and community roles that have no value and can't be exchanged for anything that has.

What if my game has players under 18?

The sportsbook is for players aged 18 or over, and it must not be directed at minors. If your audience includes minors, you need age assurance that keeps them out of the sportsbook, and you should consider whether it fits your game at all.

Written by

The Sportsbook team

The people who build The Sportsbook. We have spent seven years building sportsbook software, and we write these guides from that work.

Last updated .

Tell us about your platform. We’ll walk you through it.

How your tokens work, where your players are, what you want to offer. We’ll show you the embed, the Studio and the console.

Free plan · nothing to pay, no approval. For businesses and creators, 18+.