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
| Parameter | Type | Description |
|---|---|---|
| network | string | Network slug: ethereum, base, arbitrum, polygon, optimism, avalanche, stable, plume, or monad |
| address | string | Vault contract address |
Query Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
| points | number | 360 | Snapshot points embedded in the detail payload, max 2160 |
Example
curl https://api.philidor.io/v1/vault/ethereum/0x8eB67A509616cd6A7c1B3c8C21D48FF57df3d458Response
{
"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.
| Field | Type | Meaning |
|---|---|---|
deposit_status | open, closed, or unknown | Tri-state status for new deposits |
withdraw_status | open, closed, or unknown | Coarse withdrawal-side mirror |
freshness_seconds | number or null | Seconds since the most recent successful sync wrote the row |
is_depositable | boolean or null | Compatibility boolean. Prefer deposit_status |
deposit_capacity_usd | number or null | Remaining 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
| Parameter | Type | Default | Description |
|---|---|---|---|
| days | number | 90 | Lookback window in days, max 365 |
| points | number | 360 | Maximum 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
| Parameter | Type | Default | Description |
|---|---|---|---|
| from | string | - | ISO start timestamp, inclusive |
| to | string | - | ISO end timestamp, inclusive |
| limit | number | 500 | Max 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
| Parameter | Type | Default | Description |
|---|---|---|---|
| completeOnly | boolean | false | When 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
| Parameter | Type | Default | Description |
|---|---|---|---|
| from | string | - | ISO start timestamp, inclusive |
| to | string | - | ISO end timestamp, inclusive |
| limit | number | 500 | Max points returned, max 1000 |
| completeOnly | boolean | false | When 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.