Get wallet yield
curl --request GET \
--url https://sandbox.groundtech.co/v2/wallets/{id}/yield \
--header 'Authorization: Bearer <token>'import requests
url = "https://sandbox.groundtech.co/v2/wallets/{id}/yield"
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/{id}/yield', 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/{id}/yield",
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/{id}/yield"
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/{id}/yield")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.groundtech.co/v2/wallets/{id}/yield")
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{
"walletId": "b1c2d3e4-0000-4000-8000-000000000001",
"earnedUsd": "250.000000",
"annualizedUsd": "376.750000",
"currentBalanceUsd": "82500.000000",
"positions": [
{
"yieldSourceId": "syrup-usdc",
"name": "Syrup USDC",
"apyBps": 453,
"pct": 40,
"deployedValueUsd": "33000.000000",
"navUpdateMode": "continuous",
"priceAsOf": "2026-07-14T20:00:00.000Z"
},
{
"yieldSourceId": "morpho-gauntlet-usdc",
"name": "Morpho Gauntlet USDC Prime",
"apyBps": 472,
"pct": 30,
"deployedValueUsd": "24750.000000",
"navUpdateMode": "continuous",
"priceAsOf": "2026-07-14T20:00:00.000Z"
},
{
"yieldSourceId": "morpho-steakhouse-usdc",
"name": "Morpho Steakhouse USDC Prime",
"apyBps": 468,
"pct": 30,
"deployedValueUsd": "24750.000000",
"navUpdateMode": "continuous",
"priceAsOf": "2026-07-14T20:00:00.000Z"
}
]
}{
"error": "id must be a valid UUID v4",
"code": "validation_error"
}{
"error": "Unauthenticated request",
"message": "Missing or invalid bearer token"
}{
"error": "Portfolio wallet not found",
"code": "wallet_not_found"
}{
"error": "Rate limit exceeded",
"code": "rate_limited"
}{
"error": "Internal server error",
"code": "internal_error"
}{
"error": "Wallet projection unavailable",
"code": "wallet_projection_unavailable",
"retryable": true
}Activity
Compute yield
Returns cumulative yield data and supporting metrics for a wallet. Use this to display “You’ve earned $X” and yield source APY breakdowns.
GET
/
v2
/
wallets
/
{id}
/
yield
Get wallet yield
curl --request GET \
--url https://sandbox.groundtech.co/v2/wallets/{id}/yield \
--header 'Authorization: Bearer <token>'import requests
url = "https://sandbox.groundtech.co/v2/wallets/{id}/yield"
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/{id}/yield', 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/{id}/yield",
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/{id}/yield"
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/{id}/yield")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://sandbox.groundtech.co/v2/wallets/{id}/yield")
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{
"walletId": "b1c2d3e4-0000-4000-8000-000000000001",
"earnedUsd": "250.000000",
"annualizedUsd": "376.750000",
"currentBalanceUsd": "82500.000000",
"positions": [
{
"yieldSourceId": "syrup-usdc",
"name": "Syrup USDC",
"apyBps": 453,
"pct": 40,
"deployedValueUsd": "33000.000000",
"navUpdateMode": "continuous",
"priceAsOf": "2026-07-14T20:00:00.000Z"
},
{
"yieldSourceId": "morpho-gauntlet-usdc",
"name": "Morpho Gauntlet USDC Prime",
"apyBps": 472,
"pct": 30,
"deployedValueUsd": "24750.000000",
"navUpdateMode": "continuous",
"priceAsOf": "2026-07-14T20:00:00.000Z"
},
{
"yieldSourceId": "morpho-steakhouse-usdc",
"name": "Morpho Steakhouse USDC Prime",
"apyBps": 468,
"pct": 30,
"deployedValueUsd": "24750.000000",
"navUpdateMode": "continuous",
"priceAsOf": "2026-07-14T20:00:00.000Z"
}
]
}{
"error": "id must be a valid UUID v4",
"code": "validation_error"
}{
"error": "Unauthenticated request",
"message": "Missing or invalid bearer token"
}{
"error": "Portfolio wallet not found",
"code": "wallet_not_found"
}{
"error": "Rate limit exceeded",
"code": "rate_limited"
}{
"error": "Internal server error",
"code": "internal_error"
}{
"error": "Wallet projection unavailable",
"code": "wallet_projection_unavailable",
"retryable": true
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Wallet ID
Response
Yield data for the wallet
Cumulative yield earned since wallet creation.
Estimated annualized yield in USD at current position values and rates.
Current total wallet balance (principal + yield).
APY breakdown per yield source in the wallet's strategy.
Show child attributes
Show child attributes
⌘I