Validators

Querying into individual validator IDs

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

Single validator effectiveness

Validator Performance

GET/v0/solana/validators/{validator_id}/performance
Path parameters
validator_id*Validator Id
Query parameters
Response

Successful Response

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

This endpoint returns all the useful information you need on the historical performance of a single validator. This includes voting effectiveness, proposer effectiveness, missed blocks (i.e. skip rate), etc. For a glossary of the variables returned, see validators.

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

ParameterContext

from

Starting UTC date (e.g. from=“2024-04-22”), or a slot multiple of 3,000 (approximately 20 minutes)

granularity

The size of time increments you are looking to query. Can be dayor 3k(3,000 slots or approximately 20 minutes).

size

The number of results included per page

Single validator rewards

Validator Rewards

GET/v0/solana/validators/{validator_id}/rewards
Path parameters
validator_id*Validator Id
Query parameters
Response

Successful Response

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

This endpoint returns all the useful information you need on the historical rewards of a single validator (e.g. voting rewards, block proposals, MEV). For a glossary of the variables returned, see validators.

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

ParameterContext

from

Starting UTC date (e.g. from=“2024-04-22”), or a slot multiple of 3,000 (approximately 20 minutes)

granularity

The size of time increments you are looking to query. Can be dayor 3k(3,000 slots or approximately 20 minutes).

size

The number of results included per page

Single validator voting latency

Validator Latency

GET/v0/solana/validators/{validator_id}/performance/latency
Path parameters
validator_id*Validator Id
Query parameters
Response

Successful Response

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

This endpoint returns information related to a single validator's voting latency (i.e. voting timeliness). For a glossary of the variables returned, see validators.

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

ParameterContext

from

Starting slot to get the vote latency from

size

The number of results included per page.

This is based on slots. For example, to return the voting latency in the last 200 slots, you will need to input size = 200.

Single validator summary

Validator Summary

GET/v0/solana/validators/{validator_id}/summary
Path parameters
validator_id*Validator Id
Query parameters
Response

Successful Response

Body
validatorIdentity*Validatoridentity
voteAccount*Voteaccount
timeWindow*TimeWindow

An enumeration.

1d7d30dall
name*Name
validatorApy*Validatorapy
delegatorApy*Delegatorapy
voteCommissionRate*Votecommissionrate
mevCommissionRateMevcommissionrate
totalStake*Totalstake
networkPenetration*Networkpenetration
effectivenessEffectiveness
stakeAccountCountStakeaccountcount
voteLatencyVotelatency
Request
const response = await fetch('/v0/solana/validators/{validator_id}/summary', {
    method: 'GET',
    headers: {},
});
const data = await response.json();
Response
{
  "validatorIdentity": "validatorIdentity",
  "voteAccount": "voteAccount",
  "timeWindow": "30d",
  "validatorName": "validatorName",
  "name": "name",
  "validatorApy": 0.05,
  "delegatorApy": 0.05,
  "voteCommissionRate": 0.05,
  "mevCommissionRate": 0.05,
  "networkPenetration": 0.24,
  "effectiveness": 0.984,
  "stakeAccountCount": 100,
  "voteLatency": 2.984
}

This endpoint returns high level information about a validator over the time period such as its entity name, network penetration, annual percentage yield (APY), and effectiveness.

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 validator summaries

Validator Summaries

GET/v0/solana/validators
Query parameters
Response

Successful Response

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

Similar to the Single validator summary but returns the summary stats for all validators.

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 validator'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).

Validator metadata

Validator Metadata

GET/v0/solana/validators/{validator_id}
Path parameters
validator_id*Validator Id
Response

Successful Response

Body
validatorIdentityValidatoridentity
voteAccount*Voteaccount
validatorNameValidatorname
descriptionDescription
keybaseUsernameKeybaseusername
urlUrl
cityCity
countryCountry
hostingProviderHostingprovider
clientClient
Request
const response = await fetch('/v0/solana/validators/{validator_id}', {
    method: 'GET',
    headers: {},
});
const data = await response.json();
Response
{
  "validatorIdentity": "validatorIdentityABC123",
  "voteAccount": "voteAccountABC123",
  "validatorName": "Mike's Validator",
  "description": "<p>world's best validator</p>",
  "keybaseUsername": "someusername",
  "url": "https://validator.url",
  "city": "London",
  "country": "GB",
  "hostingProvider": "Amazon",
  "client": "solana-jito",
  "__$markdownParsed": true
}

This endpoints returns information about a validator such as their name, location, client, etc.

Last updated