Quick start
In fifteen minutes you will run the sandbox, run Tucano Casino (the
reference operator in examples/operator-node), log in, place a bet in the
embedded sportsbook and watch the signed debit arrive in the casino’s wallet.
Sandbox credentials
Section titled “Sandbox credentials”| Value | |
|---|---|
| Tenant | demo-embed (currency USD, seamless wallet) |
Integration API key (X-API-Key) |
dev-integration-key |
| Wallet secret (HMAC) | dev-wallet-secret |
| Allowed embed origins | http://localhost:3000, http://127.0.0.1:3000, :5173, :8080 and :4322 on both hosts |
| Back office | /admin/, admin@bookmaker.dev / admin-dev-password |
Run the reference operator
Section titled “Run the reference operator”You need Node 22, Go 1.26 and Postgres 16 (or Docker), and a checkout of the platform repository.
-
Start Postgres and install the workspaces:
Terminal window npm install./scripts/dev-db.sh -
Start the API, pointing the
demo-embedwallet at the casino you are about to run:Terminal window SEAMLESS_WALLET_URL_OVERRIDE=http://127.0.0.1:3000/wallet \SPORTSBOOK_URL=http://localhost:5173 \npm run dev -w @bookmaker/apiThe API listens on
:8080with simulated matches and the demo tenants.SPORTSBOOK_URLmakes thelaunchUrlit returns point at the sportsbook dev server of the next step. -
Start the sportsbook (it also serves the embed SDK at
/embed/v1.js):Terminal window npm run dev -w @bookmaker/sportsbook -
Start the casino:
Terminal window npm start -w @bookmaker/example-operator -
Open http://localhost:3000, pick any price and press Log in to bet. The sportsbook asks the casino to log the player in (
login_required); log in asana/ana-demo-123. The casino sends a fresh launch token to the open iframe (set_launch_token) and the slip is ready. -
Enter a stake of 5 and place the bet. The casino’s terminal shows the platform’s signed call:
wallet debit bet:5d7e5cd1-ae46-4159-9a66-51ee70aba189 player=casino-1001 amount=500 kind=bet -> 200 balance=49500and the casino header drops to $495.00 when the sportsbook reports
balance_changed. Open Integration log at the bottom right to see every event.
To settle the bet at once, open the back office at /admin/ (staff login above),
go to Manual settlement and result the market: the platform calls the
casino’s credit endpoint with the payout, or with amount 0 if the bet
lost. See Testing.
Try the API by hand
Section titled “Try the API by hand”Create a session, as your server will:
curl -s http://localhost:8080/api/v1/integration/sessions \ -H 'Content-Type: application/json' \ -H 'X-Tenant-ID: demo-embed' \ -H 'X-API-Key: dev-integration-key' \ -d '{"externalPlayerId": "player-42", "displayName": "Maria", "path": "/live"}'{ "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9…", "launchToken": "lt_NIpjVSCtwQlG0iLUbF9T7WeY84YSVs3pVQeLxbbH1O0", "launchExpiresAt": "2026-10-16T03:01:22.081091Z", "launchUrl": "http://localhost:5173/?tenant=demo-embed&launch=lt_NIpjVSCtwQlG0iLUbF9T7WeY84YSVs3pVQeLxbbH1O0&path=%2Flive", "player": { "id": "pl_bd387263c326f44e90808bde", "externalId": "player-42", "status": "active", "…": "…" }}Open launchUrl within two minutes: you are logged in as player-42, and the
address bar no longer contains the token. Open it again: you are not, because
launch tokens are single use.
Then mount it in a page of your own with the embed SDK, or try every command in the Playground.