Skip to main content
Yield Market Details Yield markets allow users to deposit assets and earn returns through various DeFi strategies. Unlike traditional lending markets where returns come from borrower interest, yield markets generate returns through liquidity provision, staking rewards, automated strategies, and protocol-specific incentives. Our Markets API already contains lots of information that you would manually collect via multiple API calls throughout protocols and providers, such as:
  • basic protocol information (one call contains multiple protocols),
  • APY information,
  • token information,
  • vault information,
  • actions, etc.
By enriching the response with all of this information, it makes the API powerful enough to drive full-fledged dashboards and applications as well as smaller widgets, cards or notifications - All in a single API call!

Supported Protocols

Our Markets API provides unified access to yield markets across multiple protocols: If you want more information on the protocols that are supported, please refer to the Supported Protocols Section page.

Yield vs Lending

Yield markets and lending markets have different mechanics. Below is a side-by-side comparison:
FeatureYield MarketsLending Markets
Primary ActionDeposit to earnDeposit to lend, with borrowing option
Return SourceEarnings collected through DeFi strategiesBorrower interest payments + protocol rewards (optional)
CollateralizationNot requiredRequired for borrowing
Risk ProfileStrategy-dependentCredit risk + liquidation risk (if assets were borrowed)
ComposabilityMostly single-sidedTwo-sided (lend + borrow)

Data Structure

Below is an example of a yield market response from the Markets API. Based on customer demand, we may add more fields to the response in the future. For the latest data structure, please have a look at our Markets API Reference page.
Please note that we do our best to design our APIs to be non-breaking. It is recommended to filter the response and only include the fields / types you need to ensure it won’t break your application if new fields are added over time.
Yield Markets Data Structure
{
  "id": "string",                    // Unique market identifier
  "type": "yield",                   // Market type
  "provider": {
    "id": "string",                  // Protocol identifier
    "name": "string",                // Protocol display name
    "icon": "string"                 // Protocol icon URL
  },
  "token": {
    "address": "string",             // Token mint address
    "symbol": "string",              // Token symbol
    "decimals": number,              // Token decimals
    "icon": "string"                 // Token icon URL
  },
  "websiteUrl": "string",            // Direct link to protocol (optional)
  "depositApy": number,              // Total APY including rewards
  "baseDepositApy": number,          // Base APY without rewards
  "baseDepositApy30d": number,       // Historical 30-day average (optional)
  "baseDepositApy90d": number,       // Historical 90-day average (optional)
  "baseDepositApy180d": number,      // Historical 180-day average (optional)
  "totalDeposit": number,            // Total deposited (token amount)
  "totalDepositUsd": number,         // Total deposited (USD value)
  "rewards": [                       // Additional reward tokens (optional)
    {
      "type": "deposit",
      "apy": number,
      "token": {
        "address": "string",
        "symbol": "string",
        "decimals": number,
        "icon": "string"
      },
      "marketAction": "deposit"
    }
  ],
  "additionalData": {},               // Protocol-specific metadata (varies by market)
  "actions": {
    "deposit": {
      "blinkUrl": "string"           // Blink action URL
    },
    "withdraw": {
      "blinkUrl": "string"           // Blink action URL
    }
    // Additional actions may be available (e.g., claimRewards)
  }
}

Practical Example

In order to better understand how the API works, let’s walk through an example response for the Kamino Lend USDC Prime Vault below:
API Response for Kamino Lend USDC Prime Vault
{
  "id": "kamino.lend.HDsayqAsDWy3QvANGqh2yNraqcD8Fnjgh73Mhb3WRS5E",
  "type": "yield",
  "provider": {
    "id": "kamino",
    "name": "Kamino",
    "icon": "https://imagedelivery.net/C7jfNnfrjpAYWW6YevrFDg/5cddfb2e-c98e-4734-528b-b541fb5e2b00/public"
  },
  "token": {
    "address": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
    "symbol": "USDC",
    "decimals": 6,
    "icon": "https://raw.githubusercontent.com/solana-labs/token-list/main/assets/mainnet/EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v/logo.png"
  },
  "websiteUrl": "https://kamino.com/lend/usdc-prime",
  "depositApy": 0.0389,
  "baseDepositApy": 0.0216,
  "baseDepositApy30d": 0.0618,
  "baseDepositApy90d": 0.0824,
  "baseDepositApy180d": 0.1184,
  "totalDeposit": 174644281.764,
  "totalDepositUsd": 174588566.75,
  "rewards": [
    {
      "type": "deposit",
      "apy": 0.0173,
      "token": {
        "address": "KMNo3nJsBXfcpJTVhZcXLW7RmTwTt4GVFE7suUBo9sS",
        "symbol": "KMNO",
        "decimals": 6,
        "icon": "https://cdn.kamino.finance/kamino.svg"
      },
      "marketAction": "deposit"
    }
  ],
  "additionalData": {
    "vaultAddress": "HDsayqAsDWy3QvANGqh2yNraqcD8Fnjgh73Mhb3WRS5E",
    "vaultSlug": "usdc-prime",
    "vaultName": "USDC Prime",
    "vaultRiskProfile": "Conservative"
  },
  "actions": {
    "deposit": {
      "blinkUrl": "blink:https://kamino.dial.to/api/v0/lend/usdc-prime/deposit"
    },
    "withdraw": {
      "blinkUrl": "blink:https://kamino.dial.to/api/v0/lend/usdc-prime/withdraw"
    },
    "claimRewards": {
      "blinkUrl": "blink:https://kamino.dial.to/api/v0/lend/usdc-prime/claim-rewards"
    }
  }
}

Understanding the Response

What you can see here is the original response from the API. As mentioned in the introduction section, this response is powerful enough to drive full-fledged dashboards and applications. Let’s break it down into its components:
  • Market Identity:
    • id: Unique identifier combining protocol, market type, and address
    • type: Market category (always yield for yield markets)
    • provider: Protocol information for branding in your UI
    • token: Full token information including address, symbol, decimals and icon
    • websiteUrl: Direct link to the market on the protocol’s website
  • APY Breakdown:
    • depositApy (3.89%) — Total combined yield including rewards
    • baseDepositApy (2.16%) — Core yield from the strategy
    • baseDepositApy30d (6.18%) — Historical 30-day average
    • baseDepositApy90d (8.24%) — Historical 90-day average
    • baseDepositApy180d (11.84%) — Historical 180-day average
    • rewards array (1.73% KMNO) — Additional incentive tokens for depositors
  • Market Metrics:
    • This vault holds $174.6M USDC across all depositors (totalDeposit and totalDepositUsd).
    Note: totalDeposit is in the token’s native units, while the totalDepositUsd is in USD.
  • Actions: The actions object contains Blink URLs for deposit, withdraw, and optionally claimRewards depending on the protocol.
  • Additional Data: The additionalData object contains protocol-specific metadata. In this example, we have the following additional data for the Kamino Lend USDC Prime Vault:
    • vaultAddress: The address of the vault
    • vaultSlug: The slug of the vault
    • vaultName: The name of the vault
    • vaultRiskProfile: The risk profile of the vault

Protocol-Specific Additional Data

The additionalData field varies by provider. In our example, we have the following additional data for the Kamino Lend USDC Prime Vault:
Kamino Lend
{
  "additionalData": {
    "vaultAddress": "HDsayqAsDWy3QvANGqh2yNraqcD8Fnjgh73Mhb3WRS5E",
    "vaultSlug": "usdc-prime",
    "vaultName": "USDC Prime",
    "vaultRiskProfile": "Conservative"
  }
}
If you will look into Jupiter Earn or DeFi Carrot, you will see that they will return shareToken additional data, which is the token information of the token that you will receive when you deposit in return for your deposit.
Jupiter Earn and DeFi Carrot
{
  "additionalData": {
    "shareToken": {
      "address": "CRTx1JouZhzSU6XytsE42UQraoGqiHgxabocVfARTy2s",
      "symbol": "CRT",
      "decimals": 9,
      "icon": "https://res.cloudinary.com/dnu9h68sh/image/upload/v1757607855/carrot_rf3gkd.png",
      "name": "CRT"
    }
  }
}
and Lulo will return the withdrawCooldownHours additional data:
Lulo Boosted
{
  "additionalData": {
    "withdrawCooldownHours": 24
  }
}
As we continue to add more providers and markets, the additionalData field will continue to grow and be more powerful. If you need more information or want to check out what protocols are supported, please refer to the Supported Protocols page.