Assets
GET /v1/assets — token symbols plus full base-asset enrichment (risk dimensions, backing profile, scores) for every asset category.
GET /v1/assets
List all tracked asset symbols with their active vault counts. Use this to discover asset filters for the vaults list.
Example
curl https://api.philidor.io/v1/assetsResponse
{
"data": [
{ "asset_symbol": "USDC", "vault_count": 189 },
{ "asset_symbol": "WETH", "vault_count": 50 },
{ "asset_symbol": "USDT", "vault_count": 45 }
]
}GET /v1/assets/enriched
Paginated listing of base/underlying assets across all categories (stablecoins, LSTs/LRTs, wrapped BTC, governance tokens, native assets, and RWAs) with full risk-registry enrichment: risk score and tier, the complete risk-dimension set, stablecoin backing profile, risk overlays, issuer, institutional metadata, data provenance, reviewer, freshness, and per-chain risk overlays.
This is the place to pull context on a base token (USDC, USDT, AUSD, …) — the /v1/assets list above only returns symbols and vault counts.
Query Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
| page | number | 1 | Page number (≥ 1) |
| limit | number | 20 | Results per page (1–100) |
| chain | number | — | Filter by chain_id (e.g. 1) |
| category | string | — | Filter by category: native, fiat_backed_stablecoin, cdp_stablecoin, synthetic_stablecoin, lst, lrt, wrapped_btc, governance_token, defi_derivative, tokenized_treasury, t_bill_backed_stable, rwa_credit, commodity_backed, tokenized_equity, wrapped_crypto, unreviewed |
| instrument_type | string | — | Filter by instrument type |
| defi_instrument | string | — | Filter by DeFi instrument classification |
| include_quality | string | — | Include quality fields when supported |
| review_status | string | — | Filter by review status: reviewed, provisional, unreviewed |
| risk_tier | string | — | Filter by risk tier: Prime, Core, Edge, or unknown (unscored assets — the same bucket the facets endpoint reports) |
| regulatory_wrapper | string | — | Filter by regulatory wrapper (e.g. reg_d_506c, mica, genius_act_stablecoin) |
| kyc_gate | string | — | Filter by investor-eligibility gate: permissionless, kyc_required, accredited, qualified_purchaser, professional_investor, institutional_only |
| search | string | — | Case-insensitive substring match on symbol or address |
Example
curl "https://api.philidor.io/v1/assets/enriched?category=fiat_backed_stablecoin&limit=2"Response
{
"data": [
{
"asset_id": "3",
"asset_version_id": "1864",
"address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
"chain_id": 1,
"symbol": "USDC",
"name": null,
"category": "fiat_backed_stablecoin",
"review_status": "reviewed",
"risk_score": 9.25,
"risk_tier": "Prime",
"issuer": null,
"in_basket_a": false,
"dimensions": {
"peg_stability": 9.5,
"issuer_custody": 9.5,
"redeemability": 9,
"reserve_transparency": 9,
"governance_controls": 8,
"protocol_security": null,
"operator_quality": null,
"bridge_mechanism": null,
"dependency_depth": null,
"liquidity": 10,
"volatility": null,
"credit_quality": null,
"default_rate": null,
"recovery_rate": null,
"subadvisor_concentration": null,
"redemption_terms": null
},
"risk_overlays": [],
"instrument_type": null,
"hard_fail_flags": [],
"caps_applied": [],
"backing_profile": {
"offchain_pct": 100,
"crypto_exogenous_pct": 0,
"crypto_endogenous_pct": 0,
"delta_hedge_pct": 0
},
"underlying_asset": null,
"institutional": {
"regulatory_wrapper": null,
"regulatory_jurisdiction": null,
"kyc_gate": null,
"custodian_name": null,
"auditor_name": null,
"attestation_cadence": null,
"redemption_window": null,
"aum_usd": null,
"yield_pct": null,
"duration_days": null,
"currency": null,
"aum_native": null,
"fx_rate_used": null,
"fx_rate_at": null,
"aum_usd_source": null,
"yield_basis": null
},
"data_provenance": null,
"reviewed_by": null,
"reviewer": null,
"recorded_at": "2026-05-07T13:51:34.986Z",
"freshness": {
"last_refresh_at": null,
"age_hours": null,
"status": "unknown",
"last_status": null
},
"dependency_chain": [],
"methodology_version": "v1.3",
"chain_overlay": {
"multiplier": 1,
"bridge_centralization": 10,
"sequencer_centralization": 10,
"validator_set_size_score": 10,
"chain_age_score": 10,
"rationale": "L1 calibration anchor: PoS with ~1M+ validators, no sequencer, no canonical bridge dependency, 9+ years of uptime."
}
}
],
"meta": {
"page": 1,
"limit": 2,
"total": 206,
"totalPages": 103
}
}Field notes
risk_score/risk_tierarenullfor assets that have not yet been scored (e.g. newly-discovered, provisional). Tiers arePrime(≥ 8),Core(≥ 5),Edge(< 5).dimensionscarries the full 0–10 risk-dimension set; a dimension isnullwhen it does not apply to the asset's category (e.g.credit_qualityonly applies torwa_credit).backing_profileis the stablecoin reserve composition (percentages sum to ~100). It isnullfor assets without a backing profile (native assets, LSTs, governance tokens). Example — DAI returnsoffchain_pct: 40, crypto_exogenous_pct: 60.risk_overlayslists modifiers such asyield_bearingorlockup.underlying_assetis populated for yield-bearing wrappers (the asset the wrapper is built on),nullfor direct holdings.name/issuerresolve tonullfor non-RWA tokens (these maps are RWA-specific) — this is expected, not an error.- The list is sorted by
risk_scoredescending (unscored assets last).
GET /v1/assets/enriched/facets
Aggregate counts across the entire enriched-asset universe — useful for sizing filter chips. Independent of any active filter. The risk_tiers facet includes an explicit unknown bucket for unscored assets.
Example
curl https://api.philidor.io/v1/assets/enriched/facetsResponse
{
"data": {
"chains": [{ "chain_id": 1, "count": 427 }],
"categories": [{ "category": "tokenized_treasury", "count": 34 }],
"review_statuses": [{ "review_status": "reviewed", "count": 195 }],
"risk_tiers": [
{ "risk_tier": "Prime", "count": 14 },
{ "risk_tier": "Core", "count": 167 },
{ "risk_tier": "Edge", "count": 43 },
{ "risk_tier": "unknown", "count": 481 }
],
"regulatory_wrappers": [{ "regulatory_wrapper": "reg_d_506c", "count": 10 }],
"kyc_gates": [{ "kyc_gate": "kyc_required", "count": 19 }],
"jurisdictions": [{ "jurisdiction": "(unknown)", "count": 668 }],
"custodians": [{ "custodian": "(unknown)", "count": 668 }],
"auditors": [{ "auditor": "(unknown)", "count": 668 }]
}
}GET /v1/assets/{chain_id}/{address}
Full enrichment for a single base asset, keyed by chain and token contract address — the keys present on every vault object (chain_id + asset_address).
Path Parameters
| Parameter | Type | Description |
|---|---|---|
| chain_id | number | Chain id (e.g. 1 for Ethereum) |
| address | string | Token contract address (0x-prefixed, 20 bytes; any case) |
Example
curl https://api.philidor.io/v1/assets/1/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48Response
Returns the same object as an enriched list item, plus four detail-only fields:
version_history— up to the last 30 approved classification versions (risk_score,risk_tier,review_status,aum_usd,yield_pct,recorded_at).attestation_history— up to the last 50 signed reviewer attestations, each withsignature_valid(true/false/null).discovery— the registry source that surfaced the asset, when applicable.risk_score_breakdown— a reconstructible audit of the published score: per-dimensionweightsanddimensions, theweighted_sum, the orderedoverlays_applied(lockup / chain-overlay / dependency steps), the finalscoreandtier, themethodology_version, and areconstructedflag ("full"when the replay reconciles to the stored score,"partial"if not).nullfor unscored assets.
{
"data": {
"symbol": "USDC",
"category": "fiat_backed_stablecoin",
"risk_score": 9.25,
"risk_tier": "Prime",
"risk_score_breakdown": {
"category": "fiat_backed_stablecoin",
"weights": {
"issuer_custody": 0.25,
"reserve_transparency": 0.2,
"redeemability": 0.15,
"peg_stability": 0.15,
"governance_controls": 0.1,
"liquidity": 0.15
},
"dimensions": {
"issuer_custody": 9.5,
"reserve_transparency": 9,
"redeemability": 9,
"peg_stability": 9.5,
"governance_controls": 8,
"liquidity": 10
},
"weighted_sum": 9.25,
"overlays_applied": [],
"score": 9.25,
"tier": "Prime",
"methodology_version": "v1.3",
"reconstructed": "full"
},
"version_history": [
{
"asset_version_id": "1864",
"recorded_at": "2026-05-07T13:51:34.986Z",
"risk_score": 9.25,
"risk_tier": "Prime",
"review_status": "reviewed",
"aum_usd": null,
"yield_pct": null
}
],
"attestation_history": [],
"discovery": null
}
}Returns 404 if no asset is found for that (chain_id, address), and 400 for a malformed address.