Sync Committee Periods
curl --request POST \
--url https://beaconcha.in/api/v2/ethereum/sync-committee \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"sync_committee_period": {
"view": "latest"
},
"chain": "mainnet"
}
'import requests
url = "https://beaconcha.in/api/v2/ethereum/sync-committee"
payload = {
"sync_committee_period": { "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({sync_committee_period: {view: 'latest'}, chain: 'mainnet'})
};
fetch('https://beaconcha.in/api/v2/ethereum/sync-committee', 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/sync-committee",
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([
'sync_committee_period' => [
'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/sync-committee"
payload := strings.NewReader("{\n \"sync_committee_period\": {\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/sync-committee")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"sync_committee_period\": {\n \"view\": \"latest\"\n },\n \"chain\": \"mainnet\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://beaconcha.in/api/v2/ethereum/sync-committee")
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 \"sync_committee_period\": {\n \"view\": \"latest\"\n },\n \"chain\": \"mainnet\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"period": 1
},
"range": {
"slot": {
"start": 1,
"end": 1
},
"epoch": {
"start": 1,
"end": 1
},
"timestamp": {
"start": 1,
"end": 1
}
}
}{
"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."
}Sync Committee
Sync Committee Periods
Returns basic sync committee information for a particular sync period. Use this to determine the range of epochs a given sync period entails.
You can combine this endpoint with:
- Validators in sync committee period:
v2/ethereum/sync-committee/validators
POST
/
api
/
v2
/
ethereum
/
sync-committee
Sync Committee Periods
curl --request POST \
--url https://beaconcha.in/api/v2/ethereum/sync-committee \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"sync_committee_period": {
"view": "latest"
},
"chain": "mainnet"
}
'import requests
url = "https://beaconcha.in/api/v2/ethereum/sync-committee"
payload = {
"sync_committee_period": { "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({sync_committee_period: {view: 'latest'}, chain: 'mainnet'})
};
fetch('https://beaconcha.in/api/v2/ethereum/sync-committee', 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/sync-committee",
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([
'sync_committee_period' => [
'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/sync-committee"
payload := strings.NewReader("{\n \"sync_committee_period\": {\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/sync-committee")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"sync_committee_period\": {\n \"view\": \"latest\"\n },\n \"chain\": \"mainnet\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://beaconcha.in/api/v2/ethereum/sync-committee")
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 \"sync_committee_period\": {\n \"view\": \"latest\"\n },\n \"chain\": \"mainnet\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"period": 1
},
"range": {
"slot": {
"start": 1,
"end": 1
},
"epoch": {
"start": 1,
"end": 1
},
"timestamp": {
"start": 1,
"end": 1
}
}
}{
"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
application/json
Response
Successful response.
Response containing basic information about the sync committee.
Show child attributes
Show child attributes
The time span actually covered by the returned results — from the first to the last matching data point — specified in slots, epochs, and Unix timestamps.
This reflects the data that was found, not the range that was queried. When no data is found, it falls back to the requested range, or to the full available history if no range was given.
Show child attributes
Show child attributes
Was this page helpful?
⌘I

