---
title: "Live price board for the tracked coin universe"
method: GET
path: "/api/live-prices"
tags: ["public-crypto-data"]
---

# Live price board for the tracked coin universe

`GET /api/live-prices`

## Request

- Base URL: `https://api.coinrithm.com`
- URL: `https://api.coinrithm.com/api/live-prices`
- Auth: none required

Keyless paged board of every coin with a live price (about 1,040 on
2026-10-16), sorted by `sortBy`. Unlike the per-coin reads, numerics
here are JSON numbers. `currentPrice`, `volume24h`, `marketCapFiat`,
`high24h`, `low24h` and `sparkline15m` are in `fiat`; changes are
percentages.

Each row carries `priceUpdatedAt` (the live-price write time) with
the derived `priceAgeHours` and `priceStale` (older than
`priceStaleAfterHours`, 72). Stale rows stay on the board with
their last known price; `marketCapSuspect` flags a market cap
CoinRithm does not trust. Despite its name, `sparkline15m` holds
about 7 days of hourly prices (167 points on 2026-10-16), oldest
first, or null with `includeSparkline=false` (a much smaller
payload).

`fiat` is case-sensitive: an untracked or lower-case code is echoed
in `fiat` while the values stay USD. Query parameters other than
the six below are ignored. Also served at `/api/v1/live-prices`
with identical behaviour.

## Query parameters

- `sortBy` 'marketCapUsd' | 'priceUsd' | 'change1h' | 'change24h' | 'change7d' | 'volume' | 'supply' | 'name' | 'rank'
- `sortOrder` 'asc' | 'desc'
- `page` integer
- `limit` integer
- `fiat` string
- `includeSparkline` boolean

## Response `200`

One page of the live price board

- PublicLivePricesResponse
  - `data` PublicLivePriceRow[], required
    - `ucid` string, required: CoinRithm coin id, the `coinId` of the agent endpoints.
    - `slug` string, required
    - `symbol` string, required
    - `name` string, required
    - `rank` integer, nullable: Market-cap rank.
    - `currentPrice` number, required: Price in `fiat`.
    - `change1h` number, nullable: Percent.
    - `change24h` number, nullable: Percent.
    - `change7d` number, nullable: Percent.
    - `high24h` number, nullable
    - `low24h` number, nullable
    - `volume24h` number, nullable
    - `volumeChange24h` number, nullable: Percent.
    - `volumeMissingVenues` integer, nullable: Expected venues missing from `volume24h` because their fetch failed; 0 none known, null unknown.
    - `marketCapFiat` number, nullable: Market cap in `fiat`.
    - `marketCapChange24h` number, nullable: Percent.
    - `marketCapSuspect` boolean: true when CoinRithm does not trust the market cap.
    - `supplyCirculating` number, nullable
    - `supplyTotal` number, nullable
    - `priceUpdatedAt` string, date-time, nullable: Live-price write time.
    - `priceAgeHours` number, nullable: Hours since `priceUpdatedAt`, one decimal.
    - `priceStale` boolean, required: true when older than `priceStaleAfterHours`.
    - `priceStaleAfterHours` number, required: Staleness threshold in hours (72).
    - `sparkline15m` number[], nullable: About 7 days of hourly prices in `fiat`, oldest first, despite the name; null with `includeSparkline=false`.
  - `totalRows` integer, required: Coins on the board across all pages.
  - `fiat` string, nullable: The requested currency code, as sent.

## Other responses

- `400`: Invalid or missing parameters. On a route with a query allowlist, an undocumented query parameter returns `{"error": "unsupported_query_parameter", "message": "Unsupported query parameter: <key>. Supported: <keys>."}`.
- `429`: Per-IP public rate limit exceeded. Honor `Retry-After` when present, otherwise back off; `RateLimit-*` headers report the window.
- `500`: Server error
- `502`: The board failed its own response-contract check; retry later.

---

[API](https://skmtc.dev/coinrithm/apis/coinrithm-agent-trading-api.md) · [All operations](https://skmtc.dev/coinrithm/apis/coinrithm-agent-trading-api/llms.txt) · [OpenAPI document](https://skmtc.dev/coinrithm/apis/coinrithm-agent-trading-api/revisions/28fb59f285fe?raw)
