Get the price chart and current price of a coin
/v1/chains/{chain}/tokens/{token}/pricesCall this to draw a price chart for a coin and to show its price now. data holds:
points: the chart, oldest first.tis Unix time in seconds andusdthe price in US dollars.interval_sis the step between points.current: the latest price with its own timet.change_pct: the change from the first point tocurrent, in percent, rounded to 2 decimals. It isnullwhen the points do not reach from the start of the range to now, or when there are none, so show a dash and not 0.symbol,decimalsandconfidence: what the coin is, and DefiLlama's score from 0 to 1 for how reliable the price is.sourceandfetched_at: where the numbers come from (defillama) and when Sona read the chart from it.stale:truewhen DefiLlama could not answer and the chart is an older copy, or when the points do not cover the range (thenchange_pctisnull). Show it, but do not treat it as live.
The token is native for the chain's own coin (ETH on Ethereum, MON on Monad, USDC on Arc), or a 0x address of 40 hex digits in any case. The range is the window of the chart: 1d (25 points, hourly), 7d (168, hourly, the default), 30d (180, every 4 hours), 90d (180, every 12 hours), 1y (365, daily) or all (up to 500, from the first price). A coin that is newer than the window has fewer points. Points before the chain's price floor are left out: 2015-07-30 on Ethereum 2025-11-24, the mainnet launch, on Monad and 2026-05-12, the genesis block, on Arc. A bridged token that DefiLlama prices with the history of its original, such as USDC on Monad, therefore starts at the floor.
Prices come from DefiLlama's free coins API. Sona reads them on the server and keeps them for a few minutes (a 7d chart for 10 minutes, a 1y or all chart for 6 hours, the current price for 1 minute), so a chart can be a little behind the market and the current price up to a minute.
Path parameters
| Name | Type | Description |
|---|---|---|
chainRequired | string | The chain, as a CAIP-2 chain ID. Ethereum, |
tokenRequired | string | The coin: |
Query parameters
| Name | Type | Description |
|---|---|---|
range | stringDefault 7d | How far back the chart goes: |
Response
The answer, wrapped in the {data, meta, links} envelope. meta.finality is none, because a price is not about one block.
| Field | Type | Description |
|---|---|---|
| chain | string | A chain ID in the CAIP-2 format |
| change_pct | number | null | The change from the first point to |
| confidence | number | DefiLlama's score for how reliable the price is. Below about 0.9 treat the price with care. |
| current | object | |
| decimals | integer | The decimals of the token. The chain's coin has 18. |
| fetched_at | string | When Sona read the chart from the source, in whole seconds. |
| interval_s | integer | The seconds between two points of the chart. |
| points | array of objects | The chart, oldest first. |
| range | string | The range of the chart. |
| source | string | Where the prices come from. |
| stale | boolean |
|
| symbol | string | The ticker DefiLlama gives the coin. |
| token | string |
|
Cost
1 credit. The time limit is 5 seconds.
Errors
| Status | Code |
|---|---|
| 400 | invalid_idinvalid_query |
| 404 | unsupported_chainprice_not_found |
| 429 | rate_limitedcredits_exhausted |
| 500 | internal |
| 503 | upstream_unavailable |
| 504 | deadline_exceeded |
400 invalid_id for a chain that is no CAIP-2 id or a token that is neither native nor an address, 400 invalid_query for a range that is not listed or any other query key, 404 unsupported_chain for a chain other than Ethereum, Monad and Arc, 404 price_not_found when DefiLlama has no price for the coin, 429 rate_limited or credits_exhausted, 503 upstream_unavailable when DefiLlama cannot answer and Sona holds no copy, and 504 deadline_exceeded when the budget runs out.