Get Effectiveness Aggregation
curl --request GET \
--url https://api.rated.network/v0/eth/validators/effectiveness \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.rated.network/v0/eth/validators/effectiveness"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.rated.network/v0/eth/validators/effectiveness', 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.rated.network/v0/eth/validators/effectiveness",
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://api.rated.network/v0/eth/validators/effectiveness"
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://api.rated.network/v0/eth/validators/effectiveness")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.rated.network/v0/eth/validators/effectiveness")
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{
"data": [
{
"attesterEffectiveness": 98.46868397067385,
"avgCorrectness": 0.9951851851851852,
"avgInclusionDelay": 1.0107407407407407,
"day": 803,
"earnings": 35804991,
"endDay": 792,
"endEpoch": 178200,
"estimatedPenalties": -22921,
"estimatedRewards": 35849013,
"executionProposedEmptyCount": 0,
"proposedCount": 0,
"proposerDutiesCount": 0,
"slashesCollected": 0,
"slashesReceived": 0,
"startDay": 803,
"startEpoch": 180899,
"sumAllRewards": 35804991,
"sumAttestationRewards": 35849013,
"sumBaselineMev": 0,
"sumConsensusBlockRewards": 0,
"sumCorrectHead": 2665,
"sumCorrectSource": 2699,
"sumCorrectTarget": 2697,
"sumExternallySourcedExecutionRewards": 0,
"sumInclusionDelay": 2729,
"sumLateSourcePenalties": -3486,
"sumLateSourceVotes": 1,
"sumLateTargetPenalties": 0,
"sumLateTargetVotes": 0,
"sumMissedAttestationPenalties": 0,
"sumMissedAttestationRewards": 137813,
"sumMissedAttestations": 0,
"sumMissedConsensusBlockRewards": 0,
"sumMissedExecutionRewards": 0,
"sumMissedSyncCommitteeRewards": 0,
"sumPriorityFees": 0,
"sumSyncCommitteePenalties": 0,
"sumWrongHeadPenalties": 0,
"sumWrongHeadVotes": 21,
"sumWrongTargetPenalties": -19435,
"sumWrongTargetVotes": 3,
"syncSignatureCount": 0,
"totalAttestationAssignments": 2700,
"totalAttestations": 2919,
"totalUniqueAttestations": 2700,
"uptime": 1,
"validatorEffectiveness": 98.46868397067385
}
],
"next": "/v0/eth/validators/effectiveness?indices=100&indices=101&groupBy=timeWindow&granularity=month&size=1&from=791&filterType=day",
"page": {
"filterType": "day",
"granularity": "month",
"size": 1
},
"total": 27
}{
"detail": [
{
"msg": "<string>",
"type": "<string>",
"loc": [
"<string>"
]
}
]
}Validators
Aggregating validator indices
GET
/
v0
/
eth
/
validators
/
effectiveness
Get Effectiveness Aggregation
curl --request GET \
--url https://api.rated.network/v0/eth/validators/effectiveness \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.rated.network/v0/eth/validators/effectiveness"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.rated.network/v0/eth/validators/effectiveness', 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.rated.network/v0/eth/validators/effectiveness",
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://api.rated.network/v0/eth/validators/effectiveness"
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://api.rated.network/v0/eth/validators/effectiveness")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.rated.network/v0/eth/validators/effectiveness")
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{
"data": [
{
"attesterEffectiveness": 98.46868397067385,
"avgCorrectness": 0.9951851851851852,
"avgInclusionDelay": 1.0107407407407407,
"day": 803,
"earnings": 35804991,
"endDay": 792,
"endEpoch": 178200,
"estimatedPenalties": -22921,
"estimatedRewards": 35849013,
"executionProposedEmptyCount": 0,
"proposedCount": 0,
"proposerDutiesCount": 0,
"slashesCollected": 0,
"slashesReceived": 0,
"startDay": 803,
"startEpoch": 180899,
"sumAllRewards": 35804991,
"sumAttestationRewards": 35849013,
"sumBaselineMev": 0,
"sumConsensusBlockRewards": 0,
"sumCorrectHead": 2665,
"sumCorrectSource": 2699,
"sumCorrectTarget": 2697,
"sumExternallySourcedExecutionRewards": 0,
"sumInclusionDelay": 2729,
"sumLateSourcePenalties": -3486,
"sumLateSourceVotes": 1,
"sumLateTargetPenalties": 0,
"sumLateTargetVotes": 0,
"sumMissedAttestationPenalties": 0,
"sumMissedAttestationRewards": 137813,
"sumMissedAttestations": 0,
"sumMissedConsensusBlockRewards": 0,
"sumMissedExecutionRewards": 0,
"sumMissedSyncCommitteeRewards": 0,
"sumPriorityFees": 0,
"sumSyncCommitteePenalties": 0,
"sumWrongHeadPenalties": 0,
"sumWrongHeadVotes": 21,
"sumWrongTargetPenalties": -19435,
"sumWrongTargetVotes": 3,
"syncSignatureCount": 0,
"totalAttestationAssignments": 2700,
"totalAttestations": 2919,
"totalUniqueAttestations": 2700,
"uptime": 1,
"validatorEffectiveness": 98.46868397067385
}
],
"next": "/v0/eth/validators/effectiveness?indices=100&indices=101&groupBy=timeWindow&granularity=month&size=1&from=791&filterType=day",
"page": {
"filterType": "day",
"granularity": "month",
"size": 1
},
"total": 27
}{
"detail": [
{
"msg": "<string>",
"type": "<string>",
"loc": [
"<string>"
]
}
]
}The Rated API enables the aggregation of all the metrics that live under effectiveness across an arbitrary number of validator indices or pubkeys, at the endpoint level.
Here’s how to interpret the inputs required to operate it 👇
| Parameter | Context |
|---|---|
filterType | day and datetime |
from | Start day (integer) or datetime (e.g. from=“2022-12-01”) |
to | End day (integer) or datetime (e.g. from=“2022-12-01”) |
granularity | The size of time increments you are looking to query. Can be day / week / month / quarter / year |
size | The number of results included per page |
groupBy | Time window or validator; we either group by validator index or across time |
include | A list of field names. Use it to filter the specific fields you want in the response payload |
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Headers
Available options:
mainnet, hoodi, holesky Query Parameters
Required range:
x >= 0Required range:
x >= 0Required range:
x >= 0Available options:
hour, day, datetime Required range:
x >= 0Available options:
day, week, month, quarter, year, all Available options:
timeWindow, validator ⌘I