> ## Documentation Index
> Fetch the complete documentation index at: https://docs.zerodash.studio/llms.txt
> Use this file to discover all available pages before exploring further.

# Game catalogue

> The games, their slugs and what the games list tells you about each one.

Games are referenced everywhere by their **slug** — a stable, human-readable identifier such as `lucky-duck`. Slugs appear in launch URLs, in every wallet callback as `gameId`, and in free round campaigns.

<Note>
  The table below is a snapshot. The authoritative list for **your** account — including availability, languages and country restrictions — comes from [List games](/api-reference/customer/list-games). Never hardcode the catalogue.
</Note>

## Current games

| Game         | Slug           | Type                               | Available | Free-to-play | Free rounds |
| ------------ | -------------- | ---------------------------------- | :-------: | :----------: | :---------: |
| Lucky Duck   | `lucky-duck`   | Crash game, single player          |     ✅     |       ✅      |      ✅      |
| Strike Mines | `strike-mines` | Crash game, single player          |     ✅     |       ✅      |      ✅      |
| Dig Deeper   | `dig-deeper`   | Crash game, single player          |     ✅     |       ✅      |      ✅      |
| Plinko       | `plinko`       | Crash game, single player          |     ✅     |       ✅      |      ✅      |
| Altitude     | `altitude`     | Multiplier crash game, multiplayer |     ✅     |       ✅      |      ✅      |
| Jump Frenzy  | `jump-frenzy`  | Crash game, single player          |     ✅     |       ✅      |      ✅      |

## Game types

`gameType` in the API tells you how a game behaves, which is what you need to group and filter a lobby.

<CardGroup cols={2}>
  <Card title="crash-multiplier-single" icon="chart-line">
    Single player, Aviator-like: a multiplier climbs, the player cashes out before it crashes.
  </Card>

  <Card title="crash-multiplier-multi" icon="users">
    The same, played by everyone on a shared round. Adds chat and a live bet list.
  </Card>

  <Card title="crash-single" icon="dice">
    Single player instant game — plinko, dice and similar. Bet, resolve, repeat.
  </Card>

  <Card title="crash-multi" icon="users-rectangle">
    Multiplayer instant game, such as multiplayer roulette.
  </Card>

  <Card title="table-game" icon="spade">
    Blackjack, baccarat, poker.
  </Card>
</CardGroup>

<Tip>
  Multiplayer types share a round across players, so they also share surfaces such as chat. If several brands sit behind one integration, return `subOperatorId` from your [Player authorization](/api-reference/callbacks/player) callback to keep those surfaces separate per brand.
</Tip>

## Reading the games list

```json theme={null}
{
  "data": [
    {
      "slug": "lucky-duck",
      "name": "Lucky Duck",
      "description": "…",
      "gameType": "crash-single",
      "available": true,
      "freeRound": true,
      "freeToPlay": true,
      "desktop": true,
      "mobile": true,
      "images": [
        { "ratio": "3:2", "width": 600, "height": 400, "url": "https://cdn.zerodash.studio/lucky-duck-600x400.webp" }
      ],
      "languages": ["en", "de", "pt-BR"],
      "restrictedCountries": ["IT", "US"]
    }
  ]
}
```

| Field                 | What to do with it                                                                                                                                    |
| --------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
| `slug`                | Your key everywhere. Store it, never derive it from `name`.                                                                                           |
| `available`           | Hide or disable the tile when `false`.                                                                                                                |
| `desktop` / `mobile`  | Filter by the player's device — a desktop-only game on a phone is a bad tile.                                                                         |
| `freeToPlay`          | Show a demo button only when `true`. See [Free-to-play](/launch/free-to-play).                                                                        |
| `freeRound`           | A campaign may only include games where this is `true`.                                                                                               |
| `languages`           | Optional. Pick the closest match for `lang` at launch, or omit it and let us autodetect.                                                              |
| `restrictedCountries` | Optional. ISO 3166-1 alpha-2, enforced on the player's IP at launch. Filter the tile too — a blocked launch is a worse experience than a hidden game. |
| `images`              | Artwork in three ratios. See [Game assets](/launch/assets).                                                                                           |

## Keeping it in sync

<Steps>
  <Step title="Poll on a schedule" icon="clock-rotate-left">
    Every few minutes is plenty. The catalogue is not a hot path — do not fetch it while rendering a lobby page.
  </Step>

  <Step title="Send If-None-Match" icon="tag">
    Store the `ETag` next to your cached copy and send it back. Unchanged catalogues cost you a `304` instead of the full payload. See [Caching](/security/conventions#caching-and-performance).
  </Step>

  <Step title="Reconcile, do not replace" icon="code-merge">
    A slug that disappears means the game is no longer provisioned for you. Keep your historical rows — old rounds still reference that `gameId` in reporting.
  </Step>
</Steps>
