List V1 vaults

GET
/v0/vaults-v1

Cursor-paginated list of listed Morpho Vault V1 instances across every supported chain: identity, deployment facts, the performance-fee setup and the owner / curator roles. Enough to build and rank a vault directory without a follow-up call per row; {chain-id}:{vault_address} on each item addresses the detail routes.

Membership is gated on listing. A V1 vault appears once it is promoted, or once a Vault V2 references it through a MorphoVaultV1Adapter. This is therefore not a complete enumeration of indexed Vault V1 instances, and its contents can change with no on-chain event. Unlisted vaults remain reachable through GET /v0/vaults-v1/{chain-id}:{vault-address}.

Not here. Live state (total_assets, share_price_ray) is on …/state and APY on …/apy; the underlying token's name, symbol and decimals are on GET /v0/tokens/{chain-id}:{address}; guardian, skim_recipient, timelock_seconds and pending governance state are on the single-vault lookup.

Pagination. Pass cursor back verbatim on the next call; a null cursor means the last page. The cursor is bound to both the sort and the filter set that produced it, so changing either is a 400 rather than a silently wrong page.

Freshness. Every field is configuration that changes only on a governance action or a new deployment, so the payload does not move between blocks and carries no last_indexed_block. Use GET /v0/chains for per-chain indexer tips.

Query Parameters

cursor?string

Opaque cursor from a previous page response. Bound to the sort and filter set that produced it.

Length1 <= length <= 4096
limit?integer

Maximum number of vaults to return.

Range1 <= value <= 1000
Default100
sort_by?string

Sort key. address sorts on the (chain_id, vault_address) tiebreak. name compares the first 512 characters, with ties broken by chain id and vault address.

Default"address"

Value in

  • "address"
  • "creation_timestamp"
  • "creation_block_number"
  • "name"
  • "performance_fee_wad"
sort_direction?string

Sort direction. Defaults to asc for address and name, desc for creation_timestamp, creation_block_number and performance_fee_wad.

Value in

  • "asc"
  • "desc"
chain_ids?array<>

Filter by chain ids. Required when any address filter is provided.

Itemsitems <= 100
asset_addresses?array<string>

Filter by underlying asset address. Combine with chain_ids; lowercase input is checksummed.

Itemsitems <= 100
factory_addresses?array<string>

Filter by deploying factory address. Combine with chain_ids; lowercase input is checksummed.

Itemsitems <= 100
owners?array<string>

Filter by current owner. Combine with chain_ids; lowercase input is checksummed.

Itemsitems <= 100
curators?array<string>

Filter by current curator. Combine with chain_ids; lowercase input is checksummed.

Itemsitems <= 100
versions?array<>

Filter by factory lineage.

Itemsitems <= 100

Response Body

application/json

curl -X GET "https://example.com/v0/vaults-v1"
{  "data": [    {      "chain_id": 1,      "vault_address": "0xBEEF01735c132Ada46AA9aA4c54623cAA92A64CB",      "version": "1.0",      "name": "Steakhouse USDC",      "symbol": "steakUSDC",      "asset_address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",      "factory_address": "0xA9c3D3a366466Fa809d1Ae982Fb2c46E5fC41101",      "creation_block_number": "18928285",      "creation_timestamp": 1704500000,      "performance_fee_wad": "50000000000000000",      "performance_fee_recipient": "0x255c7705e8BB334DfCae438197f7C4297988085a",      "owner": "0x0A0e559bc3b0950a7e448F0d4894db195b9cf8DD",      "curator": "0x827e86072B06674a077f592A531dcE4590aDeCdB"    }  ],  "cursor": "eyJzIjoiYWRkcmVzcyIsImQiOiJhc2MiLCJ2IjoiMHhCRUVGMDE3MzVjMTMyQWRhNDZBQTlhQTRjNTQ2MjNjQUE5MkE2NENCIiwidk51bGwiOmZhbHNlLCJpIjpbMSwiMHhCRUVGMDE3MzVjMTMyQWRhNDZBQTlhQTRjNTQ2MjNjQUE5MkE2NENCIl0sImYiOiJjMmYwYTEifQ"}
Empty