FAQ & Troubleshooting
Common questions and solutions for Slotty Labs operator integration.
Getting Started
How do I get API credentials?
Contact office@slottylabs.com with:
- Your company name
- Primary domain (e.g.,
yourcasino.com) - Desired jurisdiction(s)
- Contact person email
We'll set up your sandbox account within 1 business day.
What languages/frameworks does the SDK support?
The @slottylabs/sdk npm package works with any JavaScript/TypeScript backend:
- Node.js 18+ (Express, Fastify, NestJS, Hapi, etc.)
- Deno (with npm compatibility)
- Bun (full support)
For non-JavaScript backends (Python, PHP, Go, Java), use the REST API directly — no SDK required. The only SDK-specific features are convenience wrappers; all operations are available via HTTP.
Can I test without a live casino?
Yes! Use sandbox mode with sk_sandbox_ API keys. You can:
- Create test players with any balance
- Force specific game outcomes for testing
- Play all games without real money
- Receive webhook events in sandbox
See Sandbox Testing for details.
Game Integration
How do players launch games?
The flow is:
Your Backend → Create SSO Token (API call) → Get Launch URL → Embed iframe- Player clicks "Play" on your casino lobby
- Your backend calls
client.auth.createSSOToken()with the player's ID - You get back a single-use launch token (30-second TTL)
- Generate the launch URL with
client.games.getLaunchUrl(gameId, token) - Load the URL in an iframe
Can I customize game appearance?
Yes, through white-label branding:
- Custom casino name shown in the game UI
- Custom logo
- Primary color theme
- Custom game names per operator
Configure these in the Operator Dashboard under Settings → Branding.
How do I handle mobile responsiveness?
The game iframe is fully responsive. Wrap it in a container with the correct aspect ratio:
<!-- Desktop: 16:9 -->
<div style="width: 100%; max-width: 1200px; aspect-ratio: 16/9;">
<iframe src="{launchUrl}" style="width:100%;height:100%;border:none;" />
</div>
<!-- Mobile: use 100vh for fullscreen -->
<div style="width: 100vw; height: 100vh;">
<iframe src="{launchUrl}" style="width:100%;height:100%;border:none;" />
</div>The game auto-detects the channel (desktop/mobile) and adjusts UI accordingly.
Can players play multiple games simultaneously?
No. Each player can only have one active session at a time. Starting a new game session will end the previous one. This is an industry requirement for responsible gaming compliance.
Webhooks
My webhook endpoint isn't receiving events
Check these common issues:
- HTTPS required — Webhook endpoints must use HTTPS. HTTP endpoints are rejected.
- Firewall — Whitelist Slotty Labs IP ranges (provided during onboarding)
- Response time — Your endpoint must respond within 10 seconds or the delivery is marked as failed
- Status code — Return
200-299to acknowledge receipt. Any other code triggers retries.
How do I debug webhook deliveries?
- Go to Settings → Webhooks in your operator dashboard
- View the Delivery History — shows all recent webhook attempts
- Click any delivery to see the request/response details
- Use the Retry button to re-send failed deliveries
Why am I receiving duplicate webhooks?
Slotty Labs uses at-least-once delivery. Duplicates can occur during retries. Always check the event id field to deduplicate:
if (await redis.get(`webhook:${event.id}`)) {
return res.status(200).json({ received: true }); // Already processed
}
// Process event...
await redis.set(`webhook:${event.id}`, '1', 'EX', 604800); // TTL: 7 daysFinancial
What currencies are supported?
- Fiat: USD, EUR, GBP (settled as integer cents — 100 = $1.00)
- Crypto: BTC, ETH, USDT (ERC-20), USDC (ERC-20), SOL, TRX
All financial amounts use integer representation (smallest unit) to avoid floating-point issues.
How does settlement work?
GGR (Gross Gaming Revenue) is calculated as:
GGR = Total Bets - Total WinsSettlement reports are generated daily and available in the dashboard under Finance → Settlements. Revenue share is calculated per your contract terms.
How are player balances managed?
You choose one of two models:
- Slotty Labs wallet — We manage player balances. You deposit funds via API, players play against our ledger.
- Seamless wallet — Players play against YOUR balance system. We call your API for debit/credit on every bet/win (coming soon).
Security
How do I rotate API keys?
- Go to your operator dashboard
- Generate a new API key
- Update your backend to use the new key
- Revoke the old key
Both keys work simultaneously during the rotation window.
Is my data encrypted?
Yes:
- In transit — All API calls use TLS 1.3
- At rest — Database encryption with AES-256
- Secrets — API keys and webhook secrets are hashed with bcrypt (only the prefix is shown in the dashboard)
Compliance
What jurisdictions are supported?
Slotty Labs provides game math and infrastructure compliant with:
- Curacao (CW) — Default jurisdiction
- Malta (MGA) — Available on request
- UK (UKGC) — Available on request (additional requirements)
- Sweden (SE) — Available on request
Each jurisdiction has pre-configured:
- RTP minimums and maximums
- Bet limits and session limits
- Reality check intervals
- Self-exclusion requirements
- Reporting obligations
How does provably fair verification work?
Every game round generates a cryptographic proof:
- Before the round: server commits to a seed hash
- During the round: player provides their seed
- After the round: server reveals the seed
- Anyone can verify:
SHA-256(serverSeed) === committedHash
See Provably Fair for the full protocol.