curl --request POST \
--url https://api.custody.api-zodia.io/v3/api/ase/staking/eth/validators \
--header 'Content-Type: application/json' \
--header 'submitter-id: <submitter-id>' \
--data '
{
"walletIds": [
"<string>"
],
"paginationLimit": 10,
"paginationOffset": 0,
"validatorAddresses": [
"<string>"
],
"types": [],
"statuses": [],
"providers": [],
"withdrawalWallets": [
"<string>"
],
"feeRecipientWallets": [
"<string>"
],
"balances": [
"<string>"
],
"pendingDeposits": [
"<string>"
],
"sort": {
"by": "id"
}
}
'import requests
url = "https://api.custody.api-zodia.io/v3/api/ase/staking/eth/validators"
payload = {
"walletIds": ["<string>"],
"paginationLimit": 10,
"paginationOffset": 0,
"validatorAddresses": ["<string>"],
"types": [],
"statuses": [],
"providers": [],
"withdrawalWallets": ["<string>"],
"feeRecipientWallets": ["<string>"],
"balances": ["<string>"],
"pendingDeposits": ["<string>"],
"sort": { "by": "id" }
}
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({
walletIds: ['<string>'],
paginationLimit: 10,
paginationOffset: 0,
validatorAddresses: ['<string>'],
types: [],
statuses: [],
providers: [],
withdrawalWallets: ['<string>'],
feeRecipientWallets: ['<string>'],
balances: ['<string>'],
pendingDeposits: ['<string>'],
sort: {by: 'id'}
})
};
fetch('https://api.custody.api-zodia.io/v3/api/ase/staking/eth/validators', 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/eth/validators",
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([
'walletIds' => [
'<string>'
],
'paginationLimit' => 10,
'paginationOffset' => 0,
'validatorAddresses' => [
'<string>'
],
'types' => [
],
'statuses' => [
],
'providers' => [
],
'withdrawalWallets' => [
'<string>'
],
'feeRecipientWallets' => [
'<string>'
],
'balances' => [
'<string>'
],
'pendingDeposits' => [
'<string>'
],
'sort' => [
'by' => 'id'
]
]),
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/eth/validators"
payload := strings.NewReader("{\n \"walletIds\": [\n \"<string>\"\n ],\n \"paginationLimit\": 10,\n \"paginationOffset\": 0,\n \"validatorAddresses\": [\n \"<string>\"\n ],\n \"types\": [],\n \"statuses\": [],\n \"providers\": [],\n \"withdrawalWallets\": [\n \"<string>\"\n ],\n \"feeRecipientWallets\": [\n \"<string>\"\n ],\n \"balances\": [\n \"<string>\"\n ],\n \"pendingDeposits\": [\n \"<string>\"\n ],\n \"sort\": {\n \"by\": \"id\"\n }\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/eth/validators")
.header("submitter-id", "<submitter-id>")
.header("Content-Type", "application/json")
.body("{\n \"walletIds\": [\n \"<string>\"\n ],\n \"paginationLimit\": 10,\n \"paginationOffset\": 0,\n \"validatorAddresses\": [\n \"<string>\"\n ],\n \"types\": [],\n \"statuses\": [],\n \"providers\": [],\n \"withdrawalWallets\": [\n \"<string>\"\n ],\n \"feeRecipientWallets\": [\n \"<string>\"\n ],\n \"balances\": [\n \"<string>\"\n ],\n \"pendingDeposits\": [\n \"<string>\"\n ],\n \"sort\": {\n \"by\": \"id\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.custody.api-zodia.io/v3/api/ase/staking/eth/validators")
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 \"walletIds\": [\n \"<string>\"\n ],\n \"paginationLimit\": 10,\n \"paginationOffset\": 0,\n \"validatorAddresses\": [\n \"<string>\"\n ],\n \"types\": [],\n \"statuses\": [],\n \"providers\": [],\n \"withdrawalWallets\": [\n \"<string>\"\n ],\n \"feeRecipientWallets\": [\n \"<string>\"\n ],\n \"balances\": [\n \"<string>\"\n ],\n \"pendingDeposits\": [\n \"<string>\"\n ],\n \"sort\": {\n \"by\": \"id\"\n }\n}"
response = http.request(request)
puts response.read_body{
"total": 123,
"items": [
{
"validatorAddress": "<string>",
"type": "0x01",
"status": "PENDING_INITIALIZED",
"balance": {
"amount": "<string>",
"amountUnit": "<string>",
"fiatValue": "<string>",
"fiatCurrency": "USD"
},
"pendingDeposit": {
"amount": "<string>",
"amountUnit": "<string>",
"fiatValue": "<string>",
"fiatCurrency": "USD"
},
"withdrawalWallet": "<string>",
"feeRecipientWallet": "<string>",
"provider": "BITWISE_ON_CHAIN"
}
]
}{
"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"
}
]
}List ETH Validators
Search and paginate ETH validators for one or more wallets. Balance and status are refreshed hourly.
curl --request POST \
--url https://api.custody.api-zodia.io/v3/api/ase/staking/eth/validators \
--header 'Content-Type: application/json' \
--header 'submitter-id: <submitter-id>' \
--data '
{
"walletIds": [
"<string>"
],
"paginationLimit": 10,
"paginationOffset": 0,
"validatorAddresses": [
"<string>"
],
"types": [],
"statuses": [],
"providers": [],
"withdrawalWallets": [
"<string>"
],
"feeRecipientWallets": [
"<string>"
],
"balances": [
"<string>"
],
"pendingDeposits": [
"<string>"
],
"sort": {
"by": "id"
}
}
'import requests
url = "https://api.custody.api-zodia.io/v3/api/ase/staking/eth/validators"
payload = {
"walletIds": ["<string>"],
"paginationLimit": 10,
"paginationOffset": 0,
"validatorAddresses": ["<string>"],
"types": [],
"statuses": [],
"providers": [],
"withdrawalWallets": ["<string>"],
"feeRecipientWallets": ["<string>"],
"balances": ["<string>"],
"pendingDeposits": ["<string>"],
"sort": { "by": "id" }
}
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({
walletIds: ['<string>'],
paginationLimit: 10,
paginationOffset: 0,
validatorAddresses: ['<string>'],
types: [],
statuses: [],
providers: [],
withdrawalWallets: ['<string>'],
feeRecipientWallets: ['<string>'],
balances: ['<string>'],
pendingDeposits: ['<string>'],
sort: {by: 'id'}
})
};
fetch('https://api.custody.api-zodia.io/v3/api/ase/staking/eth/validators', 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/eth/validators",
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([
'walletIds' => [
'<string>'
],
'paginationLimit' => 10,
'paginationOffset' => 0,
'validatorAddresses' => [
'<string>'
],
'types' => [
],
'statuses' => [
],
'providers' => [
],
'withdrawalWallets' => [
'<string>'
],
'feeRecipientWallets' => [
'<string>'
],
'balances' => [
'<string>'
],
'pendingDeposits' => [
'<string>'
],
'sort' => [
'by' => 'id'
]
]),
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/eth/validators"
payload := strings.NewReader("{\n \"walletIds\": [\n \"<string>\"\n ],\n \"paginationLimit\": 10,\n \"paginationOffset\": 0,\n \"validatorAddresses\": [\n \"<string>\"\n ],\n \"types\": [],\n \"statuses\": [],\n \"providers\": [],\n \"withdrawalWallets\": [\n \"<string>\"\n ],\n \"feeRecipientWallets\": [\n \"<string>\"\n ],\n \"balances\": [\n \"<string>\"\n ],\n \"pendingDeposits\": [\n \"<string>\"\n ],\n \"sort\": {\n \"by\": \"id\"\n }\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/eth/validators")
.header("submitter-id", "<submitter-id>")
.header("Content-Type", "application/json")
.body("{\n \"walletIds\": [\n \"<string>\"\n ],\n \"paginationLimit\": 10,\n \"paginationOffset\": 0,\n \"validatorAddresses\": [\n \"<string>\"\n ],\n \"types\": [],\n \"statuses\": [],\n \"providers\": [],\n \"withdrawalWallets\": [\n \"<string>\"\n ],\n \"feeRecipientWallets\": [\n \"<string>\"\n ],\n \"balances\": [\n \"<string>\"\n ],\n \"pendingDeposits\": [\n \"<string>\"\n ],\n \"sort\": {\n \"by\": \"id\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.custody.api-zodia.io/v3/api/ase/staking/eth/validators")
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 \"walletIds\": [\n \"<string>\"\n ],\n \"paginationLimit\": 10,\n \"paginationOffset\": 0,\n \"validatorAddresses\": [\n \"<string>\"\n ],\n \"types\": [],\n \"statuses\": [],\n \"providers\": [],\n \"withdrawalWallets\": [\n \"<string>\"\n ],\n \"feeRecipientWallets\": [\n \"<string>\"\n ],\n \"balances\": [\n \"<string>\"\n ],\n \"pendingDeposits\": [\n \"<string>\"\n ],\n \"sort\": {\n \"by\": \"id\"\n }\n}"
response = http.request(request)
puts response.read_body{
"total": 123,
"items": [
{
"validatorAddress": "<string>",
"type": "0x01",
"status": "PENDING_INITIALIZED",
"balance": {
"amount": "<string>",
"amountUnit": "<string>",
"fiatValue": "<string>",
"fiatCurrency": "USD"
},
"pendingDeposit": {
"amount": "<string>",
"amountUnit": "<string>",
"fiatValue": "<string>",
"fiatCurrency": "USD"
},
"withdrawalWallet": "<string>",
"feeRecipientWallet": "<string>",
"provider": "BITWISE_ON_CHAIN"
}
]
}{
"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
"api-maker@zodia.io"
Body
Wallets to search validators for. Wallets in this list that are not owned by the calling company are silently excluded from the results, rather than returning an error.
0 <= x <= 100x >= 0ETH validator type. 0x01 is a Regular Payout validator (fixed 32 ETH, consensus rewards automatically swept to the withdrawal wallet). 0x02 is an Auto-Compounding validator (32-2048 ETH, Pectra, consensus rewards compound into the validator balance until the cap is reached).
0x01, 0x02 Status of the validator. EXIT_BROADCAST signals that an unstake instruction has been broadcast and beacon-chain confirmation is pending.
PENDING_INITIALIZED, PENDING_QUEUED, DEPOSITED, ACTIVE_ONGOING, EXIT_BROADCAST, ACTIVE_EXITING, ACTIVE_SLASHED, EXITED_SLASHED, EXITED_UNSLASHED, WITHDRAWAL_POSSIBLE, WITHDRAWAL_DONE, CONSOLIDATION_INITIATED, CONSOLIDATION_IN_PROGRESS, CONSOLIDATED Staking provider used for the validator
BITWISE_ON_CHAIN, TWINSTAKE, BLOCKDAEMON, FIGMENT, GALAXY, PIERTWO Filter by withdrawal wallet ID
Filter by fee recipient wallet ID
Filter by validator balance, exact match, in wei
Filter by pending deposit amount, exact match, in wei
Allowed values for by: validatorAddress, type, status, provider, balance, pendingDeposit
Show child attributes
Show child attributes