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. The wager is not a game setting — it is fixed at the PAR sheet's denomination (see Fixed Wager below).

What a Game Configuration Contains

FieldDescriptionRequired?
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

The wager band fields (minWagerUsd / maxWagerUsd / wagerIncrementUsd) are optional and all fixed at the PAR denomination — see Fixed Wager. Omit them; if you send them, each must equal the denomination.

Registering a Game

With the SDK

typescript
import { KingstoneClient } from '@kingstoneapp/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',
});

console.log(`Game registered: ID ${game.gameConfigId}`);
console.log(`  Config: ${game.configName}`);
console.log(`  Fixed wager: $${game.minWagerUsd}`); // === maxWagerUsd === wagerIncrementUsd === PAR denomination

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"
  }'

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-4108 (HTTP 409).

Fixed Wager

Every KINGSTONE game is fixed-wager: each spin wagers exactly the PAR sheet's denominationUsd. There is no player-selectable bet range.

  • You do not set a wager band — the wager is the PAR denomination.
  • The band fields (minWagerUsd, maxWagerUsd, wagerIncrementUsd) are optional; if supplied, each must equal the denomination, or registration is rejected with KS-4103.
  • On the registered game, all three come back equal to the denomination.
  • A spin's wagerUsd must equal that fixed wager. Any other amount is rejected with KS-4103.

To offer a different price point, use a PAR sheet with a different denominationUsd.

Multiple Games per PAR Sheet

You can register multiple game configurations from the same PAR sheet — useful for offering the same math model under different branding. Each configuration gets its own outcome queue and SPP counter, so they operate completely independently. (Both share the same fixed wager, since that is the PAR denomination.)

typescript
// Same PAR sheet + same fixed wager, different branding + independent queues
await client.registerGame({
  parSheetId: 1,
  displayName: 'Lucky Sevens',
  configName: 'LUCKY_SEVENS',
});

await client.registerGame({
  parSheetId: 1,
  displayName: 'Lucky Sevens — VIP',
  configName: 'LUCKY_SEVENS_VIP',
});

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(`  Fixed wager: $${game.minWagerUsd}`); // === maxWagerUsd === wagerIncrementUsd
}

Next Steps

With a game registered, you can start executing spins.

KINGSTONE by Predigy Inc.