Vault Detail

GET /v1/vault for full risk breakdown, historical snapshots, score history, holders, events, Morpho markets, and strategy detail.

GET /v1/vault/{network}/{address}

Get full vault details including risk vectors, APR decomposition, audit status, snapshots, events, and rewards.

Path Parameters

ParameterTypeDescription
networkstringNetwork slug: ethereum, base, arbitrum, polygon, optimism, avalanche, stable, plume, or monad
addressstringVault contract address

Query Parameters

ParameterTypeDefaultDescription
pointsnumber360Snapshot points embedded in the detail payload, max 2160

Example

curl https://api.philidor.io/v1/vault/ethereum/0x8eB67A509616cd6A7c1B3c8C21D48FF57df3d458

Response

{
  "data": {
    "vault": {
      "id": "morpho-1-0x8eb67a509616cd6a7c1b3c8c21d48ff57df3d458",
      "name": "Gauntlet USDC Core",
      "address": "0x8eB67A509616cd6A7c1B3c8C21D48FF57df3d458",
      "chain_id": 1,
      "chain_name": "Ethereum",
      "protocol_id": "morpho",
      "protocol_name": "Morpho",
      "tvl_usd": 125000000,
      "apr_net": 0.0523,
      "total_score": 8.5,
      "risk_tier": "Prime",
      "risk_vectors": {
        "asset": { "score": 8.2, "weight": 0.3 },
        "platform": { "score": 8.8, "weight": 0.3 },
        "control": { "score": 9, "weight": 0.2 },
        "history": { "score": 9.2, "weight": 0.2 }
      },
      "deposit_status": "open",
      "withdraw_status": "open",
      "freshness_seconds": 180,
      "deposit_capacity_usd": 4250000,
      "audit_status": "Audited",
      "auditors": ["ChainSecurity"],
      "strategy_type": "isolated_lending"
    },
    "snapshots": [],
    "events": [],
    "rewards": []
  }
}

Depositability Fields

Every vault response carries these fields. deposit_status is the canonical routing signal.

FieldTypeMeaning
deposit_statusopen, closed, or unknownTri-state status for new deposits
withdraw_statusopen, closed, or unknownCoarse withdrawal-side mirror
freshness_secondsnumber or nullSeconds since the most recent successful sync wrote the row
is_depositableboolean or nullCompatibility boolean. Prefer deposit_status
deposit_capacity_usdnumber or nullRemaining deposit headroom. Null means uncapped, unpriced, or unknown

Unknown depositability usually means protocol-specific gate detection is not wired, the vault entered after the latest hourly sync, or an upstream call failed during sync. Persistent unknowns are tracked operationally.

GET /v1/vault/{network}/{address}/snapshots

Return downsampled TVL, APR, and price-per-share snapshots for charting.

Query Parameters

ParameterTypeDefaultDescription
daysnumber90Lookback window in days, max 365
pointsnumber360Maximum downsampled points, max 2160

Response

{
  "data": [
    {
      "recorded_at": "2026-07-01T12:00:00Z",
      "tvl_usd": 125000000,
      "apr_net": 0.0523,
      "price_per_share": 1.0123
    }
  ]
}

GET /v1/vault/{network}/{address}/score-history

Return the score and tier timeline for a vault. Items are returned oldest to newest.

Query Parameters

ParameterTypeDefaultDescription
fromstring-ISO start timestamp, inclusive
tostring-ISO end timestamp, inclusive
limitnumber500Max points returned, max 1000

Response

{
  "data": [
    {
      "observed_at": "2026-06-10T01:46:00.000Z",
      "change_type": "tier_change",
      "prev_score": 7.9,
      "new_score": 8.1,
      "prev_tier": "Core",
      "new_tier": "Prime",
      "methodology_version": "v4.4"
    }
  ]
}

GET /v1/vault/{network}/{address}/holders

Return the latest holder-concentration snapshot for the vault share token.

Query Parameters

ParameterTypeDefaultDescription
completeOnlybooleanfalseWhen true, indexing vaults keep coverage metadata but return null concentration metrics and no holders

Response

{
  "data": {
    "status": "available",
    "vault_id": "morpho-1-0x8eb67a509616cd6a7c1b3c8c21d48ff57df3d458",
    "chain_id": 1,
    "token_address": "0x8eb67a509616cd6a7c1b3c8c21d48ff57df3d458",
    "holder_count": 120,
    "external_holder_count": 94,
    "top1_pct": 0.18,
    "top5_pct": 0.52,
    "top10_pct": 0.68,
    "hhi": 0.09,
    "external_top1_pct": 0.12,
    "external_top5_pct": 0.41,
    "external_top10_pct": 0.55,
    "external_hhi": 0.06,
    "protocol_managed_pct": 0.21,
    "top_holders": [
      {
        "address": "0x1111111111111111111111111111111111111111",
        "balance_raw": "1000000000000000000",
        "pct": 0.18,
        "label": "Example Treasury",
        "category": "entity",
        "method": "curated_label"
      }
    ],
    "indexed_to_block": 23000000,
    "backfill_complete": true,
    "coverage_status": "complete",
    "computed_at": "2026-07-01T12:00:00Z"
  }
}

Coverage is complete when holder backfill is finished. indexing means concentration and top-holder fields are provisional.

GET /v1/vault/{network}/{address}/holders/history

Return historical holder-concentration snapshots. Items are returned oldest to newest.

Query Parameters

ParameterTypeDefaultDescription
fromstring-ISO start timestamp, inclusive
tostring-ISO end timestamp, inclusive
limitnumber500Max points returned, max 1000
completeOnlybooleanfalseWhen true, indexing rows keep coverage metadata but suppress provisional concentration and holder data

Response

{
  "data": [
    {
      "computed_at": "2026-07-01T12:00:00Z",
      "holder_count": 120,
      "external_holder_count": 94,
      "top1_pct": 0.18,
      "top5_pct": 0.52,
      "top10_pct": 0.68,
      "hhi": 0.09,
      "protocol_managed_pct": 0.21,
      "top_holders": [],
      "indexed_to_block": 23000000,
      "backfill_complete": true,
      "coverage_status": "complete"
    }
  ]
}

GET /v1/vault/{network}/{address}/events

Get all events for a vault.

Response

{
  "data": [
    {
      "id": 1234,
      "event_type": "AllocationChange",
      "severity": "Info",
      "title": "Market allocation updated",
      "description": "Curator adjusted market weights",
      "tx_hash": "0x...",
      "block_number": 19500000,
      "occurred_at": "2026-02-20T10:00:00Z"
    }
  ]
}

Depositability changes are emitted as DepositabilityChange events.

GET /v1/vault/{network}/{address}/markets

Get market allocations for Morpho vaults. Returns collateral risk summary per lending market.

Only Morpho vaults return data. Non-Morpho vaults return 404.

GET /v1/vault/{network}/{address}/strategies

Get Yearn strategy breakdown from ydaemon.

Only Yearn vaults return data.

GET /v1/vault/{network}/{address}/strategy

Get Beefy strategy information with yield sources, risk flags, and APY.

Only Beefy vaults return data.

On this page

Raw