curl --request POST \
--url https://beaconcha.in/api/v2/ethereum/block \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"block": {
"view": "latest"
},
"chain": "mainnet"
}
'import requests
url = "https://beaconcha.in/api/v2/ethereum/block"
payload = {
"block": { "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({block: {view: 'latest'}, chain: 'mainnet'})
};
fetch('https://beaconcha.in/api/v2/ethereum/block', 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/block",
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([
'block' => [
'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/block"
payload := strings.NewReader("{\n \"block\": {\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/block")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"block\": {\n \"view\": \"latest\"\n },\n \"chain\": \"mainnet\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://beaconcha.in/api/v2/ethereum/block")
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 \"block\": {\n \"view\": \"latest\"\n },\n \"chain\": \"mainnet\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"block": 1,
"timestamp": 1,
"hash": "<string>",
"parent_hash": "<string>",
"receipts_root": "<string>",
"state_root": "<string>",
"transaction": {
"gas": {
"used": 123,
"limit": 123,
"base_fee": "<string>",
"fees_burned": "<string>"
},
"count": {
"normal": 123,
"internal": 123,
"blob": 123
}
},
"extra_data": "<string>",
"consensus_reference": {
"slot": 1,
"epoch": 1,
"block_root": "<string>"
},
"blob": {
"gas": {
"used": 123,
"excess": 123
}
},
"mining": {
"miner": {
"address": "<string>",
"is_contract": true
},
"difficulty": "<string>",
"mix_hash": "<string>",
"uncles_sha3": "<string>",
"uncles_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."
}Block
Provides comprehensive details about a specific execution layer block, excluding rewards. For reward details, refer to v2/ethereum/block/rewards.
Execution layer blocks contain transactions and state changes, while consensus layer slots manage validator duties and finality. Since the Merge (Proof-of-Stake transition), each execution layer block corresponds to a consensus layer slot, though their numbers differ.
This endpoint delivers an overview of the requested block, including its slot reference (if applicable), block hash, timestamp, gas usage, transaction counts, and other key metrics. For pre-Merge blocks, consensus layer references will be null.
Query options include block number or keywords like “latest” and “finalized” for the most recent or finalized block.
curl --request POST \
--url https://beaconcha.in/api/v2/ethereum/block \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"block": {
"view": "latest"
},
"chain": "mainnet"
}
'import requests
url = "https://beaconcha.in/api/v2/ethereum/block"
payload = {
"block": { "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({block: {view: 'latest'}, chain: 'mainnet'})
};
fetch('https://beaconcha.in/api/v2/ethereum/block', 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/block",
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([
'block' => [
'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/block"
payload := strings.NewReader("{\n \"block\": {\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/block")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"block\": {\n \"view\": \"latest\"\n },\n \"chain\": \"mainnet\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://beaconcha.in/api/v2/ethereum/block")
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 \"block\": {\n \"view\": \"latest\"\n },\n \"chain\": \"mainnet\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"block": 1,
"timestamp": 1,
"hash": "<string>",
"parent_hash": "<string>",
"receipts_root": "<string>",
"state_root": "<string>",
"transaction": {
"gas": {
"used": 123,
"limit": 123,
"base_fee": "<string>",
"fees_burned": "<string>"
},
"count": {
"normal": 123,
"internal": 123,
"blob": 123
}
},
"extra_data": "<string>",
"consensus_reference": {
"slot": 1,
"epoch": 1,
"block_root": "<string>"
},
"blob": {
"gas": {
"used": 123,
"excess": 123
}
},
"mining": {
"miner": {
"address": "<string>",
"is_contract": true
},
"difficulty": "<string>",
"mix_hash": "<string>",
"uncles_sha3": "<string>",
"uncles_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 block.
Show child attributes
Show child attributes
Was this page helpful?

