curl --request POST \
--url https://beaconcha.in/api/v2/ethereum/slot \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"slot": {
"view": "latest"
},
"chain": "mainnet"
}
'import requests
url = "https://beaconcha.in/api/v2/ethereum/slot"
payload = {
"slot": { "view": "latest" },
"chain": "mainnet"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({slot: {view: 'latest'}, chain: 'mainnet'})
};
fetch('https://beaconcha.in/api/v2/ethereum/slot', 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/v2/ethereum/slot",
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([
'slot' => [
'view' => 'latest'
],
'chain' => 'mainnet'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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://beaconcha.in/api/v2/ethereum/slot"
payload := strings.NewReader("{\n \"slot\": {\n \"view\": \"latest\"\n },\n \"chain\": \"mainnet\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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://beaconcha.in/api/v2/ethereum/slot")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"slot\": {\n \"view\": \"latest\"\n },\n \"chain\": \"mainnet\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://beaconcha.in/api/v2/ethereum/slot")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"slot\": {\n \"view\": \"latest\"\n },\n \"chain\": \"mainnet\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"slot": 1,
"epoch": 1,
"timestamp": 1,
"sync_committee_period": 1,
"execution_reference": {
"block": 1,
"hash": "<string>"
},
"proposer": {
"index": 1,
"public_key": "<string>"
},
"block_root": "<string>",
"parent_root": "<string>",
"state_root": "<string>",
"graffiti": "<string>",
"randao_reveal": "<string>",
"signature": "<string>",
"sync_participation": {
"successful": 1,
"assigned": 1,
"missed": 1,
"missed_including_missed_slots": 1,
"scheduled": 1
},
"attestation_participation": {
"successful": 1,
"assigned": 1,
"missed": 1
},
"queue_events": {
"queued": {
"deposit": {
"count": 1,
"amount": "<string>"
},
"withdrawal_manual": {
"count": 1,
"amount": "<string>"
},
"consolidation": {
"count": 1,
"amount": "<string>"
}
},
"processed": {
"deposit": {
"count": 1,
"amount": "<string>"
},
"withdrawal_sweep": {
"count": 1,
"amount": "<string>"
},
"withdrawal_manual": {
"count": 1,
"amount": "<string>"
},
"consolidation": {
"count": 1,
"amount": "<string>"
},
"voluntary_exit_count": 1
}
},
"bls_credential_changes_count": 123,
"included_slashing_count": {
"proposer": 1,
"attestation": 1
},
"included_blob_commitment_count": 123
}
}{
"error": "Bad request. Please check your input and try again."
}{
"error": "Unauthorized. Please provide a valid API key."
}{
"error": "endpoint not allowed for your subscription tier. upgrade your subscription at https://beaconcha.in/pricing."
}{
"error": "The requested resource was not found."
}{
"error": "method not allowed: GET. all public API endpoints use POST."
}{
"error": "Rate limit exceeded. Please try again later."
}{
"error": "internal server error. please try again later."
}{
"error": "An unexpected error occurred."
}Slot
Returns detailed information about a specific consensus layer slot.
In Ethereum, “slots” are data containers on the consensus layer where validator duties are scheduled and blocks may be proposed. Each slot may reference a block, but a slot can also be missed.
This endpoint provides an overview of the requested slot, including its status (proposed, missed, scheduled), assigned proposer, participation metrics, protocol events (deposits, withdrawals, slashings), and other relevant details.
You can query by slot number, block root hash, or use “latest” / “finalized” for the most recent or finalized slot.
curl --request POST \
--url https://beaconcha.in/api/v2/ethereum/slot \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"slot": {
"view": "latest"
},
"chain": "mainnet"
}
'import requests
url = "https://beaconcha.in/api/v2/ethereum/slot"
payload = {
"slot": { "view": "latest" },
"chain": "mainnet"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({slot: {view: 'latest'}, chain: 'mainnet'})
};
fetch('https://beaconcha.in/api/v2/ethereum/slot', 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/v2/ethereum/slot",
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([
'slot' => [
'view' => 'latest'
],
'chain' => 'mainnet'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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://beaconcha.in/api/v2/ethereum/slot"
payload := strings.NewReader("{\n \"slot\": {\n \"view\": \"latest\"\n },\n \"chain\": \"mainnet\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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://beaconcha.in/api/v2/ethereum/slot")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"slot\": {\n \"view\": \"latest\"\n },\n \"chain\": \"mainnet\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://beaconcha.in/api/v2/ethereum/slot")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"slot\": {\n \"view\": \"latest\"\n },\n \"chain\": \"mainnet\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"slot": 1,
"epoch": 1,
"timestamp": 1,
"sync_committee_period": 1,
"execution_reference": {
"block": 1,
"hash": "<string>"
},
"proposer": {
"index": 1,
"public_key": "<string>"
},
"block_root": "<string>",
"parent_root": "<string>",
"state_root": "<string>",
"graffiti": "<string>",
"randao_reveal": "<string>",
"signature": "<string>",
"sync_participation": {
"successful": 1,
"assigned": 1,
"missed": 1,
"missed_including_missed_slots": 1,
"scheduled": 1
},
"attestation_participation": {
"successful": 1,
"assigned": 1,
"missed": 1
},
"queue_events": {
"queued": {
"deposit": {
"count": 1,
"amount": "<string>"
},
"withdrawal_manual": {
"count": 1,
"amount": "<string>"
},
"consolidation": {
"count": 1,
"amount": "<string>"
}
},
"processed": {
"deposit": {
"count": 1,
"amount": "<string>"
},
"withdrawal_sweep": {
"count": 1,
"amount": "<string>"
},
"withdrawal_manual": {
"count": 1,
"amount": "<string>"
},
"consolidation": {
"count": 1,
"amount": "<string>"
},
"voluntary_exit_count": 1
}
},
"bls_credential_changes_count": 123,
"included_slashing_count": {
"proposer": 1,
"attestation": 1
},
"included_blob_commitment_count": 123
}
}{
"error": "Bad request. Please check your input and try again."
}{
"error": "Unauthorized. Please provide a valid API key."
}{
"error": "endpoint not allowed for your subscription tier. upgrade your subscription at https://beaconcha.in/pricing."
}{
"error": "The requested resource was not found."
}{
"error": "method not allowed: GET. all public API endpoints use POST."
}{
"error": "Rate limit exceeded. Please try again later."
}{
"error": "internal server error. please try again later."
}{
"error": "An unexpected error occurred."
}Authorizations
Body
Response
Successful response.
Response containing basic information about the slot.
Overview statistics for a specific slot on the consensus layer.
Note that a missed slot will be returned with minimal data (only slot number, epoch, timestamp, sync_committee_period and status).
Show child attributes
Show child attributes
Was this page helpful?

