List yield sources
curl --request GET \
--url https://sandbox.groundtech.co/v2/wallets/yield-sources \
--header 'Authorization: Bearer <token>'import requests
url = "https://sandbox.groundtech.co/v2/wallets/yield-sources"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://sandbox.groundtech.co/v2/wallets/yield-sources', 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://sandbox.groundtech.co/v2/wallets/yield-sources",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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://sandbox.groundtech.co/v2/wallets/yield-sources"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://sandbox.groundtech.co/v2/wallets/yield-sources")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.groundtech.co/v2/wallets/yield-sources")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"yieldSources": [
{
"id": "syrup-usdc",
"name": "Syrup USDC",
"description": "Overcollateralized lending exposure with an asynchronous withdrawal window",
"mode": "active",
"chain": "ethereum",
"depositToken": "usdc",
"apyBps": 453,
"navUpdateMode": "continuous",
"protocol": "maple",
"tvlUsd": 1200000000,
"utilizationPct": 82.5,
"addresses": [
{
"label": "Pool",
"value": "0x80ac24aa929eaf5013f6436cda2a7ba190f5cc0b"
}
],
"links": [
{
"label": "Maple earn",
"url": "https://maple.finance/syrup"
}
],
"allocations": [
{
"label": "Open-term loans",
"type": "loan",
"valueUsd": 540000000,
"pct": 45
}
],
"processingPolicies": {
"deposit": {
"processingTimeBasis": "elapsed_seconds",
"typicalMinUnits": 0,
"typicalMaxUnits": 0
},
"redeem": {
"processingTimeBasis": "elapsed_seconds",
"typicalMinUnits": 43200,
"typicalMaxUnits": 43200
}
}
},
{
"id": "morpho-gauntlet-usdc",
"name": "Morpho Gauntlet USDC Prime",
"description": "Overcollateralized lending via a Morpho ERC-4626 USDC vault",
"mode": "active",
"chain": "ethereum",
"depositToken": "usdc",
"apyBps": 472,
"navUpdateMode": "continuous",
"protocol": "morpho",
"tvlUsd": 400000000,
"utilizationPct": 59,
"addresses": [
{
"label": "Vault",
"value": "0xdd0f28e19C1780eb6396170735D45153D261490d"
}
],
"links": [
{
"label": "Morpho vault",
"url": "https://app.morpho.org/ethereum/vault/0xdd0f28e19C1780eb6396170735D45153D261490d/gauntlet-usdc-prime"
}
],
"allocations": [
{
"label": "USDC / cbBTC",
"type": "market",
"valueUsd": 220000000,
"pct": 55
},
{
"label": "USDC / WETH",
"type": "market",
"valueUsd": 180000000,
"pct": 45
}
],
"processingPolicies": {
"deposit": {
"processingTimeBasis": "elapsed_seconds",
"typicalMinUnits": 0,
"typicalMaxUnits": 0
},
"redeem": {
"processingTimeBasis": "elapsed_seconds",
"typicalMinUnits": 0,
"typicalMaxUnits": 0
}
}
},
{
"id": "morpho-steakhouse-usdc",
"name": "Morpho Steakhouse USDC Prime",
"description": "Overcollateralized lending via a Morpho ERC-4626 USDC vault",
"mode": "active",
"chain": "ethereum",
"depositToken": "usdc",
"apyBps": 468,
"navUpdateMode": "continuous",
"protocol": "morpho",
"tvlUsd": 350000000,
"utilizationPct": 63,
"addresses": [
{
"label": "Vault",
"value": "0xBEEF01735c132Ada46AA9aA4c54623cAA92A64CB"
}
],
"links": [
{
"label": "Morpho vault",
"url": "https://app.morpho.org/ethereum/vault/0xBEEF01735c132Ada46AA9aA4c54623cAA92A64CB/steakhouse-usdc-prime"
}
],
"allocations": [
{
"label": "USDC / wstETH",
"type": "market",
"valueUsd": 210000000,
"pct": 60
},
{
"label": "USDC / WBTC",
"type": "market",
"valueUsd": 140000000,
"pct": 40
}
],
"processingPolicies": {
"deposit": {
"processingTimeBasis": "elapsed_seconds",
"typicalMinUnits": 0,
"typicalMaxUnits": 0
},
"redeem": {
"processingTimeBasis": "elapsed_seconds",
"typicalMinUnits": 0,
"typicalMaxUnits": 0
}
}
},
{
"id": "morpho-august-usdc-v2",
"name": "Morpho August USDC V2",
"description": "Overcollateralized lending via the Morpho August USDC V2 ERC-4626 vault",
"mode": "active",
"chain": "ethereum",
"depositToken": "usdc",
"apyBps": 563,
"protocol": "morpho",
"tvlUsd": null,
"utilizationPct": null,
"addresses": [
{
"label": "Vault",
"value": "0x7ceB0f01Cb7187a2EBED5661eCC4d5701d8F2350"
}
],
"links": [
{
"label": "Morpho vault",
"url": "https://app.morpho.org/ethereum/vault/0x7ceB0f01Cb7187a2EBED5661eCC4d5701d8F2350/august-usdc-v2"
}
],
"allocations": [],
"processingPolicies": {
"deposit": {
"processingTimeBasis": "elapsed_seconds",
"typicalMinUnits": 0,
"typicalMaxUnits": 0
},
"redeem": {
"processingTimeBasis": "elapsed_seconds",
"typicalMinUnits": 0,
"typicalMaxUnits": 0
}
}
}
],
"nextCursor": null
}{
"error": "Unauthenticated request",
"message": "Missing or invalid bearer token"
}{
"error": "Rate limit exceeded",
"code": "rate_limited"
}{
"error": "Internal server error",
"code": "internal_error"
}Yield Sources
List yield sources
Returns the environment-specific yield source catalog for wallet strategies. Sources in emergency_freeze remain visible with that mode so clients can show their maintenance status, but they must not be selected for new allocations. Use depositToken to place each source in the matching USDC or USDT strategy group.
GET
/
v2
/
wallets
/
yield-sources
List yield sources
curl --request GET \
--url https://sandbox.groundtech.co/v2/wallets/yield-sources \
--header 'Authorization: Bearer <token>'import requests
url = "https://sandbox.groundtech.co/v2/wallets/yield-sources"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://sandbox.groundtech.co/v2/wallets/yield-sources', 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://sandbox.groundtech.co/v2/wallets/yield-sources",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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://sandbox.groundtech.co/v2/wallets/yield-sources"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://sandbox.groundtech.co/v2/wallets/yield-sources")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.groundtech.co/v2/wallets/yield-sources")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"yieldSources": [
{
"id": "syrup-usdc",
"name": "Syrup USDC",
"description": "Overcollateralized lending exposure with an asynchronous withdrawal window",
"mode": "active",
"chain": "ethereum",
"depositToken": "usdc",
"apyBps": 453,
"navUpdateMode": "continuous",
"protocol": "maple",
"tvlUsd": 1200000000,
"utilizationPct": 82.5,
"addresses": [
{
"label": "Pool",
"value": "0x80ac24aa929eaf5013f6436cda2a7ba190f5cc0b"
}
],
"links": [
{
"label": "Maple earn",
"url": "https://maple.finance/syrup"
}
],
"allocations": [
{
"label": "Open-term loans",
"type": "loan",
"valueUsd": 540000000,
"pct": 45
}
],
"processingPolicies": {
"deposit": {
"processingTimeBasis": "elapsed_seconds",
"typicalMinUnits": 0,
"typicalMaxUnits": 0
},
"redeem": {
"processingTimeBasis": "elapsed_seconds",
"typicalMinUnits": 43200,
"typicalMaxUnits": 43200
}
}
},
{
"id": "morpho-gauntlet-usdc",
"name": "Morpho Gauntlet USDC Prime",
"description": "Overcollateralized lending via a Morpho ERC-4626 USDC vault",
"mode": "active",
"chain": "ethereum",
"depositToken": "usdc",
"apyBps": 472,
"navUpdateMode": "continuous",
"protocol": "morpho",
"tvlUsd": 400000000,
"utilizationPct": 59,
"addresses": [
{
"label": "Vault",
"value": "0xdd0f28e19C1780eb6396170735D45153D261490d"
}
],
"links": [
{
"label": "Morpho vault",
"url": "https://app.morpho.org/ethereum/vault/0xdd0f28e19C1780eb6396170735D45153D261490d/gauntlet-usdc-prime"
}
],
"allocations": [
{
"label": "USDC / cbBTC",
"type": "market",
"valueUsd": 220000000,
"pct": 55
},
{
"label": "USDC / WETH",
"type": "market",
"valueUsd": 180000000,
"pct": 45
}
],
"processingPolicies": {
"deposit": {
"processingTimeBasis": "elapsed_seconds",
"typicalMinUnits": 0,
"typicalMaxUnits": 0
},
"redeem": {
"processingTimeBasis": "elapsed_seconds",
"typicalMinUnits": 0,
"typicalMaxUnits": 0
}
}
},
{
"id": "morpho-steakhouse-usdc",
"name": "Morpho Steakhouse USDC Prime",
"description": "Overcollateralized lending via a Morpho ERC-4626 USDC vault",
"mode": "active",
"chain": "ethereum",
"depositToken": "usdc",
"apyBps": 468,
"navUpdateMode": "continuous",
"protocol": "morpho",
"tvlUsd": 350000000,
"utilizationPct": 63,
"addresses": [
{
"label": "Vault",
"value": "0xBEEF01735c132Ada46AA9aA4c54623cAA92A64CB"
}
],
"links": [
{
"label": "Morpho vault",
"url": "https://app.morpho.org/ethereum/vault/0xBEEF01735c132Ada46AA9aA4c54623cAA92A64CB/steakhouse-usdc-prime"
}
],
"allocations": [
{
"label": "USDC / wstETH",
"type": "market",
"valueUsd": 210000000,
"pct": 60
},
{
"label": "USDC / WBTC",
"type": "market",
"valueUsd": 140000000,
"pct": 40
}
],
"processingPolicies": {
"deposit": {
"processingTimeBasis": "elapsed_seconds",
"typicalMinUnits": 0,
"typicalMaxUnits": 0
},
"redeem": {
"processingTimeBasis": "elapsed_seconds",
"typicalMinUnits": 0,
"typicalMaxUnits": 0
}
}
},
{
"id": "morpho-august-usdc-v2",
"name": "Morpho August USDC V2",
"description": "Overcollateralized lending via the Morpho August USDC V2 ERC-4626 vault",
"mode": "active",
"chain": "ethereum",
"depositToken": "usdc",
"apyBps": 563,
"protocol": "morpho",
"tvlUsd": null,
"utilizationPct": null,
"addresses": [
{
"label": "Vault",
"value": "0x7ceB0f01Cb7187a2EBED5661eCC4d5701d8F2350"
}
],
"links": [
{
"label": "Morpho vault",
"url": "https://app.morpho.org/ethereum/vault/0x7ceB0f01Cb7187a2EBED5661eCC4d5701d8F2350/august-usdc-v2"
}
],
"allocations": [],
"processingPolicies": {
"deposit": {
"processingTimeBasis": "elapsed_seconds",
"typicalMinUnits": 0,
"typicalMaxUnits": 0
},
"redeem": {
"processingTimeBasis": "elapsed_seconds",
"typicalMinUnits": 0,
"typicalMaxUnits": 0
}
}
}
],
"nextCursor": null
}{
"error": "Unauthenticated request",
"message": "Missing or invalid bearer token"
}{
"error": "Rate limit exceeded",
"code": "rate_limited"
}{
"error": "Internal server error",
"code": "internal_error"
}This endpoint returns the live public yield-source catalog. The catalog is environment-specific: sandbox exposes only the currently supported sandbox yield sources, while production may expose additional entries.
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Response
Yield source catalog
Always null — the yield-source catalog is unpaginated. Present for list-envelope consistency.
Canonical list envelope. Same items as yieldSources (kept as a backwards-compatible alias).
Show child attributes
Show child attributes
Backwards-compatible alias of data.
Show child attributes
Show child attributes
⌘I