Skip to content

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

FieldDescriptionDefault
parSheetIdThe PAR sheet this game uses (must be ACTIVE)Required
displayNameThe name players see (e.g., "Lucky Sevens")Required
configNameA unique system identifier (e.g., "LUCKY_SEVENS")Required
minWagerUsdMinimum wager per spin in USD$0.10
maxWagerUsdMaximum wager per spin in USD$5.00
wagerIncrementUsdWager step size in USD$0.10

Registering a Game

With the SDK

typescript
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

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

typescript
// 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:

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

KINGSTONE by Predigy Inc.