Skip to main content

ComparableRatesResponse

sidestring

Possible values: [borrow, supply]

horizonDaysnumber
amountnumber
amountUsdnumber
chainIdsstring[]

EVM chain ids, as decimal strings. See the ChainId schema.

scannedinteger

Pair rows considered before ranking.

truncatedboolean

The candidate guard cap bound, so ranking saw only the deepest rows — narrow the filter. Never a silent trim.

availableinteger

Distinct comparables that existed before limit was applied.

liquidityFloorUsdnumber

Venues below this USD depth were dropped as not comparable (0 = no floor applied).

droppedIlliquidinteger

How many venues the depth band removed. An opinionated filter must never be silent — surface this rather than implying nothing else exists.

droppedStaleinteger

Venues excluded because their market data is older than staleMaxHours — an ingest lag, not an absent lender. Non-zero is the difference between "no one else offers this pair" and "we cannot currently see who does". includeStale=true ranks them anyway.

staleMaxHoursnumber

The freshness window droppedStale was measured against.

collateralBasis object

The single collateral group each chain's rows were compared against when the caller pinned none, e.g. {"1":"ETH"}. Empty when a collateral was supplied, or on the supply side.

property name*string
reference objectnullable

The venue the caller is already on (referenceMarketUid), pulled out of items so the UI can render "you: X% · best: Y%".

rankinteger

1-based position in the ranking. 0 on the reference item.

chainIdstring

EVM chain id, as a decimal string. See the ChainId schema.

lenderstring

Raw lender key — stable, use it for keying and deeplinks. Per-market lenders (Morpho Blue, Silo, Euler) encode a hashed market id here, so it is NOT presentable.

lenderNamestring

Display name from the lender registry, falling back to the raw key when none is registered. This is what a UI should render.

lenderLogoUristringnullable
marketUidstring

The market the rate belongs to: the debt market for a borrow quote, the collateral market for a supply quote.

marketNamestringnullable
curatorNamestringnullable
eModestringnullable
rateTypestring

Possible values: [fixed, float]

rateModelstring

Which repayment rule priced this quote.

Possible values: [variable, lista, midnight, term, exactly, teller, fixedTerm, userSet, zeroInterest]

aprPctnumber

Sticker rate, APR %. Includes intrinsic yield and reward APR (same composition as borrowAprShort / depositAprLong); a one-time origination fee is NOT in it — the horizon model amortizes that separately.

aprAtAmountPctnumbernullable

The rate at the requested size. Null when no amount was supplied. A utilization pool re-prices its whole balance to the post-action rate; an order book fills cheapest-first, so this is the VWAP of the tiers consumed.

rewardAprPctnumbernullable

Reward emissions folded into the headline (positive = subsidising a borrow). Large emissions can push a borrow rate NEGATIVE.

aprExRewardsPctnumbernullable

The rate WITHOUT reward emissions — the structural, sustainable cost. Show it next to a reward-inflated headline; emissions are transient.

effectiveAprPctnumbernullable

Size-priced rate normalized to horizonDays. The ranking number.

costPctnumbernullable

Total cost over the horizon as a percent of principal.

horizon object

How the effective rate was arrived at — the caveats a UI must show next to a normalized number.

basisstring

flat-forward: no maturity, today’s floating rate assumed to hold. early-exit: horizon shorter than the term, the venue’s exit rule applied. held-to-maturity: horizon matches the term (the clean case). rolled: horizon outlasts the term, a roll at today’s rate assumed.

Possible values: [flat-forward, early-exit, held-to-maturity, rolled]

lockedboolean

Is the rate contractually fixed for the WHOLE horizon? False for floating pools and for a fixed term that has to be rolled to cover the horizon.

priceRiskboolean

Exiting early means unwinding on an order book at the then-current price (Midnight/Term), so the realized cost can land either side of the quote. Not priced in — flagged.

assumptionsstring[]

Display-ready caveats, most important first.

termIdstringnullable
durationDaysnumbernullable
maturitynumbernullable

Calendar maturity, unix seconds. Null for rolling menus and variable pools.

termDaysnumbernullable

Remaining term in days for a position opened now.

obtainableboolean

Can this rate be taken right now? False for a Term repo between auction rounds, whose rate card still quotes the last round’s clearing rate.

obtainableReasonstringnullable
quoteBasisstring

last-clearing marks a historical print, not an obtainable quote — never render it as an actionable rate.

Possible values: [live, last-clearing]

depth object
fillablenumbernullable

Depth ceiling in token units of the priced leg — borrow liquidity for a pool, total book depth for an order book.

cappedboolean

The requested amount exceeds fillable: this venue cannot fund the position at that size, and the row is demoted below every non-capped one.

liquidityUsdnumbernullable
utilizationnumbernullable

Market utilization, as a fraction between 0 and 1.

collateral object
addressstring

EVM contract address, lowercase or checksummed hex.

assetGroupstring

Group of economically equivalent assets, e.g. all USDC variants.

symbolstring

Token symbol, e.g. WETH.

decimalsnumbernullable

Token decimals — divide raw amounts by 10 ** decimals.

logoUristringnullable

URL of the logo image.

marketUidstring

Market identifier, formatted lender:chainId:address.

debt object
addressstring

EVM contract address, lowercase or checksummed hex.

assetGroupstring

Group of economically equivalent assets, e.g. all USDC variants.

symbolstring

Token symbol, e.g. WETH.

decimalsnumbernullable

Token decimals — divide raw amounts by 10 ** decimals.

logoUristringnullable

URL of the logo image.

marketUidstring

Market identifier, formatted lender:chainId:address.

maxLeveragenumbernullable

Highest leverage multiple reachable in this market.

ltvnumbernullable

Loan-to-value ratio, as a fraction between 0 and 1.

risk object
configScorenumbernullable
maxTokenScorenumbernullable
countinteger

Number of entries in items.

items object[]

The result set for this response.

  • Array [
  • rankinteger

    1-based position in the ranking. 0 on the reference item.

    chainIdstring

    EVM chain id, as a decimal string. See the ChainId schema.

    lenderstring

    Raw lender key — stable, use it for keying and deeplinks. Per-market lenders (Morpho Blue, Silo, Euler) encode a hashed market id here, so it is NOT presentable.

    lenderNamestring

    Display name from the lender registry, falling back to the raw key when none is registered. This is what a UI should render.

    lenderLogoUristringnullable
    marketUidstring

    The market the rate belongs to: the debt market for a borrow quote, the collateral market for a supply quote.

    marketNamestringnullable
    curatorNamestringnullable
    eModestringnullable
    rateTypestring

    Possible values: [fixed, float]

    rateModelstring

    Which repayment rule priced this quote.

    Possible values: [variable, lista, midnight, term, exactly, teller, fixedTerm, userSet, zeroInterest]

    aprPctnumber

    Sticker rate, APR %. Includes intrinsic yield and reward APR (same composition as borrowAprShort / depositAprLong); a one-time origination fee is NOT in it — the horizon model amortizes that separately.

    aprAtAmountPctnumbernullable

    The rate at the requested size. Null when no amount was supplied. A utilization pool re-prices its whole balance to the post-action rate; an order book fills cheapest-first, so this is the VWAP of the tiers consumed.

    rewardAprPctnumbernullable

    Reward emissions folded into the headline (positive = subsidising a borrow). Large emissions can push a borrow rate NEGATIVE.

    aprExRewardsPctnumbernullable

    The rate WITHOUT reward emissions — the structural, sustainable cost. Show it next to a reward-inflated headline; emissions are transient.

    effectiveAprPctnumbernullable

    Size-priced rate normalized to horizonDays. The ranking number.

    costPctnumbernullable

    Total cost over the horizon as a percent of principal.

    horizon object

    How the effective rate was arrived at — the caveats a UI must show next to a normalized number.

    basisstring

    flat-forward: no maturity, today’s floating rate assumed to hold. early-exit: horizon shorter than the term, the venue’s exit rule applied. held-to-maturity: horizon matches the term (the clean case). rolled: horizon outlasts the term, a roll at today’s rate assumed.

    Possible values: [flat-forward, early-exit, held-to-maturity, rolled]

    lockedboolean

    Is the rate contractually fixed for the WHOLE horizon? False for floating pools and for a fixed term that has to be rolled to cover the horizon.

    priceRiskboolean

    Exiting early means unwinding on an order book at the then-current price (Midnight/Term), so the realized cost can land either side of the quote. Not priced in — flagged.

    assumptionsstring[]

    Display-ready caveats, most important first.

    termIdstringnullable
    durationDaysnumbernullable
    maturitynumbernullable

    Calendar maturity, unix seconds. Null for rolling menus and variable pools.

    termDaysnumbernullable

    Remaining term in days for a position opened now.

    obtainableboolean

    Can this rate be taken right now? False for a Term repo between auction rounds, whose rate card still quotes the last round’s clearing rate.

    obtainableReasonstringnullable
    quoteBasisstring

    last-clearing marks a historical print, not an obtainable quote — never render it as an actionable rate.

    Possible values: [live, last-clearing]

    depth object
    fillablenumbernullable

    Depth ceiling in token units of the priced leg — borrow liquidity for a pool, total book depth for an order book.

    cappedboolean

    The requested amount exceeds fillable: this venue cannot fund the position at that size, and the row is demoted below every non-capped one.

    liquidityUsdnumbernullable
    utilizationnumbernullable

    Market utilization, as a fraction between 0 and 1.

    collateral object
    addressstring

    EVM contract address, lowercase or checksummed hex.

    assetGroupstring

    Group of economically equivalent assets, e.g. all USDC variants.

    symbolstring

    Token symbol, e.g. WETH.

    decimalsnumbernullable

    Token decimals — divide raw amounts by 10 ** decimals.

    logoUristringnullable

    URL of the logo image.

    marketUidstring

    Market identifier, formatted lender:chainId:address.

    debt object
    addressstring

    EVM contract address, lowercase or checksummed hex.

    assetGroupstring

    Group of economically equivalent assets, e.g. all USDC variants.

    symbolstring

    Token symbol, e.g. WETH.

    decimalsnumbernullable

    Token decimals — divide raw amounts by 10 ** decimals.

    logoUristringnullable

    URL of the logo image.

    marketUidstring

    Market identifier, formatted lender:chainId:address.

    maxLeveragenumbernullable

    Highest leverage multiple reachable in this market.

    ltvnumbernullable

    Loan-to-value ratio, as a fraction between 0 and 1.

    risk object
    configScorenumbernullable
    maxTokenScorenumbernullable
  • ]
  • ComparableRatesResponse
    {
    "side": "borrow",
    "horizonDays": 0,
    "amount": 0,
    "amountUsd": 0,
    "chainIds": [
    "string"
    ],
    "scanned": 0,
    "truncated": true,
    "available": 0,
    "liquidityFloorUsd": 0,
    "droppedIlliquid": 0,
    "droppedStale": 0,
    "staleMaxHours": 0,
    "collateralBasis": {},
    "reference": {
    "rank": 0,
    "chainId": "string",
    "lender": "string",
    "lenderName": "string",
    "lenderLogoUri": "string",
    "marketUid": "string",
    "marketName": "string",
    "curatorName": "string",
    "eMode": "string",
    "rateType": "fixed",
    "rateModel": "variable",
    "aprPct": 0,
    "aprAtAmountPct": 0,
    "rewardAprPct": 0,
    "aprExRewardsPct": 0,
    "effectiveAprPct": 0,
    "costPct": 0,
    "horizon": {
    "basis": "flat-forward",
    "locked": true,
    "priceRisk": true,
    "assumptions": [
    "string"
    ]
    },
    "termId": "string",
    "durationDays": 0,
    "maturity": 0,
    "termDays": 0,
    "obtainable": true,
    "obtainableReason": "string",
    "quoteBasis": "live",
    "depth": {
    "fillable": 0,
    "capped": true,
    "liquidityUsd": 0,
    "utilization": 0
    },
    "collateral": {
    "address": "string",
    "assetGroup": "string",
    "symbol": "string",
    "decimals": 0,
    "logoUri": "string",
    "marketUid": "string"
    },
    "debt": {
    "address": "string",
    "assetGroup": "string",
    "symbol": "string",
    "decimals": 0,
    "logoUri": "string",
    "marketUid": "string"
    },
    "maxLeverage": 0,
    "ltv": 0,
    "risk": {
    "configScore": 0,
    "maxTokenScore": 0
    }
    },
    "count": 0,
    "items": [
    {
    "rank": 0,
    "chainId": "string",
    "lender": "string",
    "lenderName": "string",
    "lenderLogoUri": "string",
    "marketUid": "string",
    "marketName": "string",
    "curatorName": "string",
    "eMode": "string",
    "rateType": "fixed",
    "rateModel": "variable",
    "aprPct": 0,
    "aprAtAmountPct": 0,
    "rewardAprPct": 0,
    "aprExRewardsPct": 0,
    "effectiveAprPct": 0,
    "costPct": 0,
    "horizon": {
    "basis": "flat-forward",
    "locked": true,
    "priceRisk": true,
    "assumptions": [
    "string"
    ]
    },
    "termId": "string",
    "durationDays": 0,
    "maturity": 0,
    "termDays": 0,
    "obtainable": true,
    "obtainableReason": "string",
    "quoteBasis": "live",
    "depth": {
    "fillable": 0,
    "capped": true,
    "liquidityUsd": 0,
    "utilization": 0
    },
    "collateral": {
    "address": "string",
    "assetGroup": "string",
    "symbol": "string",
    "decimals": 0,
    "logoUri": "string",
    "marketUid": "string"
    },
    "debt": {
    "address": "string",
    "assetGroup": "string",
    "symbol": "string",
    "decimals": 0,
    "logoUri": "string",
    "marketUid": "string"
    },
    "maxLeverage": 0,
    "ltv": 0,
    "risk": {
    "configScore": 0,
    "maxTokenScore": 0
    }
    }
    ]
    }