# Exactplay Spin API — Complete Agent Integration Guide ## 1. Overview Exactplay Spin is an enterprise microservice delivering game catalog aggregation and instant demo launch resolution for HTML5 casino games. It normalizes disparate operator and studio integrations into a unified, RESTful API. All endpoints support JSON over HTTPS. Game launches redirect into fullscreen responsive client sessions with valid demo balances. --- ## 2. Base URL & Deployment - Production Base URL: `https://gameserver.exactplay.com` - Primary CDN Asset Host: `https://s3.exactplay.com/static` --- ## 3. Supported Studios & Providers (26 Active Studios) | Provider Name | Slug | Integration Driver | Total Demo Titles | |---|---|---|---| | Pragmatic Play | `pragmatic-play` | `pragmaticPlay` | 689 | | Games Global | `games-global` | `gamesGlobal` | 624 | | Play'n GO | `playn-go` | `playngo` | 451 | | Playtech | `playtech` | `playtech` | 292 | | Red Tiger | `red-tiger` | `redTiger` | 246 | | Hacksaw | `hacksaw` | `hacksaw` | 234 | | Amusnet | `amusnet` | `amusnet` | 225 | | Relax Gaming | `relax-gaming` | `relaxGaming` | 188 | | Yggdrasil | `yggdrasil` | `yggdrasil` | 130 | | iSoftBet | `isoftbet` | `isoftbet` | 128 | | ELK Studios | `elk-studios` | `elkStudios` | 128 | | Quickspin | `quickspin` | `quickSpin` | 126 | | Nolimit City | `nolimit-city` | `nolimitCity` | 123 | | NetEnt | `netent` | `netent` | 121 | | Wazdan | `wazdan` | `wazdan` | 107 | | Stakelogic | `stakelogic` | `stakelogic` | 94 | | Booming Games | `booming-games` | `boomingGames` | 87 | | Playson | `playson` | `playson` | 79 | | Novomatic | `novomatic` | `novomatic` | 77 | | SYNOT Games | `synot-gaming` | `synot` | 67 | | Thunderkick | `thunderkick` | `thunderkick` | 57 | | Gamomat | `gamomat` | `gamomat` | 56 | | Endorphina | `endorphina` | `endorphina` | 47 | | Slotmill | `slotmill` | `slotmill` | 42 | | Big Time Gaming | `big-time-gaming` | `bigTimeGaming` | 34 | | Revolver Gaming | `revolver-gaming` | `revolverGaming` | 33 | --- ## 4. Complete API Reference ### 4.1 List Providers - **Endpoint**: `GET /api/v1/providers` - **Description**: Returns all active studios with the total count of enabled games. - **Query Parameters**: None - **Response Format**: ```json [ { "id": 974, "providerName": "Relax Gaming", "providerSlug": "relax-gaming", "integration": "relax", "isDisabled": false, "createdAt": "2026-09-08T06:14:39.082Z", "_count": { "games": 178 }, "gameCount": 178 } ] ``` --- ### 4.2 List Games (Paginated & Filterable) - **Endpoint**: `GET /api/v1/games` - **Query Parameters**: - `provider` (string, optional): Filter by provider slug (e.g. `relax-gaming`, `playn-go`, `synot-gaming`, `pragmatic-play`, with legacy fallbacks supported). - `search` (string, optional): Case-insensitive search on game title or slug. - `page` (integer, optional, default: `1`): 1-indexed page number. - `pageSize` (integer, optional, default: `20`, max: `100`): Results per page. - **Response Format**: ```json { "data": [ { "id": 1234, "gameName": "Money Train 2", "gameSlug": "money-train-2", "gameCode": "moneytrain2_94", "integration": "relax", "gameLauncher": "https://gameserver.exactplay.com/game/relax-gaming/money-train-2", "providerName": "Relax Gaming", "providerSlug": "relax-gaming", "images": [ { "type": "THUMBNAIL_LANDSCAPE", "url": "https://s3.exactplay.com/static/relax/money-train-2/thumbnail_landscape.png", "width": 660, "height": 370 }, { "type": "THUMBNAIL_SQUARE", "url": "https://s3.exactplay.com/static/relax/money-train-2/thumbnail_square.png", "width": 512, "height": 512 }, { "type": "THUMBNAIL_PORTRAIT", "url": "https://s3.exactplay.com/static/relax/money-train-2/thumbnail_portrait.png", "width": 750, "height": 848 }, { "type": "BACKGROUND", "url": "https://s3.exactplay.com/static/relax/money-train-2/background.jpg", "width": 1920, "height": 1080 } ] } ], "meta": { "total": 4485, "page": 1, "pageSize": 20, "totalPages": 225 } } ``` --- ### 4.3 Random Games - **Endpoint**: `GET /api/v1/games/random` - **Description**: Fast pseudo-random game picker for lobbies, game carousels, and recommendations. - **Query Parameters**: - `pageSize` (integer, optional, default: `12`): Number of games to return. - `provider` (string, optional): Filter random selection to a specific provider slug. - `exclude` (string, optional): Game slug to exclude (useful when fetching related games). --- ### 4.4 Single Game Details - **Endpoint**: `GET /api/v1/game/:providerSlug/:gameSlug` - **Example**: `GET /api/v1/game/netent/twin-spin` - **Description**: Detailed game metadata, studio affiliation, launcher URL, and image assets. --- ### 4.5 Dynamic Game Launcher - **Endpoint**: `GET /game/:providerSlug/:gameSlug` - **Query Parameters**: - `channel`: `web` (desktop) or `mobile` (touchscreen layout). - `lang`: Language code (`en`, `es`, `de`, `fr`, `it`, `pt`, `tr`, etc.). - `cur`: 3-letter currency code (`USD`, `EUR`, `GBP`, etc.). - `lobby_url`: Optional URL to return to when player exits the game. - **Behavior**: - Automatically selects the provider's launcher generator (static CloudFront, RGS gateway, or signed session). - NetEnt: Dynamically issues a real-time cryptographic signed session token. - Returns an HTML container with Schema.org `VideoGame` structured data and performs an immediate native `window.location.replace(...)` redirect. --- ## 5. Embed Patterns for Frontend & Chat Agents ### Standard Responsive Iframe: ```html