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

# GET /v1/games — Games You Can Pass as appId

> List the games your key can read with appId — CS2, Dota 2 and Rust — and whether it can also buy in each one.

CSBoard sells CS2, Dota 2 and Rust items. You choose the game with the `appId` parameter, using Steam's own appIds: `730` for CS2, `570` for Dota 2, `252490` for Rust. This endpoint lists the games your key can use and, for each one, whether it can buy there too (`tradable`).

**Authentication required.** Send your key as `Authorization: Bearer csb_pub_...`. No balance is needed, so you can check this before you fund the account.

## Example request

```bash theme={null}
curl https://csboard.com/v1/games \
  -H "Authorization: Bearer csb_pub_..."
```

## Example response

```json theme={null}
{
  "games": [
    { "appId": 730, "name": "CS2", "tradable": true },
    { "appId": 570, "name": "Dota 2", "tradable": true },
    { "appId": 252490, "name": "Rust", "tradable": true }
  ]
}
```

A game with `tradable: false` can be read through the market data endpoints but not bought yet.

## Where `appId` works

| Endpoint | How to pass it |
| - | - |
| [`GET /v1/listings`](/api-reference/get-listings) | Query parameter `appId` |
| [`GET /v1/prices`](/api-reference/get-prices) | Query parameter `appId` |
| [`GET /v1/listings/availability`](/api-reference/get-listings-availability) | Query parameter `appId` |
| [`POST /v1/orders`](/api-reference/post-orders) | Body field `appId` |
| [`GET /v1/public/prices`](/api-reference/get-public-prices) | Query parameter `appId` (no key needed) |

Leave `appId` out and every endpoint answers for CS2, exactly as it did before the parameter existed.

## What changes for Dota 2 and Rust

* **Same response shape.** Dota 2 and Rust rows have the same keys as CS2 rows, so one parser reads all three. The CS2-only fields — `wear`, `doppler_phase`, `float_value`, `paint_seed`, `inspect_link`, `tradable_at`, `listed_at` — are `null`, and `stickers` is `[]`.
* **CS2-only filters are refused, not ignored.** Sending `wear`, `min_float`, `max_float`, `stat_trak`, `souvenir`, `available_after` or `sort=newest` with a Dota 2 or Rust `appId` answers `400 invalid_param`. On `GET /v1/prices` only `wear` is CS2-only.
* **Orders are queued.** A Dota 2 or Rust order answers `delivery: "pending"` and `expected_minutes: null`. Follow it with [`GET /v1/orders/{id}`](/api-reference/get-order).
* **Ids belong to their game.** Buy and check ids under the same `appId` you read them with.

These endpoints stay **CS2 only** and do not read `appId`: [`GET /v1/listings/stream`](/api-reference/get-listings-stream), [`GET /v1/prices/snapshot.ndjson.gz`](/api-reference/get-prices-snapshot) and [`POST /v1/market/buy`](/api-reference/post-market-buy).

## Error codes

An `appId` your key cannot use — unknown, switched off, or not open to you — answers `400 unsupported_game`. The body lists what you can use:

```json theme={null}
{
  "code": "unsupported_game",
  "detail": "appId 440 is not available to this key. Supported: 730 (CS2), 570 (Dota 2), 252490 (Rust).",
  "supported_app_ids": [730, 570, 252490]
}
```

On `POST /v1/orders`, `supported_app_ids` lists the games you can **buy** in.

| HTTP status | Code | Meaning |
| - | - | - |
| 401 | `missing_api_key` / `invalid_api_key` | Missing or invalid API key. |
| 429 | `rate_limit_exceeded` | Over your key's per-minute limit. Wait for the `Retry-After` header value. |


## OpenAPI

````yaml GET /games
openapi: 3.1.0
info:
  title: CSBoard API
  version: 1.0.0
  description: >-
    Market data over the CSBoard marketplace — live listings, floats, stickers,
    minAsk prices, FX rates — plus opt-in buying straight from your balance.
    Free to read, key-gated, built for automation.
  contact:
    name: CSBoard
    url: https://csboard.com/docs
servers:
  - url: https://csboard.com/v1
    description: Production
security:
  - bearerAuth: []
tags:
  - name: Status
    description: Liveness and freshness probes.
  - name: Market data
    description: Read the live catalog, prices, and FX rates.
  - name: Trading
    description: Buy listings from your CSBoard balance. Opt-in, key-gated.
  - name: P2P
    description: >-
      List your own CS2 skins on the CSBoard P2P market. Free — any valid key,
      no balance requirement.
  - name: Account
    description: Your balance, settled funds, and trading status.
  - name: Webhooks
    description: Register an endpoint and receive signed order updates instead of polling.
paths:
  /games:
    get:
      tags:
        - Market data
      summary: Games you can pass as appId
      description: >-
        The games this key may read with `appId`, CS2 first, and whether it may
        also buy there (`tradable`). Key only — no balance requirement, so you
        can check it before funding.
      operationId: listGames
      responses:
        '200':
          description: Games available to this key.
          content:
            application/json:
              schema:
                type: object
                properties:
                  games:
                    type: array
                    items:
                      $ref: '#/components/schemas/Game'
                required:
                  - games
              example:
                games:
                  - appId: 730
                    name: CS2
                    tradable: true
                  - appId: 570
                    name: Dota 2
                    tradable: true
                  - appId: 252490
                    name: Rust
                    tradable: true
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/RateLimited'
components:
  schemas:
    Game:
      type: object
      properties:
        appId:
          type: integer
          description: Steam appId — the value to pass as `appId`.
          example: 570
        name:
          type: string
          description: Display name, e.g. `CS2`, `Dota 2`, `Rust`.
        tradable:
          type: boolean
          description: >-
            Whether this key may also buy in this game (`POST /orders` with this
            `appId`). `false` means read-only for now.
      required:
        - appId
        - name
        - tradable
    Error:
      type: object
      description: >-
        All errors return { code, detail }. Some carry extra fields (e.g.
        price_moved adds current_total_usd, insufficient_balance adds
        required_usd/current_usd).
      properties:
        code:
          type: string
          description: >-
            Machine-readable error code, e.g. rate_limit_exceeded,
            trading_not_enabled, price_moved.
        detail:
          type: string
          description: Human-readable explanation.
      required:
        - code
  responses:
    Unauthorized:
      description: Missing or invalid API key (`missing_api_key` or `invalid_api_key`).
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            code: missing_api_key
            detail: >-
              Provide your API key via `Authorization: Bearer csb_pub_…`.
              Generate one at https://csboard.com/profile?tab=api
    RateLimited:
      description: >-
        Rate limit exceeded. Includes a Retry-After header (60 seconds on the
        per-key limits).
      headers:
        Retry-After:
          description: Seconds to wait before retrying.
          schema:
            type: integer
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            code: rate_limit_exceeded
            detail: Rate limit of 100 requests/min exceeded.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        Send your key as a Bearer token on every request: `Authorization: Bearer
        csb_pub_...`. Generate keys in your CSBoard profile.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.