Get SOL Staking Dashboard
curl --request POST \
--url https://api.custody.api-zodia.io/v3/api/ase/staking/sol/dashboard \
--header 'Content-Type: application/json' \
--header 'submitter-id: <submitter-id>' \
--data '
{
"walletId": "ZTEST-NOBENF-849P8XKKAO"
}
'import requests
url = "https://api.custody.api-zodia.io/v3/api/ase/staking/sol/dashboard"
payload = { "walletId": "ZTEST-NOBENF-849P8XKKAO" }
headers = {
"submitter-id": "<submitter-id>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'submitter-id': '<submitter-id>', 'Content-Type': 'application/json'},
body: JSON.stringify({walletId: 'ZTEST-NOBENF-849P8XKKAO'})
};
fetch('https://api.custody.api-zodia.io/v3/api/ase/staking/sol/dashboard', 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.custody.api-zodia.io/v3/api/ase/staking/sol/dashboard",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'walletId' => 'ZTEST-NOBENF-849P8XKKAO'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"submitter-id: <submitter-id>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.custody.api-zodia.io/v3/api/ase/staking/sol/dashboard"
payload := strings.NewReader("{\n \"walletId\": \"ZTEST-NOBENF-849P8XKKAO\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("submitter-id", "<submitter-id>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.custody.api-zodia.io/v3/api/ase/staking/sol/dashboard")
.header("submitter-id", "<submitter-id>")
.header("Content-Type", "application/json")
.body("{\n \"walletId\": \"ZTEST-NOBENF-849P8XKKAO\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.custody.api-zodia.io/v3/api/ase/staking/sol/dashboard")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["submitter-id"] = '<submitter-id>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"walletId\": \"ZTEST-NOBENF-849P8XKKAO\"\n}"
response = http.request(request)
puts response.read_body{
"currency": "SOL",
"balances": {
"pendingStake": {
"amount": "10.00000000",
"amountUnit": "10,000,000,000",
"fiatValue": 1500,
"fiatCurrency": "USD"
},
"activeStake": {
"amount": "10.00000000",
"amountUnit": "10,000,000,000",
"fiatValue": 1500,
"fiatCurrency": "USD"
},
"deactivatingStake": {
"amount": "10.00000000",
"amountUnit": "10,000,000,000",
"fiatValue": 1500,
"fiatCurrency": "USD"
},
"withdrawable": {
"amount": "10.00000000",
"amountUnit": "10,000,000,000",
"fiatValue": 1500,
"fiatCurrency": "USD"
}
},
"stakeAccounts": {
"activating": {
"count": 123,
"balance": {
"amount": "10.00000000",
"amountUnit": "10,000,000,000",
"fiatValue": 1500,
"fiatCurrency": "USD"
},
"accounts": [
"<string>"
]
},
"active": {
"count": 123,
"balance": {
"amount": "10.00000000",
"amountUnit": "10,000,000,000",
"fiatValue": 1500,
"fiatCurrency": "USD"
},
"accounts": [
"<string>"
]
},
"deactivating": {
"count": 123,
"balance": {
"amount": "10.00000000",
"amountUnit": "10,000,000,000",
"fiatValue": 1500,
"fiatCurrency": "USD"
},
"accounts": [
"<string>"
]
},
"inactive": {
"count": 123,
"balance": {
"amount": "10.00000000",
"amountUnit": "10,000,000,000",
"fiatValue": 1500,
"fiatCurrency": "USD"
},
"accounts": [
"<string>"
]
}
},
"provider": "BLOCKDAEMON",
"lastUpdated": "2026-10-13T09:15:00Z"
}{
"timestamp": "2021-10-27T14:30:13.912Z",
"title": "Method Not Allowed",
"status": 415,
"details": [
{
"message": "Available methods : GET,POST",
"code": "ER-204"
}
]
}{
"timestamp": "2021-10-27T14:30:13.912Z",
"title": "Method Not Allowed",
"status": 415,
"details": [
{
"message": "Available methods : GET,POST",
"code": "ER-204"
}
]
}{
"timestamp": "2021-10-27T14:30:13.912Z",
"title": "Method Not Allowed",
"status": 415,
"details": [
{
"message": "Available methods : GET,POST",
"code": "ER-204"
}
]
}{
"timestamp": "2021-10-27T14:30:13.912Z",
"title": "Method Not Allowed",
"status": 415,
"details": [
{
"message": "Available methods : GET,POST",
"code": "ER-204"
}
]
}{
"timestamp": "2021-10-27T14:30:13.912Z",
"title": "Method Not Allowed",
"status": 415,
"details": [
{
"message": "Available methods : GET,POST",
"code": "ER-204"
}
]
}Staking-V3
Get SOL Staking Dashboard
Retrieve the staking position of a SOL wallet, as balances and stake accounts grouped by state (activating, active, deactivating, inactive). Figures are not real time, lastUpdated indicates when they were last updated.
POST
/
v3
/
api
/
ase
/
staking
/
sol
/
dashboard
Get SOL Staking Dashboard
curl --request POST \
--url https://api.custody.api-zodia.io/v3/api/ase/staking/sol/dashboard \
--header 'Content-Type: application/json' \
--header 'submitter-id: <submitter-id>' \
--data '
{
"walletId": "ZTEST-NOBENF-849P8XKKAO"
}
'import requests
url = "https://api.custody.api-zodia.io/v3/api/ase/staking/sol/dashboard"
payload = { "walletId": "ZTEST-NOBENF-849P8XKKAO" }
headers = {
"submitter-id": "<submitter-id>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'submitter-id': '<submitter-id>', 'Content-Type': 'application/json'},
body: JSON.stringify({walletId: 'ZTEST-NOBENF-849P8XKKAO'})
};
fetch('https://api.custody.api-zodia.io/v3/api/ase/staking/sol/dashboard', 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.custody.api-zodia.io/v3/api/ase/staking/sol/dashboard",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'walletId' => 'ZTEST-NOBENF-849P8XKKAO'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"submitter-id: <submitter-id>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.custody.api-zodia.io/v3/api/ase/staking/sol/dashboard"
payload := strings.NewReader("{\n \"walletId\": \"ZTEST-NOBENF-849P8XKKAO\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("submitter-id", "<submitter-id>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.custody.api-zodia.io/v3/api/ase/staking/sol/dashboard")
.header("submitter-id", "<submitter-id>")
.header("Content-Type", "application/json")
.body("{\n \"walletId\": \"ZTEST-NOBENF-849P8XKKAO\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.custody.api-zodia.io/v3/api/ase/staking/sol/dashboard")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["submitter-id"] = '<submitter-id>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"walletId\": \"ZTEST-NOBENF-849P8XKKAO\"\n}"
response = http.request(request)
puts response.read_body{
"currency": "SOL",
"balances": {
"pendingStake": {
"amount": "10.00000000",
"amountUnit": "10,000,000,000",
"fiatValue": 1500,
"fiatCurrency": "USD"
},
"activeStake": {
"amount": "10.00000000",
"amountUnit": "10,000,000,000",
"fiatValue": 1500,
"fiatCurrency": "USD"
},
"deactivatingStake": {
"amount": "10.00000000",
"amountUnit": "10,000,000,000",
"fiatValue": 1500,
"fiatCurrency": "USD"
},
"withdrawable": {
"amount": "10.00000000",
"amountUnit": "10,000,000,000",
"fiatValue": 1500,
"fiatCurrency": "USD"
}
},
"stakeAccounts": {
"activating": {
"count": 123,
"balance": {
"amount": "10.00000000",
"amountUnit": "10,000,000,000",
"fiatValue": 1500,
"fiatCurrency": "USD"
},
"accounts": [
"<string>"
]
},
"active": {
"count": 123,
"balance": {
"amount": "10.00000000",
"amountUnit": "10,000,000,000",
"fiatValue": 1500,
"fiatCurrency": "USD"
},
"accounts": [
"<string>"
]
},
"deactivating": {
"count": 123,
"balance": {
"amount": "10.00000000",
"amountUnit": "10,000,000,000",
"fiatValue": 1500,
"fiatCurrency": "USD"
},
"accounts": [
"<string>"
]
},
"inactive": {
"count": 123,
"balance": {
"amount": "10.00000000",
"amountUnit": "10,000,000,000",
"fiatValue": 1500,
"fiatCurrency": "USD"
},
"accounts": [
"<string>"
]
}
},
"provider": "BLOCKDAEMON",
"lastUpdated": "2026-10-13T09:15:00Z"
}{
"timestamp": "2021-10-27T14:30:13.912Z",
"title": "Method Not Allowed",
"status": 415,
"details": [
{
"message": "Available methods : GET,POST",
"code": "ER-204"
}
]
}{
"timestamp": "2021-10-27T14:30:13.912Z",
"title": "Method Not Allowed",
"status": 415,
"details": [
{
"message": "Available methods : GET,POST",
"code": "ER-204"
}
]
}{
"timestamp": "2021-10-27T14:30:13.912Z",
"title": "Method Not Allowed",
"status": 415,
"details": [
{
"message": "Available methods : GET,POST",
"code": "ER-204"
}
]
}{
"timestamp": "2021-10-27T14:30:13.912Z",
"title": "Method Not Allowed",
"status": 415,
"details": [
{
"message": "Available methods : GET,POST",
"code": "ER-204"
}
]
}{
"timestamp": "2021-10-27T14:30:13.912Z",
"title": "Method Not Allowed",
"status": 415,
"details": [
{
"message": "Available methods : GET,POST",
"code": "ER-204"
}
]
}Headers
Email of API user submitting the request
Example:
"api-maker@zodia.io"
Body
application/json
ID of the wallet
Example:
"ZTEST-NOBENF-849P8XKKAO"
Response
OK
Example:
"SOL"
Balances excluding the rent-exempt reserve held by each stake account
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Staking provider the wallet has staked with. Omitted when the wallet has no staking history.
Example:
"BLOCKDAEMON"
When the figures were last updated (ISO 8601, UTC)
Example:
"2026-10-13T09:15:00Z"