Docs

Morpho Blue

For developers, query Morpho Blue market data, asset prices and yield, positions, oracle data, and historical APYs through REST.

How to query Morpho Blue data with the API?

The examples below use the REST API.

  • REST calls use public GET requests against https://api.morpho.org with standard public rate limits. Markets are addressed by a <chainId>:<marketId> selector and tokens by <chainId>:<address>. REST provides single-entity reads, a cursor-paginated market list through GET /v1/blue/markets, and versioned lists of a user's vault positions. Aggregate cross-market overviews, oracle feed composition, USD-denominated market and position metrics, and reward APRs aren't available in the REST API yet. Current token USD spot prices are available through GET /v0/tokens/{token-selector}/price.

Discovery and Listing

Markets List

GET /v1/blue/markets

curl -sS "https://api.morpho.org/v1/blue/markets?chain_id=8453&listed=true&limit=100" \
  -H "accept: application/json"

REST lists markets with cursor pagination and supports chain_id, loan_token, collateral_token, and listed filters. Broader sorting and aggregate filters aren't available in the REST API yet.

Market Parameters

GET /v0/blue/markets/{market-selector}

curl -sS "https://api.morpho.org/v0/blue/markets/8453:0x9103c3b4e834476c9a62ea009ba2c884ee42e94e6e314a26f04d312434191836" \
  -H "accept: application/json"

REST reads one market at a time by <chainId>:<marketId>. The response gives the immutable config: loan_token, collateral_token, oracle_address, irm_address, and lltv_wad. Use GET /v1/blue/markets to enumerate and filter across markets by chain_id, loan_token, collateral_token, and listed.

Market Metrics

Total Collateral, Borrow & Supply

GET /v0/blue/markets/{market-selector}/state

curl -sS "https://api.morpho.org/v0/blue/markets/8453:0x9103c3b4e834476c9a62ea009ba2c884ee42e94e6e314a26f04d312434191836/state" \
  -H "accept: application/json"

/state returns total_supply_assets, total_borrow_assets, their share counts (total_supply_shares, total_borrow_shares), and fee_wad. USD-denominated values and aggregate collateral totals aren't available in the REST API yet.

Market APY (Native & Rewards)

GET /v0/blue/markets/{market-selector}/apy-averages

curl -sS "https://api.morpho.org/v0/blue/markets/8453:0x9103c3b4e834476c9a62ea009ba2c884ee42e94e6e314a26f04d312434191836/apy-averages" \
  -H "accept: application/json"

/apy-averages returns supply_apy_averages and borrow_apy_averages, each keyed by fixed trailing windows (24h, 7d, 30d, 90d, 1y). Values exclude rewards — reward APRs aren't available in the REST API yet.

Asset Information

Assets (Price & Yield)

GET /v0/tokens/{token-selector}

GET /v0/tokens/{token-selector}/price

# Token identity + metadata
curl -sS "https://api.morpho.org/v0/tokens/1:0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0" \
  -H "accept: application/json"

# Canonical USD spot price
curl -sS "https://api.morpho.org/v0/tokens/1:0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0/price" \
  -H "accept: application/json"

REST reads one token at a time by <chainId>:<address>. GET /v0/tokens/{token-selector} returns identity and metadata under data: chain_id, address, name, symbol, decimals, logo_uri, and tags. GET /v0/tokens/{token-selector}/price returns the token's chain_id and address alongside its USD spot-price data:

  • price is the spot price in USD.
  • timestamp is the price point's Unix timestamp in seconds, encoded as a string.
  • provider identifies the upstream price data provider.

A known token without an available price returns HTTP 206 with price, timestamp, and provider set to null. An unknown token returns HTTP 404. Native token yield and multi-asset symbol filtering aren't available in the REST API yet.

Position Tracking

User Positions

User All Markets Position

GET /v0/blue/markets/{market-selector}/users/{user-address}/position

GET /v0/blue/markets/{market-selector}/users/{user-address}/position/performance

# Current market position
curl -sS "https://api.morpho.org/v0/blue/markets/1:0x698fe98247a40c5771537b5786b2f3f9d78eb487b4ce4d75533cd0e94d88a115/users/0xabcdefabcdefabcdefabcdefabcdefabcdefabcd/position" \
  -H "accept: application/json"

# Realized and unrealized position performance
curl -sS "https://api.morpho.org/v0/blue/markets/1:0x698fe98247a40c5771537b5786b2f3f9d78eb487b4ce4d75533cd0e94d88a115/users/0xabcdefabcdefabcdefabcdefabcdefabcdefabcd/position/performance" \
  -H "accept: application/json"

REST returns a single user's position in a market — collateral_assets, supply_shares, and borrow_shares — keyed by <chainId>:<marketId> and user address. The performance route adds supply_net_earnings_assets, supply_return_on_capital, borrow_net_cost_assets, and borrow_cost_on_capital under average-cost accounting. Listing every position in a market, and USD-denominated values, aren't available in the REST API yet.

User Market Position

GET /v0/blue/markets/{market-selector}/users/{user-address}/position

GET /v1/vaults-v2/users/{user-address}/positions

# Market position
curl -sS "https://api.morpho.org/v0/blue/markets/1:0x698fe98247a40c5771537b5786b2f3f9d78eb487b4ce4d75533cd0e94d88a115/users/0x821880a3E2bac432d67E5155e72BB655Ef65fa5E/position" \
  -H "accept: application/json"

# Vault V2 positions
curl -sS "https://api.morpho.org/v1/vaults-v2/users/0x821880a3E2bac432d67E5155e72BB655Ef65fa5E/positions?chain_ids=1&active_only=true&limit=100" \
  -H "accept: application/json"

REST reads Morpho Blue market positions one market at a time and lists a user's vault positions separately for V1 and V2. A combined cross-market/cross-vault overview and combined transaction feed aren't available in the REST API yet. Per-user vault activity is available through GET /v0/vaults-v1/{vault-selector}/users/{user-address}/position/activity and GET /v0/vaults-v2/{vault-selector}/users/{user-address}/position/activity; Morpho Blue market-position history is available through GET /v0/blue/markets/{market-selector}/users/{user-address}/position/history.

All Market Positions

GET /v0/blue/markets/{market-selector}/users/{user-address}/position

curl -sS "https://api.morpho.org/v0/blue/markets/1:0x698fe98247a40c5771537b5786b2f3f9d78eb487b4ce4d75533cd0e94d88a115/users/0xabcdefabcdefabcdefabcdefabcdefabcdefabcd/position" \
  -H "accept: application/json"

REST returns one user's position in a market (collateral_assets, supply_shares, borrow_shares). Listing every position in a market, and USD-denominated values, aren't available in the REST API yet.

Risk & Oracle Data

Oracle Data

More on oracles and ChainlinkOracleV2 oracles in the oracle section here.

All Markets

GET /v0/oracles/{oracle-selector}/state

curl -sS "https://api.morpho.org/v0/oracles/1:0x2a01EB9496094dA03c4E364Def50f5aD1280AD72/state" \
  -H "accept: application/json"

REST exposes the oracle's live quote — price, last_updated_at, last_indexed_block — by <chainId>:<oracleAddress>. Oracle feed composition isn't available in the REST API yet.

Specific Market

GET /v0/oracles/{oracle-selector}/state

curl -sS "https://api.morpho.org/v0/oracles/1:0x2a01EB9496094dA03c4E364Def50f5aD1280AD72/state" \
  -H "accept: application/json"

REST exposes the oracle's live quote (price, last_updated_at, last_indexed_block) by <chainId>:<oracleAddress>; the feed composition isn't available in the REST API yet.

Historical Data

REST returns trailing market APY and state history through GET /v0/blue/markets/{market-selector}/apy/history and GET /v0/blue/markets/{market-selector}/state/history, using the lookback query parameter with one of one_day, seven_days, thirty_days, ninety_days, one_year, or inception.

Historical APYs

GET /v0/blue/markets/{market-selector}/apy/history

curl -sS "https://api.morpho.org/v0/blue/markets/8453:0x9103c3b4e834476c9a62ea009ba2c884ee42e94e6e314a26f04d312434191836/apy/history?lookback=thirty_days" \
  -H "accept: application/json"

REST returns trailing supply/borrow APY history via fixed lookback windows (one_day, seven_days, thirty_days, ninety_days, one_year, inception). Arbitrary time ranges and custom intervals aren't available in the REST API yet.

Historical Market States

GET /v0/blue/markets/{market-selector}/state/history

curl -sS "https://api.morpho.org/v0/blue/markets/1:0x608929d6de2a10bacf1046ff157ae38df5b9f466fb89413211efb8f63c63833a/state/history?lookback=thirty_days" \
  -H "accept: application/json"

/state/history returns trailing total_supply_assets / total_borrow_assets history via fixed lookback windows (one_day … inception). USD-denominated series aren't available in the REST API yet.

Historical Asset Price

GET /v0/tokens/{token-selector}/price

curl -sS "https://api.morpho.org/v0/tokens/1:0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0/price" \
  -H "accept: application/json"

REST returns the current USD spot price (price, timestamp, provider); a historical price series isn't available in the REST API yet.