Skip to content

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
  1. Player clicks "Play" on your casino lobby
  2. Your backend calls client.auth.createSSOToken() with the player's ID
  3. You get back a single-use launch token (30-second TTL)
  4. Generate the launch URL with client.games.getLaunchUrl(gameId, token)
  5. 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:

html
<!-- 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:

  1. HTTPS required — Webhook endpoints must use HTTPS. HTTP endpoints are rejected.
  2. Firewall — Whitelist Slotty Labs IP ranges (provided during onboarding)
  3. Response time — Your endpoint must respond within 10 seconds or the delivery is marked as failed
  4. Status code — Return 200-299 to acknowledge receipt. Any other code triggers retries.

How do I debug webhook deliveries? ​

  1. Go to Settings → Webhooks in your operator dashboard
  2. View the Delivery History — shows all recent webhook attempts
  3. Click any delivery to see the request/response details
  4. 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:

typescript
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 days

Financial ​

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 Wins

Settlement 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:

  1. Slotty Labs wallet — We manage player balances. You deposit funds via API, players play against our ledger.
  2. 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? ​

  1. Go to your operator dashboard
  2. Generate a new API key
  3. Update your backend to use the new key
  4. 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:

  1. Before the round: server commits to a seed hash
  2. During the round: player provides their seed
  3. After the round: server reveals the seed
  4. Anyone can verify: SHA-256(serverSeed) === committedHash

See Provably Fair for the full protocol.