---
title: "Reference price from CoinGecko"
method: GET
path: "/chains/{chain}/token/{address}/ref-price"
tags: ["Avalanche, Base, BNB Chain"]
---

# Reference price from CoinGecko

`GET /chains/{chain}/token/{address}/ref-price`

## Request

- Base URL: `https://api.getchord.xyz/v1`
- URL: `https://api.getchord.xyz/v1/chains/{chain}/token/{address}/ref-price`
- Auth: none declared

CoinGecko's price and 24-hour change for a token by contract address, for a token Chord's index has not seen trade (or to cross-check one it has). Not Chord's own data: the answer says so in `source`. Cached two minutes; `ageS` is the age of the cached CoinGecko answer.

Chain-keyed data for Avalanche C-Chain, Base and BNB Chain, served from Chord's rollup tables for the chain (every swap summed by hour, token and venue). Only the trade tape, the prints ticker and the wallet read raw rows, scoped to one token or one wallet and bounded.

- **Access.** No key needed while the chain is public (all three are today). A chain whose tape is off, or that is not public yet, answers `400 UNSUPPORTED_CHAIN` ("chain N is not served yet") unless the request carries an `X-API-Key`; those answers are sent `Cache-Control: private`.
- **Ingest floor.** Every count, volume and print covers trades at or above the chain's floor, returned as `ingestFloor`. BNB Chain runs at $100 today; Avalanche and Base at 0.
- **Readiness.** `503 NOT_READY` until the chain's rollup has run on this deployment; `503 CHAIN_DATA_UNAVAILABLE` when the store cannot be read. Never treat either as "no trades".

## Path parameters

- `chain` 'avalanche' | 'base' | 'bnb' | 'arbitrum' | 'ethereum' | '43114' | '8453' | '56' | '42161' | '1', required
- `address` string, required: EVM address, hex, case-insensitive.

## Response `200`

- object
  - `chain` integer
  - `address` string: EVM address, hex, case-insensitive.
  - `priceUsd` number
  - `change24hPct` number, nullable
  - `source` 'coingecko'
  - `ageS` integer: Seconds since CoinGecko answered.

## Other responses

- `400`: `UNSUPPORTED_CHAIN` (unknown chain, a chain with its own routes, or a chain not served to this caller yet), or `BAD_ADDRESS`.
- `404`: `NOT_LISTED`: CoinGecko does not list this token on this chain.
- `429`: Over the per-minute limit (`RATE_LIMIT_EXCEEDED`). Read `X-RateLimit-Reset` and back off.
- `503`: `UNAVAILABLE`: CoinGecko did not answer. Retry later.

---

[API](https://skmtc.dev/getchord/apis/chord-api.md) · [All operations](https://skmtc.dev/getchord/apis/chord-api/llms.txt) · [OpenAPI document](https://skmtc.dev/getchord/apis/chord-api/revisions/d3bc4640fea0?raw)
