Game Registration
After uploading a PAR sheet, you register a game configuration to make it playable. A game configuration links a PAR sheet to partner-specific settings like the display name and wager limits.
What a Game Configuration Contains
| Field | Description | Default |
|---|---|---|
parSheetId | The PAR sheet this game uses (must be ACTIVE) | Required |
displayName | The name players see (e.g., "Lucky Sevens") | Required |
configName | A unique system identifier (e.g., "LUCKY_SEVENS") | Required |
minWagerUsd | Minimum wager per spin in USD | $0.10 |
maxWagerUsd | Maximum wager per spin in USD | $5.00 |
wagerIncrementUsd | Wager step size in USD | $0.10 |
Registering a Game
With the SDK
import { KingstoneClient } from '@kingstone/sdk';
const client = new KingstoneClient({
apiKey: 'ks_sandbox_your_key_here',
sandbox: true,
});
const game = await client.registerGame({
parSheetId: 1, // from uploadParSheet response
displayName: 'Lucky Sevens',
configName: 'LUCKY_SEVENS',
minWagerUsd: 0.10,
maxWagerUsd: 2.50,
wagerIncrementUsd: 0.10,
});
console.log(`Game registered: ID ${game.gameConfigId}`);
console.log(` Config: ${game.configName}`);
console.log(` Wager: $${game.minWagerUsd} - $${game.maxWagerUsd} (step $${game.wagerIncrementUsd})`);With curl
curl -X POST https://sandbox.kingstone.dev/api/partner/v1/games \
-H "X-API-Key: ks_sandbox_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"parSheetId": 1,
"displayName": "Lucky Sevens",
"configName": "LUCKY_SEVENS",
"minWagerUsd": 0.10,
"maxWagerUsd": 2.50,
"wagerIncrementUsd": 0.10
}'Config Name Rules
The configName is a unique system identifier for your game. It must be unique across all of your partner's games. Use uppercase letters, numbers, and underscores (e.g., LUCKY_SEVENS, STAMPEDE_GOLD_5REEL).
If you try to register a game with a configName that already exists, the API returns error KS-4202.
Wager Limits
Wager limits control how much a player can bet per spin:
- The player's wager must be at least
minWagerUsd. - The player's wager must be at most
maxWagerUsd. - The player's wager must be on an increment boundary. For example, with
wagerIncrementUsd: 0.10, valid wagers are $0.10, $0.20, $0.30, etc.
If a spin request has a wager outside these bounds, the API returns error KS-4103.
Multiple Games per PAR Sheet
You can register multiple game configurations from the same PAR sheet. This is useful if you want to offer the same math model with different wager ranges or branding:
// Same PAR sheet, different wager limits
await client.registerGame({
parSheetId: 1,
displayName: 'Lucky Sevens — Low Stakes',
configName: 'LUCKY_SEVENS_LOW',
minWagerUsd: 0.10,
maxWagerUsd: 1.00,
});
await client.registerGame({
parSheetId: 1,
displayName: 'Lucky Sevens — High Roller',
configName: 'LUCKY_SEVENS_HIGH',
minWagerUsd: 1.00,
maxWagerUsd: 5.00,
});Each game configuration gets its own outcome queue and SPP counter. They operate completely independently.
Listing Games
Retrieve all games registered by your partner account:
const { games } = await client.listGames();
for (const game of games) {
console.log(`${game.gameConfigId}: ${game.displayName} (${game.configName})`);
console.log(` Wager: $${game.minWagerUsd} - $${game.maxWagerUsd}`);
}Next Steps
With a game registered, you can start executing spins.
