# Quickstart

From an API key to a game running against your wallet, in five steps.

## 1. Get an API key

Sign in to the [portal](/portal) and create a key under **API keys**. It is
shown once; store it in your secret store. Keys look like `mk_…`.

```bash
export GHOSTAGG_API="https://<your API base URL>"   # shown in the portal
export GHOSTAGG_KEY="mk_…"
```

## 2. List the catalogue

```bash
curl -s "$GHOSTAGG_API/operator/games" \
  -H "Authorization: Bearer $GHOSTAGG_KEY"
```

Each game has an id, a version, a title, its provider and its modes with the
declared RTP and cost multiplier (`1` for a base spin, for example `100` for a
bonus buy).

## 3. Implement your wallet

Expose the five [wallet callbacks](/docs/wallet) on an HTTPS URL of your
server and send us that URL. We configure it and hand you the wallet signing
secret, once. We sign every call; verify the signature before you parse the
body.

## 4. Mint a session when a player opens a game

From your server — never from the browser:

```bash
curl -s "$GHOSTAGG_API/operator/sessions" \
  -H "Authorization: Bearer $GHOSTAGG_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "gameId": "bigger-bass-bonanza",
    "token": "your-own-session-token",
    "playerRef": "player-4711",
    "currency": "USD",
    "device": "desktop"
  }'
```

The answer carries our `sessionID`, the fairness commitment and `launch`, the
query string the game client expects.

## 5. Launch the game

Open the game client with the launch parameters and the game server host:

```text
https://<game host>/<gameId>/?<launch>&rgs_url=<game server host>
```

The client calls our server, we call your wallet: `authenticate` on load,
`debit` and `credit` on every round. That is the whole integration.

## Try it without code

The [games tester](/portal/games) in the portal plays every title against our
demo wallet and shows each server call as it happens. The
[API playground](/docs/playground) sends real requests with your key.
