One TypeScript SDK, zero runtime dependencies, one API host for sandbox and production. The integration is about 20 lines — and here they are.
import { SlottyClient } from '@slottylabs/sdk'; const slotty = new SlottyClient({ apiKey, webhookSecret }); const { launchToken } = await slotty.auth.createSSOToken({ playerId: 'your-player-id', currency: 'EUR', jurisdiction: 'MT',}); const url = slotty.games.getLaunchUrl('slotty-slots', launchToken);// → embed in an <iframe>. That's the integration.
7 event types today (round completed/cancelled, jackpot won, deposit confirmed, withdrawal completed/failed, player created), pushed to your server so you never poll. More on the roadmap.
HMAC-SHA256 signatures with timestamp tolerance — a captured webhook cannot be replayed. The SDK verifies signatures for you.
Every event ships in a typed envelope with an idempotency ID — process each event exactly once, even across retries.
Exponential retries over 8 attempts, a circuit breaker, and a dead-letter queue with per-delivery replay from the admin panel. Your maintenance window doesn't lose events.
The sandbox runs the production stack in test mode — so what you test is what ships.
Round event streams give you visibility into gameplay, and round reconstruction from persisted event logs enables dispute resolution — so support disputes end with evidence, not arguments.
The onboarding checklist (7 steps, from sandbox key to activation) is tracked in the platform and queryable by API — your project manager can watch go-live progress without asking anyone.
Docs are public, the SDK is on npm, and your sandbox tenant can be provisioned the same day you ask.