GET/api/stablecoins
Full stablecoin list with current supply, price, chain breakdown, and FX rates. Data is refreshed by cron every 15 minutes; the cache entry has a 10-minute max-age.
Cache: realtime — X-Data-Age and Warning headers included.
Response
{
"peggedAssets": [StablecoinData, ...],
"fxFallbackRates": { "peggedEUR": 1.082, "peggedGBP": 1.26 }
}fxFallbackRates is present when the ECB FX-rate cron has run; keys are pegType strings (e.g. "peggedEUR"), values are rates in USD.
`StablecoinData` fields
| Field | Type | Description | |||
|---|---|---|---|---|---|
id | string | Pharos stablecoin ID | |||
name | string | Full name (e.g. "Tether") | |||
symbol | string | Ticker (e.g. "USDT") | |||
geckoId | `string \ | null` | CoinGecko ID (normalized output key; upstream DefiLlama uses gecko_id) | ||
pegType | string | DefiLlama peg type (e.g. "peggedUSD", "peggedEUR") | |||
pegMechanism | string | "fiat-backed", "crypto-backed-algorithmic", etc. | |||
priceSource | string | Source label for the current price ("defillama-list", "coingecko", composite agreement labels such as "binance+coingecko+kraken", "geckoterminal", "protocol-redeem", "dexscreener", etc.). For high-confidence consensus this label can describe the full agreeing cluster even when the published price is the cluster median rather than one member's raw mark. When no usable current price survives validation, the cache keeps price = null and serializes priceSource = "missing" for contract stability. | |||
priceConfidence | `string \ | null` | Price confidence level: "high" (cross-validated agreement), "single-source", "low" (sources diverge), "fallback" (enrichment pipeline) | ||
priceObservedAt | `number \ | null` | Unix seconds for the effective observation time attached to the selected source price; interpret alongside priceObservedAtMode | ||
priceObservedAtMode | `"upstream" \ | "local_fetch" \ | "unknown" \ | null` | Whether priceObservedAt came from source-native freshness metadata, local fetch time, or legacy/unknown provenance |
priceSyncedAt | `number \ | null` | Unix seconds when Pharos selected and wrote the current price during the sync | ||
supplySource | `string \ | undefined` | Supply data source: "defillama", "defillama-history-gap-fill" (used when a tracked DefiLlama live row collapses to zero supply but recent DefiLlama chart history still has a fresh non-zero total), "coingecko-gap-fill" (used when tracked deployments are missing from DefiLlama chain coverage and CoinGecko repairs the total/history buckets), "coingecko-fallback", or "onchain-total-supply" (used when a supplemental asset is normalized from on-chain total supply instead of an upstream market-cap field) | ||
price | `number \ | null` | Current price in USD. For high-confidence consensus this is the median of the winning agreeing cluster; for single-source, low-confidence, or fallback outcomes it is the selected source price. | ||
circulating | Record<string, number> | Current supply in USD, keyed by pegType (e.g. { "peggedUSD": 138000000 }) | |||
circulatingPrevDay | Record<string, number> | Supply 24 h ago | |||
circulatingPrevWeek | Record<string, number> | Supply 7 days ago | |||
circulatingPrevMonth | Record<string, number> | Supply ~30 days ago | |||
chainCirculating | Record<string, ChainCirculating> | Per-chain breakdown. For "coingecko-gap-fill" and "defillama-history-gap-fill" assets this remains DefiLlama-led unless the missing total can be allocated safely to one tracked chain, so the per-chain sum may be a lower bound on total supply. | |||
chains | string[] | List of chain names where the token is deployed | |||
consensusSources | string[] | Source names that returned a valid price for this coin during the sync cycle. Defaults to [] when absent. |
`ChainCirculating`
{
"current": 50000000,
"circulatingPrevDay": 49000000,
"circulatingPrevWeek": 47000000,
"circulatingPrevMonth": 44000000
}> All circulating values are already in USD (the list endpoint does not return native-currency values for non-USD pegs). Do not multiply by price.