> ## 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/health — CSBoard API Liveness and Freshness Probe

> Check whether the CSBoard API is reachable and how stale the price list is. The only endpoint that works without an API key — safe to poll unauthenticated.

The health endpoint is a lightweight probe that confirms the API is reachable and tells you how stale the materialized price list is. It is the **only** endpoint that works without an API key, making it safe to poll from monitoring systems or to gate your application startup on a freshness check before making authenticated calls.

## Response fields

<ResponseField name="status" type="string" required>
  Always `"ok"` when the service is up.
</ResponseField>

<ResponseField name="groups" type="integer" required>
  Count of priced item groups currently in the price list (one group per unique `market_hash_name` + `wear` + `doppler_phase` combination).
</ResponseField>

<ResponseField name="price_list_age_seconds" type="integer" required>
  Age of the materialized price list in seconds. Use this as a freshness indicator — a large value means prices may be lagging.
</ResponseField>

## Example request

```bash theme={null}
curl https://csboard.com/v1/health
```

## Example response

```json theme={null}
{
  "status": "ok",
  "groups": 184213,
  "price_list_age_seconds": 42
}
```

## Error codes

| HTTP status | Code                  | Meaning                                                                               |
| ----------- | --------------------- | ------------------------------------------------------------------------------------- |
| 429         | `rate_limit_exceeded` | Over the request rate limit. Back off and retry after the `Retry-After` header value. |

<Tip>
  Poll this endpoint from your health-check or startup logic before making authenticated calls. If `price_list_age_seconds` is unexpectedly large (e.g. above a few minutes), treat downstream price data as potentially stale.
</Tip>


## OpenAPI

````yaml GET /health
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: Account
    description: Your balance, settled funds, and trading status.
paths:
  /health:
    get:
      tags:
        - Status
      summary: Liveness + freshness probe
      description: >-
        Liveness and price-list freshness probe. No key required — use it to
        check the API is up and the price list is fresh. This is the only
        endpoint that works without authentication.
      operationId: getHealth
      responses:
        '200':
          description: Service is up.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Health'
              example:
                status: ok
                groups: 184213
                price_list_age_seconds: 42
      security: []
components:
  schemas:
    Health:
      type: object
      properties:
        status:
          type: string
          example: ok
        groups:
          type: integer
          description: Count of priced item groups.
        price_list_age_seconds:
          type: integer
          description: Age of the materialized price list, in seconds (freshness).
      required:
        - status
        - groups
        - price_list_age_seconds
  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.

````