List all yield opportunities
curl --request GET \
--url https://api.yield.xyz/v1/yields \
--header 'x-api-key: <api-key>'import requests
url = "https://api.yield.xyz/v1/yields"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.yield.xyz/v1/yields', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.yield.xyz/v1/yields",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.yield.xyz/v1/yields"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.yield.xyz/v1/yields")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.yield.xyz/v1/yields")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"total": 100,
"offset": 0,
"limit": 20,
"items": [
{
"id": "ethereum-eth-lido-staking",
"network": "ethereum",
"inputTokens": [
{
"symbol": "ETH",
"name": "Ethereum",
"decimals": 18,
"network": "Ethereum",
"address": "0x...",
"logoURI": "https://...",
"isPoints": true,
"coinGeckoId": "ethereum"
}
],
"token": {
"symbol": "ETH",
"name": "Ethereum",
"decimals": 18,
"network": "Ethereum",
"address": "0x...",
"logoURI": "https://...",
"isPoints": true,
"coinGeckoId": "ethereum"
},
"rewardRate": {
"total": 6.5,
"rateType": "APR",
"components": [
{
"rate": 0.04,
"rateType": "APR",
"token": {
"symbol": "ETH",
"name": "Ethereum",
"decimals": 18,
"network": "Ethereum",
"address": "0x...",
"logoURI": "https://...",
"isPoints": true,
"coinGeckoId": "ethereum"
},
"yieldSource": "protocol_incentive",
"description": "LDO distributed to incentivize stETH adoption via Lido Boost"
}
]
},
"status": {
"enter": true,
"exit": true
},
"metadata": {
"name": "Lido Staking",
"logoURI": "https://lido.fi/logo.png",
"description": "Stake ETH with Lido to earn auto-compounding validator rewards via stETH.",
"documentation": "https://docs.lido.fi",
"underMaintenance": false,
"deprecated": false,
"supportedStandards": [
"ERC20"
]
},
"mechanics": {
"type": "staking",
"rewardSchedule": "block",
"rewardClaiming": "auto",
"gasFeeToken": {
"symbol": "ETH",
"name": "Ethereum",
"decimals": 18,
"network": "Ethereum",
"address": "0x...",
"logoURI": "https://...",
"isPoints": true,
"coinGeckoId": "ethereum"
},
"requiresValidatorSelection": true,
"lockupPeriod": {
"seconds": 86400
},
"cooldownPeriod": {
"seconds": 86400
},
"warmupPeriod": {
"seconds": 86400
},
"fee": {
"deposit": "0.00",
"withdrawal": "0.00",
"management": "2.00",
"performance": "20.00"
},
"entryLimits": {
"minimum": "0.01",
"maximum": "1000.0"
},
"supportsLedgerWalletApi": true,
"extraTransactionFormatsSupported": [
"raw"
],
"arguments": {
"enter": {
"fields": [
{
"name": "amount",
"type": "string",
"label": "Amount to Enter",
"description": "<string>",
"required": true,
"options": [
"individual",
"batched"
],
"optionsRef": "/api/v1/validators?integrationId=eth-lido",
"default": {},
"placeholder": "<string>",
"minimum": "1.0",
"maximum": "100.0",
"isArray": false
}
],
"notes": "<string>"
},
"exit": {
"fields": [
{
"name": "amount",
"type": "string",
"label": "Amount to Enter",
"description": "<string>",
"required": true,
"options": [
"individual",
"batched"
],
"optionsRef": "/api/v1/validators?integrationId=eth-lido",
"default": {},
"placeholder": "<string>",
"minimum": "1.0",
"maximum": "100.0",
"isArray": false
}
],
"notes": "<string>"
},
"manage": {},
"balance": {
"fields": [
{
"name": "amount",
"type": "string",
"label": "Amount to Enter",
"description": "<string>",
"required": true,
"options": [
"individual",
"batched"
],
"optionsRef": "/api/v1/validators?integrationId=eth-lido",
"default": {},
"placeholder": "<string>",
"minimum": "1.0",
"maximum": "100.0",
"isArray": false
}
],
"notes": "<string>"
}
},
"possibleFeeTakingMechanisms": {
"depositFee": false,
"managementFee": false,
"performanceFee": false,
"validatorRebates": false
}
},
"providerId": "lido",
"outputToken": {
"symbol": "ETH",
"name": "Ethereum",
"decimals": 18,
"network": "Ethereum",
"address": "0x...",
"logoURI": "https://...",
"isPoints": true,
"coinGeckoId": "ethereum"
},
"statistics": {
"tvlUsd": "1,200,000",
"tvl": "500.25",
"tvlRaw": "500250000000000000000",
"uniqueUsers": 348,
"averagePositionSizeUsd": "3,448.27",
"averagePositionSize": "1.44"
},
"tags": [
"restaking",
"ETH",
"LST"
]
}
]
}{
"message": "Validation failed",
"error": "Bad Request",
"statusCode": 400
}{
"message": "Invalid API key",
"error": "Unauthorized",
"statusCode": 401
}{
"message": "Rate limit exceeded",
"error": "Too Many Requests",
"statusCode": 429,
"retryAfter": 30
}{
"message": "Internal server error",
"error": "Internal Server Error",
"statusCode": 500
}Discovery
List all yield opportunities
Retrieve a paginated list of available yield opportunities across all supported networks and protocols.
GET
/
v1
/
yields
List all yield opportunities
curl --request GET \
--url https://api.yield.xyz/v1/yields \
--header 'x-api-key: <api-key>'import requests
url = "https://api.yield.xyz/v1/yields"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://api.yield.xyz/v1/yields', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.yield.xyz/v1/yields",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.yield.xyz/v1/yields"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.yield.xyz/v1/yields")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.yield.xyz/v1/yields")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"total": 100,
"offset": 0,
"limit": 20,
"items": [
{
"id": "ethereum-eth-lido-staking",
"network": "ethereum",
"inputTokens": [
{
"symbol": "ETH",
"name": "Ethereum",
"decimals": 18,
"network": "Ethereum",
"address": "0x...",
"logoURI": "https://...",
"isPoints": true,
"coinGeckoId": "ethereum"
}
],
"token": {
"symbol": "ETH",
"name": "Ethereum",
"decimals": 18,
"network": "Ethereum",
"address": "0x...",
"logoURI": "https://...",
"isPoints": true,
"coinGeckoId": "ethereum"
},
"rewardRate": {
"total": 6.5,
"rateType": "APR",
"components": [
{
"rate": 0.04,
"rateType": "APR",
"token": {
"symbol": "ETH",
"name": "Ethereum",
"decimals": 18,
"network": "Ethereum",
"address": "0x...",
"logoURI": "https://...",
"isPoints": true,
"coinGeckoId": "ethereum"
},
"yieldSource": "protocol_incentive",
"description": "LDO distributed to incentivize stETH adoption via Lido Boost"
}
]
},
"status": {
"enter": true,
"exit": true
},
"metadata": {
"name": "Lido Staking",
"logoURI": "https://lido.fi/logo.png",
"description": "Stake ETH with Lido to earn auto-compounding validator rewards via stETH.",
"documentation": "https://docs.lido.fi",
"underMaintenance": false,
"deprecated": false,
"supportedStandards": [
"ERC20"
]
},
"mechanics": {
"type": "staking",
"rewardSchedule": "block",
"rewardClaiming": "auto",
"gasFeeToken": {
"symbol": "ETH",
"name": "Ethereum",
"decimals": 18,
"network": "Ethereum",
"address": "0x...",
"logoURI": "https://...",
"isPoints": true,
"coinGeckoId": "ethereum"
},
"requiresValidatorSelection": true,
"lockupPeriod": {
"seconds": 86400
},
"cooldownPeriod": {
"seconds": 86400
},
"warmupPeriod": {
"seconds": 86400
},
"fee": {
"deposit": "0.00",
"withdrawal": "0.00",
"management": "2.00",
"performance": "20.00"
},
"entryLimits": {
"minimum": "0.01",
"maximum": "1000.0"
},
"supportsLedgerWalletApi": true,
"extraTransactionFormatsSupported": [
"raw"
],
"arguments": {
"enter": {
"fields": [
{
"name": "amount",
"type": "string",
"label": "Amount to Enter",
"description": "<string>",
"required": true,
"options": [
"individual",
"batched"
],
"optionsRef": "/api/v1/validators?integrationId=eth-lido",
"default": {},
"placeholder": "<string>",
"minimum": "1.0",
"maximum": "100.0",
"isArray": false
}
],
"notes": "<string>"
},
"exit": {
"fields": [
{
"name": "amount",
"type": "string",
"label": "Amount to Enter",
"description": "<string>",
"required": true,
"options": [
"individual",
"batched"
],
"optionsRef": "/api/v1/validators?integrationId=eth-lido",
"default": {},
"placeholder": "<string>",
"minimum": "1.0",
"maximum": "100.0",
"isArray": false
}
],
"notes": "<string>"
},
"manage": {},
"balance": {
"fields": [
{
"name": "amount",
"type": "string",
"label": "Amount to Enter",
"description": "<string>",
"required": true,
"options": [
"individual",
"batched"
],
"optionsRef": "/api/v1/validators?integrationId=eth-lido",
"default": {},
"placeholder": "<string>",
"minimum": "1.0",
"maximum": "100.0",
"isArray": false
}
],
"notes": "<string>"
}
},
"possibleFeeTakingMechanisms": {
"depositFee": false,
"managementFee": false,
"performanceFee": false,
"validatorRebates": false
}
},
"providerId": "lido",
"outputToken": {
"symbol": "ETH",
"name": "Ethereum",
"decimals": 18,
"network": "Ethereum",
"address": "0x...",
"logoURI": "https://...",
"isPoints": true,
"coinGeckoId": "ethereum"
},
"statistics": {
"tvlUsd": "1,200,000",
"tvl": "500.25",
"tvlRaw": "500250000000000000000",
"uniqueUsers": 348,
"averagePositionSizeUsd": "3,448.27",
"averagePositionSize": "1.44"
},
"tags": [
"restaking",
"ETH",
"LST"
]
}
]
}{
"message": "Validation failed",
"error": "Bad Request",
"statusCode": 400
}{
"message": "Invalid API key",
"error": "Unauthorized",
"statusCode": 401
}{
"message": "Rate limit exceeded",
"error": "Too Many Requests",
"statusCode": 429,
"retryAfter": 30
}{
"message": "Internal server error",
"error": "Internal Server Error",
"statusCode": 500
}Authorizations
Query Parameters
Offset for pagination
Required range:
x >= 0Number of items per page
Required range:
1 <= x <= 100Filter by network
Available options:
ethereum, ethereum-goerli, ethereum-holesky, ethereum-sepolia, ethereum-hoodi, arbitrum, base, base-sepolia, gnosis, optimism, polygon, polygon-amoy, starknet, zksync, linea, unichain, monad-testnet, avalanche-c, avalanche-c-atomic, avalanche-p, binance, celo, fantom, harmony, moonriver, okc, viction, core, sonic, katana, hyperevm, agoric, akash, axelar, band-protocol, bitsong, canto, chihuahua, comdex, coreum, cosmos, crescent, cronos, cudos, desmos, dydx, evmos, fetch-ai, gravity-bridge, injective, irisnet, juno, kava, ki-network, mars-protocol, nym, okex-chain, onomy, osmosis, persistence, quicksilver, regen, secret, sentinel, sommelier, stafi, stargaze, stride, teritori, tgrade, umee, sei, mantra, celestia, saga, zetachain, dymension, humansai, neutron, polkadot, kusama, westend, bittensor, binancebeacon, cardano, near, solana, solana-devnet, stellar, stellar-testnet, sui, tezos, tron, ton, ton-testnet Filter by multiple networks (comma separated)
Maximum string length:
200Maximum array length:
100Filter by yield type
Available options:
staking, restaking, lending, vault, fixed_yield, real_world_asset Filter by multiple yield types (comma separated)
Available options:
staking, restaking, lending, vault, fixed_yield, real_world_asset Filter by cooldown period
Filter by warmup period
Filter by token symbol or address
Filter by input token symbol or address
Filter by multiple input token symbol or address (comma separated)
Filter by provider ID
Filter by multiple provider IDs (comma separated)
Search by yield name
Sort by yield status
Available options:
statusEnterAsc, statusEnterDesc, statusExitAsc, statusExitDesc ⌘I

