Skip to main content
GET
List stablecoins with depeg data and the v3 composite grade
The v3 depeg list with segment pinned to stablecoin server-side — this route cannot return an RWA, and a caller-supplied segment is ignored. Use it when your integration only ever wants stablecoins. If you need both segments from one call, use GET /rwa and pass segment yourself — note those rows do not carry the v3 composite grade this route adds.
Two polarities in one payload. Each row carries the v3 composite grade (risk polarity: A+ ≈ 0 risk, F ≈ 100) and the v2 depeg score. Do not compare them directly. See Score Polarity.

What counts as a stablecoin

A segment is a category derived from the asset classification fields (asset_class, is_rwa, subclass); it is not one of their values: asset_class = fiat means the token is denominated in a government currency — it is not a statement about what backs the peg. USDC, DAI and USDe are all fiat-denominated and all stablecoins, whether the reserves are cash, over-collateralised crypto or a hedged derivative book.
Do not pass an asset_class value such as fiat or fixed-income to segment. They are different vocabularies: segment is stablecoin or rwa, while each returned row’s asset_class reads fiat, fixed-income, commodity and so on. Every row carries both, so you can see why it matched.
segment = stablecoin is not the same as asset_class = "fiat".A token joins the pegged universe through any one of three signals: asset_class = "fiat", is_rwa = true, or a stable peg behaviour. The third admits tokens that assert a stable peg whose backing is not confirmed, and those deliberately carry no asset_class. They resolve to the stablecoin segment.Read each row’s asset_class to tell a confirmed fiat token ("fiat") from one carrying none (null). A non-trivial minority of stablecoin rows are null, so do not filter client-side on asset_class === "fiat" expecting the full set.

Narrowing by peg mechanism

pegType filters by how the peg is held, which is a separate axis from the segment:
yield-bearing is not a fifth peer of the other four. The first four partition how the peg is defended; yield-bearing answers whether the holder receives yield, so it cuts across them. Treat the five as one selector rather than a clean taxonomy, and do not assume pegType=direct returns every cash-backed token.
A classification outage does not fail closed here. The grades and detail aliases answer 503 when the classification cannot be loaded; this list is served from a cached set of tracked tokens instead, so the same outage yields the last-known list, or an empty one, with 200. The stale flag reflects the pricing snapshot, not the token set, so it will not signal it either. Treat an unexpectedly empty result as unknown rather than as “no stablecoins match”.The 503 in the response list below is the payment path (x402), not a classification failure.
A token with no denomination record falls back to a currency lookup, where the listed fiat codes read direct. Treat direct as “cash-backed or not yet classified” rather than a confirmed reserve model.

Authorizations

x-api-key
string
header
required

Query Parameters

chain
string

Filter by short chain code (e.g. eth, arb, pol, opt, base, bsc, sol).

denomination
string

Filter by denomination code (e.g. USD, EUR, XAU).

tier
enum<string>

Filter by display tier.

Available options:
critical,
warning,
watch,
ok,
premium
pegType
enum<string>

Filter by peg mechanism (denomination.pegType): direct = fiat-backed, collateralized = crypto-backed. A token with no recorded denomination falls back to Webacy's currency mapping, where the listed fiat codes read as direct; one with no denomination at all (a token pending classification, or a currency outside that mapping) is excluded by this filter. Unknown values are ignored.

Available options:
direct,
collateralized,
algorithmic,
derivative-hedged,
yield-bearing
tags
string

Comma-separated token labels: standard, yield, rwa, gold, bridged, vault.

minScore
number

Minimum risk score (0-100).

Required range: 0 <= x <= 100
maxScore
number

Maximum risk score (0-100).

Required range: 0 <= x <= 100
minMcap
number

Minimum market cap in USD.

Required range: x >= 0
liquidity
enum<string>

Filter by liquidity tier.

Available options:
high,
medium,
low,
very_low
q
string

Substring match on symbol, name, or address.

Maximum string length: 100
sort
enum<string>
default:score
Available options:
score,
symbol,
chain,
tier,
abs_dev_clean,
market_cap_usd,
ts
order
enum<string>
default:desc
Available options:
asc,
desc
showAll
boolean
default:false

When true, include excluded/problematic tokens that are normally suppressed.

collapsedOnly
boolean
default:false

When true, return only collapsed/dead tokens (graveyard view).

page
integer
default:1
Required range: x >= 1
pageSize
integer
default:50
Required range: 1 <= x <= 500
grading_scheme
enum<string>
default:v2

Grading scheme to pin — selects the per-category weights and letter-grade band table. Default v2 (alias of v1's weights, standard 11-band grade scale). peg is the peg-loss-focused weighting. v3/v4/peg-liquidity are registered but withheld behind the v3-grading-scheme feature flag. Unknown values return 400 with the supported list.

Available options:
v1,
v2,
peg

Response

Paginated list of pegged tokens with depeg risk data and ecosystem aggregates

items
object[]
required
pagination
object
required
aggregates
object
required

Ecosystem-wide aggregates computed before the view filters. When segment is supplied they describe that segment only (stablecoins or RWAs), since the segment filter is applied before aggregation.

tier_counts
object
required

Post-filter tier counts (after query filters, before pagination).

stale
boolean
required

true when the snapshot is served from the fallback cache during an upstream data outage.

schema_version
string
required
Example:

"3.3"

grades_available
boolean
required

false when the grading pipeline was unavailable for this request (grades are null for that reason).