getSlotLeaders
curl --request POST \
--url https://solana-mainnet.core.chainstack.com/2ef4e47bc937d6b758f7c582e8e82a1e \
--header 'Content-Type: application/json' \
--data '
{
"id": 1,
"jsonrpc": "2.0",
"method": "getSlotLeaders",
"params": [
100,
10
]
}
'import requests
url = "https://solana-mainnet.core.chainstack.com/2ef4e47bc937d6b758f7c582e8e82a1e"
payload = {
"id": 1,
"jsonrpc": "2.0",
"method": "getSlotLeaders",
"params": [100, 10]
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({id: 1, jsonrpc: '2.0', method: 'getSlotLeaders', params: [100, 10]})
};
fetch('https://solana-mainnet.core.chainstack.com/2ef4e47bc937d6b758f7c582e8e82a1e', 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://solana-mainnet.core.chainstack.com/2ef4e47bc937d6b758f7c582e8e82a1e",
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([
'id' => 1,
'jsonrpc' => '2.0',
'method' => 'getSlotLeaders',
'params' => [
100,
10
]
]),
CURLOPT_HTTPHEADER => [
"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://solana-mainnet.core.chainstack.com/2ef4e47bc937d6b758f7c582e8e82a1e"
payload := strings.NewReader("{\n \"id\": 1,\n \"jsonrpc\": \"2.0\",\n \"method\": \"getSlotLeaders\",\n \"params\": [\n 100,\n 10\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
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://solana-mainnet.core.chainstack.com/2ef4e47bc937d6b758f7c582e8e82a1e")
.header("Content-Type", "application/json")
.body("{\n \"id\": 1,\n \"jsonrpc\": \"2.0\",\n \"method\": \"getSlotLeaders\",\n \"params\": [\n 100,\n 10\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://solana-mainnet.core.chainstack.com/2ef4e47bc937d6b758f7c582e8e82a1e")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"id\": 1,\n \"jsonrpc\": \"2.0\",\n \"method\": \"getSlotLeaders\",\n \"params\": [\n 100,\n 10\n ]\n}"
response = http.request(request)
puts response.read_body{
"jsonrpc": "<string>",
"id": 123,
"result": [
"<string>"
]
}Solana node API
getSlotLeaders | Solana
The Solana getSlotLeaders method returns the slot leaders for a given slot range. Available on Solana via Chainstack JSON-RPC nodes.
POST
/
2ef4e47bc937d6b758f7c582e8e82a1e
getSlotLeaders
curl --request POST \
--url https://solana-mainnet.core.chainstack.com/2ef4e47bc937d6b758f7c582e8e82a1e \
--header 'Content-Type: application/json' \
--data '
{
"id": 1,
"jsonrpc": "2.0",
"method": "getSlotLeaders",
"params": [
100,
10
]
}
'import requests
url = "https://solana-mainnet.core.chainstack.com/2ef4e47bc937d6b758f7c582e8e82a1e"
payload = {
"id": 1,
"jsonrpc": "2.0",
"method": "getSlotLeaders",
"params": [100, 10]
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({id: 1, jsonrpc: '2.0', method: 'getSlotLeaders', params: [100, 10]})
};
fetch('https://solana-mainnet.core.chainstack.com/2ef4e47bc937d6b758f7c582e8e82a1e', 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://solana-mainnet.core.chainstack.com/2ef4e47bc937d6b758f7c582e8e82a1e",
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([
'id' => 1,
'jsonrpc' => '2.0',
'method' => 'getSlotLeaders',
'params' => [
100,
10
]
]),
CURLOPT_HTTPHEADER => [
"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://solana-mainnet.core.chainstack.com/2ef4e47bc937d6b758f7c582e8e82a1e"
payload := strings.NewReader("{\n \"id\": 1,\n \"jsonrpc\": \"2.0\",\n \"method\": \"getSlotLeaders\",\n \"params\": [\n 100,\n 10\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
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://solana-mainnet.core.chainstack.com/2ef4e47bc937d6b758f7c582e8e82a1e")
.header("Content-Type", "application/json")
.body("{\n \"id\": 1,\n \"jsonrpc\": \"2.0\",\n \"method\": \"getSlotLeaders\",\n \"params\": [\n 100,\n 10\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://solana-mainnet.core.chainstack.com/2ef4e47bc937d6b758f7c582e8e82a1e")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"id\": 1,\n \"jsonrpc\": \"2.0\",\n \"method\": \"getSlotLeaders\",\n \"params\": [\n 100,\n 10\n ]\n}"
response = http.request(request)
puts response.read_body{
"jsonrpc": "<string>",
"id": 123,
"result": [
"<string>"
]
}The Solana
getSlotLeaders method returns the slot leaders for a given slot range.
Each slot on Solana has a designated leader validator responsible for producing the block. This method returns the ordered list of validator identities assigned to produce blocks in the requested range.
Get your own node endpoint todayStart for free and get your app to production levels immediately. No credit card required.You can sign up with your GitHub, X, Google, or Microsoft account.
Parameters
startSlot(integer, required) — the start slot.limit(integer, required) — the number of slot leaders to return (1–5000).
Response
result(array of strings) — an array of node identity public keys as base58 encoded strings, in order of the slot leaders for each slot in the requested range.
Use case
A common use case forgetSlotLeaders is in transaction landing optimization. By knowing which validator is the upcoming leader, you can route transactions directly to that validator’s TPU port for faster inclusion. This is especially useful in latency-sensitive applications like trading bots and arbitrage.Last modified on October 23, 2026
Was this page helpful?