---
title: "One coin's price, market data, supply and links"
method: GET
path: "/api/coins/{slug}"
tags: ["public-crypto-data"]
---

# One coin's price, market data, supply and links

`GET /api/coins/{slug}`

## Request

- Base URL: `https://api.coinrithm.com`
- URL: `https://api.coinrithm.com/api/coins/{slug}`
- Auth: none required

Keyless coin profile: price in USD and in `fiat`, 24h change, 24h
high and low, volume, market cap, all-time high and low, supply,
BTC and ETH ratios, links, chains, categories and notices.

Market and supply numerics are decimal STRINGS (numeric columns),
not JSON numbers: parse before comparing. `currentPriceUsd` is
always USD. `currentPrice`, `volume24h`, `marketCap`, `high24h`,
`low24h`, `athUsd` and `atlUsd` are converted to `fiat` (the last
two despite their names); percentages and ratios are unitless.

`priceUpdatedAt` is when the coin's live price was last written.
`priceStale: true` means that is more than `priceStaleAfterHours`
(72) ago: the price is kept as the last known value, never hidden.
`marketCapSuspect: true` flags a market cap CoinRithm does not trust
(`marketCapSuspectReason`, for example `stale_dead_pair`). A coin
without a live price (typically an inactive listing) answers 200
with the price fields, `priceUpdatedAt` and `marketCapSuspect` null
and `priceStale: false`.

Query parameters other than `fiat` and `locale` are ignored. Unknown
slug: 404 `{"message": "not_found"}`. Also served at
`/api/v1/coins/{slug}` with identical behaviour.

## Path parameters

- `slug` string, required

## Query parameters

- `fiat` string
- `locale` string

## Response `200`

Coin profile with price, freshness and links

- PublicCoinDetail: Price snapshot for one coin. Market and supply numerics are decimal STRINGS, null when unknown; parse before comparing. Converted fields use the requested `fiat`; `currentPriceUsd` is always USD.
  - `ucid` string, required: CoinRithm coin id, the `coinId` of the agent endpoints.
  - `slug` string, required
  - `symbol` string, required
  - `name` string, required
  - `currentPriceUsd` string, nullable: Price in USD.
  - `currentPrice` string, nullable: Price in `fiat`.
  - `change24h` string, nullable: 24h price change in percent.
  - `high24h` string, nullable: 24h high in `fiat`.
  - `low24h` string, nullable: 24h low in `fiat`.
  - `volume24h` string, nullable: 24h volume in `fiat`.
  - `volumeChange24h` string, nullable: 24h volume change in percent.
  - `marketCap` string, nullable: Market cap in `fiat`.
  - `marketCapChange24h` string, nullable: 24h market-cap change in percent.
  - `marketCapRank` integer, nullable
  - `marketCapSuspect` boolean, nullable: true when CoinRithm does not trust the market cap; null without a price.
  - `marketCapSuspectReason` string, nullable
  - `athUsd` string, nullable: All-time high, converted to `fiat` despite the name.
  - `athDate` string, date-time, nullable
  - `atlUsd` string, nullable: All-time low, converted to `fiat` despite the name.
  - `atlDate` string, date-time, nullable
  - `supplyCirculating` string, nullable
  - `supplyTotal` string, nullable
  - `supplyMax` string, nullable: Maximum supply; `"-1"` means uncapped, null unknown.
  - `supplyPercent` string, nullable: Circulating supply as a percent of `supplyMax`. Not meaningful (negative) when `supplyMax` is `-1`.
  - `btcEquivalent` string, nullable: Price in BTC.
  - `btcChange24h` string, nullable: 24h change of the BTC ratio, in percent.
  - `ethEquivalent` string, nullable: Price in ETH.
  - `ethChange24h` string, nullable: 24h change of the ETH ratio, in percent.
  - `priceUpdatedAt` string, date-time, nullable, required: As-of time of the price. On `/api/coins/{slug}` the live-price write time; on `/api/coins/{slug}/price` the price-summary row's write time (see that operation). Null when unknown.
  - `priceAgeHours` number, nullable, required: Hours since `priceUpdatedAt`, one decimal; null when unknown.
  - `priceStale` boolean, required: true when `priceAgeHours` exceeds `priceStaleAfterHours`; false when the age is unknown.
  - `priceStaleAfterHours` number, required: Staleness threshold in hours (72).
  - `volumeMissingVenues` integer, nullable: Expected venues missing from `volume24h` because their fetch failed; 0 none known, null unknown.
  - `websiteUrl` string, nullable
  - `socials` union: Social links, normally an array of `{url, socialId}` objects (the coin profile adds `name` and `icon`); some directory rows carry an empty object instead.
    - object[]
      - `url` string
      - `socialId` integer
      - `name` string
      - `icon` string
    - object
  - `infoLinks` object, nullable: Link groups such as `website`, `whitepaper`, `explorers`, `wallets`, `source_code` and `audit`.
  - `chains` object[], nullable
    - `name` string
    - `translations` object: Display name by language code (de, en, es, fr, it, nl, pt, tr).
    - `shortName` string
    - `icon` string
    - `contractAddress` string
  - `categories` PublicCoinTranslatedName[], nullable
    - `name` string
    - `translations` object: Display name by language code (de, en, es, fr, it, nl, pt, tr).
  - `notices` object[], nullable: Editorial notices about the coin in the requested `locale`.
    - `id` integer
    - `url` string, nullable
    - `text` string
  - `watchlistCount` integer: CoinRithm users watching the coin.
  - `watchlistRank` integer, nullable

## 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>."}`.
- `404`: Unknown slug
- `429`: Per-IP public rate limit exceeded. Honor `Retry-After` when present, otherwise back off; `RateLimit-*` headers report the window.
- `500`: Server error

---

[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)
