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/assets

Response

{
  "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

ParameterTypeDefaultDescription
pagenumber1Page number (≥ 1)
limitnumber20Results per page (1–100)
chainnumberFilter by chain_id (e.g. 1)
categorystringFilter 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_typestringFilter by instrument type
defi_instrumentstringFilter by DeFi instrument classification
include_qualitystringInclude quality fields when supported
review_statusstringFilter by review status: reviewed, provisional, unreviewed
risk_tierstringFilter by risk tier: Prime, Core, Edge, or unknown (unscored assets — the same bucket the facets endpoint reports)
regulatory_wrapperstringFilter by regulatory wrapper (e.g. reg_d_506c, mica, genius_act_stablecoin)
kyc_gatestringFilter by investor-eligibility gate: permissionless, kyc_required, accredited, qualified_purchaser, professional_investor, institutional_only
searchstringCase-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_tier are null for assets that have not yet been scored (e.g. newly-discovered, provisional). Tiers are Prime (≥ 8), Core (≥ 5), Edge (< 5).
  • dimensions carries the full 0–10 risk-dimension set; a dimension is null when it does not apply to the asset's category (e.g. credit_quality only applies to rwa_credit).
  • backing_profile is the stablecoin reserve composition (percentages sum to ~100). It is null for assets without a backing profile (native assets, LSTs, governance tokens). Example — DAI returns offchain_pct: 40, crypto_exogenous_pct: 60.
  • risk_overlays lists modifiers such as yield_bearing or lockup.
  • underlying_asset is populated for yield-bearing wrappers (the asset the wrapper is built on), null for direct holdings.
  • name / issuer resolve to null for non-RWA tokens (these maps are RWA-specific) — this is expected, not an error.
  • The list is sorted by risk_score descending (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/facets

Response

{
  "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

ParameterTypeDescription
chain_idnumberChain id (e.g. 1 for Ethereum)
addressstringToken contract address (0x-prefixed, 20 bytes; any case)

Example

curl https://api.philidor.io/v1/assets/1/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48

Response

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 with signature_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-dimension weights and dimensions, the weighted_sum, the ordered overlays_applied (lockup / chain-overlay / dependency steps), the final score and tier, the methodology_version, and a reconstructed flag ("full" when the replay reconciles to the stored score, "partial" if not). null for 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.

On this page

Raw