Delegators

Querying into individual delegators

The following endpoints return all kinds of useful information (e.g. rewards, performance) about a delegator in the requested time-frame.

Delegator rewards

Delegator Stats

GET/v0/solana/delegators/stakeAccounts/{stake_account}/rewards
Path parameters
stake_account*Stake Account
Query parameters
Response

Successful Response

Body
page*Page
total*Total
data*Data
nextNext
Request
const response = await fetch('/v0/solana/delegators/stakeAccounts/{stake_account}/rewards', {
    method: 'GET',
    headers: {},
});
const data = await response.json();
Response
{
  "page": {
    "granularity": "3k"
  },
  "data": [],
  "next": "text"
}

Stake Authority Stats

GET/v0/solana/delegators/stakeAuthorities/{stake_authority}/rewards
Path parameters
stake_authority*Stake Authority
Query parameters
Response

Successful Response

Body
page*Page
total*Total
data*Data
nextNext
Request
const response = await fetch('/v0/solana/delegators/stakeAuthorities/{stake_authority}/rewards', {
    method: 'GET',
    headers: {},
});
const data = await response.json();
Response
{
  "page": {
    "granularity": "3k"
  },
  "data": [],
  "next": "text"
}

These endpoints return information about the rewards received by a delegator (stake account or stake authority), including MEV rewards it has claimed, and commissions it has paid. The data can be broken down at a daily level.

Here's how to interpret the inputs required to operate it 👇

ParameterContext

from

Starting UTC date (e.g. from=“2024-04-22”).

size

The number of results included per page

Single delegator summary

Delegator Summary

GET/v0/solana/delegators/stakeAccounts/{stake_account}/summary
Path parameters
stake_account*Stake Account
Query parameters
Response

Successful Response

Body
stakeAccount*Stakeaccount
stakeAuthorityStakeauthority
withdrawAuthorityWithdrawauthority
timeWindow*TimeWindow

An enumeration.

1d7d30dall
delegatedStakeDelegatedstake
networkPenetrationNetworkpenetration
statusStatus
validatorVoteAccountValidatorvoteaccount
validatorNameValidatorname
validatorEffectivenessValidatoreffectiveness
voteCommissionRateVotecommissionrate
mevCommissionRateMevcommissionrate
sumStakingRewardsSumstakingrewards
sumMevRewardsSummevrewards
sumRewardsSumrewards
sumStakingCommissionPaidSumstakingcommissionpaid
sumMevCommissionPaidSummevcommissionpaid
sumCommissionPaidSumcommissionpaid
stakingRewardsApyStakingrewardsapy
mevRewardsAprMevrewardsapr
delegatorApyDelegatorapy
sumMissedStakingRewardsSummissedstakingrewards
Request
const response = await fetch('/v0/solana/delegators/stakeAccounts/{stake_account}/summary?window=1d', {
    method: 'GET',
    headers: {},
});
const data = await response.json();
Response
{
  "stakeAccount": "123FPQtifVXkooNAhiYiKeoQaL9tD9kkY5mQvGRwnLy2",
  "stakeAuthority": "q9XWcZ7T1wP4bW9SB4XgNNwjnFEJ982nE8aVbbNuwot",
  "withdrawAuthority": "q9XWcZ7T1wP4bW9SB4XgNNwjnFEJ982nE8aVbbNuwot",
  "timeWindow": "1d",
  "delegatedStake": 100000.55,
  "networkPenetration": 0.24,
  "status": "active",
  "validatorVoteAccount": "26pV97Ce83ZQ6Kz9XT4td8tdoUFPTng8Fb8gPyc53dJx",
  "validatorName": "Ledger by Figment",
  "validatorEffectiveness": 0.984,
  "voteCommissionRate": 0.07,
  "mevCommissionRate": 0.07,
  "sumStakingRewards": 0.002,
  "sumMevRewards": 0,
  "sumRewards": 0.002,
  "sumStakingCommissionPaid": 0.0001,
  "sumMevCommissionPaid": 0,
  "sumCommissionPaid": 0.0001,
  "stakingRewardsApy": 0.05,
  "mevRewardsApr": 0,
  "delegatorApy": 0.05,
  "sumMissedStakingRewards": 0
}

Stake Authority Summary

GET/v0/solana/delegators/stakeAuthorities/{stake_authority}/summary
Path parameters
stake_authority*Stake Authority
Query parameters
Response

Successful Response

Body
stakeAuthority*Stakeauthority
poolNamePoolname
timeWindow*TimeWindow

An enumeration.

1d7d30dall
delegatedStakeDelegatedstake
networkPenetrationNetworkpenetration
validatorDelegates*Validatordelegates
delegations*Delegations
aggregateValidatorEffectivenessAggregatevalidatoreffectiveness
blendedVoteCommissionRateBlendedvotecommissionrate
blendedMevCommissionRateBlendedmevcommissionrate
sumStakingRewardsSumstakingrewards
sumMevRewardsSummevrewards
sumRewardsSumrewards
sumStakingCommissionPaidSumstakingcommissionpaid
sumMevCommissionPaidSummevcommissionpaid
sumCommissionPaidSumcommissionpaid
stakingRewardsApy*Stakingrewardsapy
mevRewardsApr*Mevrewardsapr
delegatorApy*Delegatorapy
sumMissedStakingRewards*Summissedstakingrewards
Request
const response = await fetch('/v0/solana/delegators/stakeAuthorities/{stake_authority}/summary?window=1d', {
    method: 'GET',
    headers: {},
});
const data = await response.json();
Response
{
  "stakeAuthority": "123FPQtifVXkooNAhiYiKeoQaL9tD9kkY5mQvGRwnLy2",
  "timeWindow": "1d",
  "delegatedStake": 100000.55,
  "networkPenetration": 0.24,
  "validatorDelegates": 2,
  "delegations": [
    {
      "validatorVoteAccount": "26pV97Ce83ZQ6Kz9XT4td8tdoUFPTng8Fb8gPyc53dJx",
      "validatorName": "Ledger by Figment",
      "percentage": 0.8
    },
    {
      "validatorVoteAccount": "34yvUa2fxfm2tUqxFEj9PHrVNwCcdzd51eo9hntWpZRs",
      "validatorName": "Aurora Validator",
      "percentage": 0.2
    }
  ],
  "aggregateValidatorEffectiveness": 0.984,
  "blendedVoteCommissionRate": 0.07,
  "blendedMevCommissionRate": 0.07,
  "sumStakingRewards": 0.002,
  "sumMevRewards": 0,
  "sumRewards": 0.002,
  "sumStakingCommissionPaid": 0.0001,
  "sumMevCommissionPaid": 0,
  "sumCommissionPaid": 0.0001,
  "stakingRewardsApy": 0.05,
  "mevRewardsApr": 0,
  "delegatorApy": 0.05,
  "sumMissedStakingRewards": 0
}

These endpoints return high level information about a delegator over the time period such as their network penetration, rewards, annual percentage yield (APY), paid commissions, and the effectiveness of their validator delegate/s.

Here's how to interpret the inputs required to operate it 👇

ParameterContext

window

Window of the aggregation, with 1d, 7d, 30d and all being the supported values

On the 1d time period, the APY takes into account the rewards received for the last 3 days to smooth out the noise given Solana's staking rewards schedule, which is every epoch (~2 days).

Multiple delegator summary

Delegator Summaries

GET/v0/solana/delegators/stakeAccounts
Query parameters
Response

Successful Response

Body
page*Page
total*Total
data*Data
nextNext
Request
const response = await fetch('/v0/solana/delegators/stakeAccounts?window=1d', {
    method: 'GET',
    headers: {},
});
const data = await response.json();
Response
{
  "page": {
    "granularity": "3k"
  },
  "data": [],
  "next": "text"
}

Stake Authority Summaries

GET/v0/solana/delegators/stakeAuthorities
Query parameters
Response

Successful Response

Body
page*Page
total*Total
data*Data
nextNext
Request
const response = await fetch('/v0/solana/delegators/stakeAuthorities?window=1d', {
    method: 'GET',
    headers: {},
});
const data = await response.json();
Response
{
  "page": {
    "granularity": "3k"
  },
  "data": [],
  "next": "text"
}

Similar to the Single delegator summary but returns the summary stats for all stake accounts or stake authorities.

Here's how to interpret the inputs required to operate it 👇

ParameterContext

window

Window of the aggregation, with 1d, 7d, 30d and all being the supported values

from

From a specific delegator's ranking based on their order in terms of network_penetration

size

The number of results included per page

On the 1d time period, the APY takes into account the rewards received for the last 3 days to smooth out the noise given Solana's staking rewards schedule, which is every epoch (~2 days).

Staking pool metadata

This endpoint returns information about staking pools such as the stake pool's address, stake authority, and fees such as staking, withdrawal, and rewards. These pools are linked to their stake authority addresses.

Stake Authority Pool Metadata

GET/v0/solana/delegators/stakeAuthorities/{stake_authority}/poolMetadata
Path parameters
stake_authority*Stake Authority
Response

Successful Response

Body
stakePoolName*Stakepoolname
stakePoolAddress*Stakepooladdress
stakeAuthority*Stakeauthority
stakePoolManager*Stakepoolmanager
stakePoolStaker*Stakepoolstaker
stakePoolMint*Stakepoolmint
reserveStake*Reservestake
managerFeeAccount*Managerfeeaccount
rewardsFee*Rewardsfee
solDepositFee*Soldepositfee
solWithdrawalFee*Solwithdrawalfee
stakeDepositFee*Stakedepositfee
stakeWithdrawalFee*Stakewithdrawalfee
Request
const response = await fetch('/v0/solana/delegators/stakeAuthorities/{stake_authority}/poolMetadata', {
    method: 'GET',
    headers: {},
});
const data = await response.json();
Response
{
  "stakePoolName": "Jito Stake Pool",
  "stakePoolAddress": "Jito4APyf642JPZPx3hGc6WWJ8zPKtRbRs4P815Awbb",
  "stakeAuthority": "6iQKfEyhr3bZMotVkW6beNZz5CPAkiwvgV2CTje9pVSS",
  "stakePoolManager": "Manager5eosrve6LktMZgVNszYzebgmmC7BjLK8NoWyRQ",
  "stakePoolStaker": "tcmGTFStakerstakeDoZc18jqTqV6FawdHmncMvtRBYw7XrBNjGB5n7",
  "stakePoolMint": "J1toso1uCk3RLmjorhTtrVwY9HJ7X8V9yYac6Y7kGCPn",
  "reserveStake": "BgKUXdS29YcHCFrPm5M8oLHiTzZaMDjsebggjoaQ6KFL",
  "managerFeeAccount": "feeeFLLsam6xZJFc6UQFrHqkvVt4jfmVvi2BRLkUZ4i",
  "rewardsFee": 0.04,
  "solDepositFee": 0,
  "solWithdrawalFee": 0.001,
  "stakeDepositFee": 0,
  "stakeWithdrawalFee": 0.001
}

Last updated