Epoch slots
curl --request GET \
--url 'https://beaconcha.in/api/v1/epoch/{epoch}/slots?apikey='import requests
url = "https://beaconcha.in/api/v1/epoch/{epoch}/slots?apikey="
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://beaconcha.in/api/v1/epoch/{epoch}/slots?apikey=', 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://beaconcha.in/api/v1/epoch/{epoch}/slots?apikey=",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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://beaconcha.in/api/v1/epoch/{epoch}/slots?apikey="
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://beaconcha.in/api/v1/epoch/{epoch}/slots?apikey=")
.asString();require 'uri'
require 'net/http'
url = URI("https://beaconcha.in/api/v1/epoch/{epoch}/slots?apikey=")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"status": "OK",
"data": [
{
"attestationscount": 8,
"attesterslashingscount": 0,
"blockroot": "0xeb64c069b979ef8eed41993ec0563f1ed0e935b95fcbe9ed26de4c904c94aeb3",
"depositscount": 10,
"epoch": 398479,
"eth1data_blockhash": "0xeb64c069b979ef8eed41993ec0563f1ed0e935b95fcbe9ed26de4c904c94aeb3",
"eth1data_depositcount": 2045305,
"eth1data_depositroot": "0x2ebc563cabdbbacbc56f0de1d2d1c2d5315a4b071fcd8566aabbf0a45161c64e",
"exec_base_fee_per_gas": 680634007,
"exec_block_hash": "0x1f97b8eb2444d4fcdfd8dade8a9f8630860acca3ce694f800881fab642eace6c",
"exec_block_number": 23525866,
"exec_extra_data": "0x546974616e2028746974616e6275696c6465722e78797a29",
"exec_fee_recipient": "0x4838b106fce9647bdf1e7877bf73ce8b0bad5f97",
"exec_gas_limit": 23525866,
"exec_gas_used": 23525866,
"exec_logs_bloom": "0x54a8a16a45119f9fd52558acccb035c9154b9b509664b87dcfdd129d7499b0a1249dd137bfed0146da934b6b47ea75dc77d1c67bac137b0914da37d4686c97ceba768dfa4ed0fcb8ed34d1ab91e99aa164663e32e7fe79386b627cba1e9cde870b71a9eabb4",
"exec_parent_hash": "0x3f9eeb7bbcfa68b70ed5b15fe0476c0cd594a025032ad6522c2f087922393b3e",
"exec_random": "0x2a9ef3da82054fe160d54973c8f7ce9482ff1ef0c09262d9a86e3641d1d52131",
"exec_receipts_root": "0xbc1799c451b10b1689e540333ca2f9dac9a86a9654075a0d141385d6bbb8ceed",
"exec_state_root": "0x8e251e0dd4aaf308b5c899c8f659e6de984aad11f4df85468d6cbf9edfa7ce48",
"exec_timestamp": 1759839959,
"exec_transactions_count": 3,
"graffiti": "0x544b373536390000000000000000000000000000000000000000000000000000",
"graffiti_text": "TK7569",
"parentroot": "0x36ed53a94a32b494b3a26fbbb56c2ce2af9cf657a7c3975da96faf0fba66c2c2",
"proposer": 1098947,
"proposerslashingscount": 0,
"randaoreveal": "0x8add195bc76c9cd723730cd4dae3098663f3e0257a543ed8ca4273471e1983c8c937ee37b95c7c30c5e91bf6a19b81a60f11bbb41014e45674e57566dba923b6c26b17911f811af04b28dce9020bb54b6f8de38bb63b8a0f9c4902357700e85b",
"signature": "0xab6b6d826c14b6141e3406c5227ead15b133993195e96edc05fdeba998d0e0fd96e4ec5f47f6c9eec1558a59042c03d1016e679faf7300bc14737c7178c5cc01b2ea5f345e13cc2e29eeeefaf18cdcde6c0a99d80923ecf8ff8619a4d2511f6e",
"slot": 12751457,
"stateroot": "0xb4373fdde2b7e43692937e6982a853b747ae3ec2ec4721bee538f4770229415d",
"status": "1",
"syncaggregate_bits": "0xaf6d5ffa3fddbdd7a82286f7dd17b87bfdbbbf17733beda97eef74bfffdeff7fdf7dd1effdf0d3ffbf23feb97bf463febfb0edcceef65fea77fdbdcfb50edbf1",
"syncaggregate_participation": 0.990234375,
"syncaggregate_signature": "0xaa7c2f8db87e82ed4e45e0c328918f0f1ca88d6bdc1e20933816b22e3965099d2fcaa6960e76959921c0d6b5b7a73d1203e3bceaf2a23436f9eedc072d924b4270f21c57356ca99813e63b44dd4f363abc49466114b05736ef925d9330f93dd5",
"voluntaryexitscount": 0,
"withdrawalcount": 16
}
]
}{
"status": "ERROR: invalid epoch parameter",
"data": null
}{
"status": "ERROR: internal server error",
"data": null
}Epochs
Epoch slots
Retrieve all slots within a specific epoch, including per-slot block metadata such as proposer, roots, operation counts, sync committee participation, and execution payload details when available. You can specify the epoch by number, or use the keywords latest (most recently processed epoch) or finalized (most recent finalized epoch).
GET
/
api
/
v1
/
epoch
/
{epoch}
/
slots
Epoch slots
curl --request GET \
--url 'https://beaconcha.in/api/v1/epoch/{epoch}/slots?apikey='import requests
url = "https://beaconcha.in/api/v1/epoch/{epoch}/slots?apikey="
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://beaconcha.in/api/v1/epoch/{epoch}/slots?apikey=', 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://beaconcha.in/api/v1/epoch/{epoch}/slots?apikey=",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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://beaconcha.in/api/v1/epoch/{epoch}/slots?apikey="
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://beaconcha.in/api/v1/epoch/{epoch}/slots?apikey=")
.asString();require 'uri'
require 'net/http'
url = URI("https://beaconcha.in/api/v1/epoch/{epoch}/slots?apikey=")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"status": "OK",
"data": [
{
"attestationscount": 8,
"attesterslashingscount": 0,
"blockroot": "0xeb64c069b979ef8eed41993ec0563f1ed0e935b95fcbe9ed26de4c904c94aeb3",
"depositscount": 10,
"epoch": 398479,
"eth1data_blockhash": "0xeb64c069b979ef8eed41993ec0563f1ed0e935b95fcbe9ed26de4c904c94aeb3",
"eth1data_depositcount": 2045305,
"eth1data_depositroot": "0x2ebc563cabdbbacbc56f0de1d2d1c2d5315a4b071fcd8566aabbf0a45161c64e",
"exec_base_fee_per_gas": 680634007,
"exec_block_hash": "0x1f97b8eb2444d4fcdfd8dade8a9f8630860acca3ce694f800881fab642eace6c",
"exec_block_number": 23525866,
"exec_extra_data": "0x546974616e2028746974616e6275696c6465722e78797a29",
"exec_fee_recipient": "0x4838b106fce9647bdf1e7877bf73ce8b0bad5f97",
"exec_gas_limit": 23525866,
"exec_gas_used": 23525866,
"exec_logs_bloom": "0x54a8a16a45119f9fd52558acccb035c9154b9b509664b87dcfdd129d7499b0a1249dd137bfed0146da934b6b47ea75dc77d1c67bac137b0914da37d4686c97ceba768dfa4ed0fcb8ed34d1ab91e99aa164663e32e7fe79386b627cba1e9cde870b71a9eabb4",
"exec_parent_hash": "0x3f9eeb7bbcfa68b70ed5b15fe0476c0cd594a025032ad6522c2f087922393b3e",
"exec_random": "0x2a9ef3da82054fe160d54973c8f7ce9482ff1ef0c09262d9a86e3641d1d52131",
"exec_receipts_root": "0xbc1799c451b10b1689e540333ca2f9dac9a86a9654075a0d141385d6bbb8ceed",
"exec_state_root": "0x8e251e0dd4aaf308b5c899c8f659e6de984aad11f4df85468d6cbf9edfa7ce48",
"exec_timestamp": 1759839959,
"exec_transactions_count": 3,
"graffiti": "0x544b373536390000000000000000000000000000000000000000000000000000",
"graffiti_text": "TK7569",
"parentroot": "0x36ed53a94a32b494b3a26fbbb56c2ce2af9cf657a7c3975da96faf0fba66c2c2",
"proposer": 1098947,
"proposerslashingscount": 0,
"randaoreveal": "0x8add195bc76c9cd723730cd4dae3098663f3e0257a543ed8ca4273471e1983c8c937ee37b95c7c30c5e91bf6a19b81a60f11bbb41014e45674e57566dba923b6c26b17911f811af04b28dce9020bb54b6f8de38bb63b8a0f9c4902357700e85b",
"signature": "0xab6b6d826c14b6141e3406c5227ead15b133993195e96edc05fdeba998d0e0fd96e4ec5f47f6c9eec1558a59042c03d1016e679faf7300bc14737c7178c5cc01b2ea5f345e13cc2e29eeeefaf18cdcde6c0a99d80923ecf8ff8619a4d2511f6e",
"slot": 12751457,
"stateroot": "0xb4373fdde2b7e43692937e6982a853b747ae3ec2ec4721bee538f4770229415d",
"status": "1",
"syncaggregate_bits": "0xaf6d5ffa3fddbdd7a82286f7dd17b87bfdbbbf17733beda97eef74bfffdeff7fdf7dd1effdf0d3ffbf23feb97bf463febfb0edcceef65fea77fdbdcfb50edbf1",
"syncaggregate_participation": 0.990234375,
"syncaggregate_signature": "0xaa7c2f8db87e82ed4e45e0c328918f0f1ca88d6bdc1e20933816b22e3965099d2fcaa6960e76959921c0d6b5b7a73d1203e3bceaf2a23436f9eedc072d924b4270f21c57356ca99813e63b44dd4f363abc49466114b05736ef925d9330f93dd5",
"voluntaryexitscount": 0,
"withdrawalcount": 16
}
]
}{
"status": "ERROR: invalid epoch parameter",
"data": null
}{
"status": "ERROR: internal server error",
"data": null
}Authorizations
ApiKeyAuthQueryApiKeyAuthHeader
Path Parameters
The epoch to fetch. Provide an integer epoch number (>= 0), or one of the keywords latest or finalized.
Special tags for convenience.
Available options:
latest, finalized Example:
"latest"
Response
The epoch was found and all slots for the epoch are returned in the data field as an array. Each item describes one slot.
Was this page helpful?
⌘I

