getFirstAvailableBlock
curl --request POST \
--url https://nd-326-444-187.p2pify.com/9de47db917d4f69168e3fed02217d15b \
--header 'Content-Type: application/json' \
--data '
{
"id": 1,
"jsonrpc": "2.0",
"method": "getFirstAvailableBlock",
"params": []
}
'import requests
url = "https://nd-326-444-187.p2pify.com/9de47db917d4f69168e3fed02217d15b"
payload = {
"id": 1,
"jsonrpc": "2.0",
"method": "getFirstAvailableBlock",
"params": []
}
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: 'getFirstAvailableBlock', params: []})
};
fetch('https://nd-326-444-187.p2pify.com/9de47db917d4f69168e3fed02217d15b', 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://nd-326-444-187.p2pify.com/9de47db917d4f69168e3fed02217d15b",
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' => 'getFirstAvailableBlock',
'params' => [
]
]),
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://nd-326-444-187.p2pify.com/9de47db917d4f69168e3fed02217d15b"
payload := strings.NewReader("{\n \"id\": 1,\n \"jsonrpc\": \"2.0\",\n \"method\": \"getFirstAvailableBlock\",\n \"params\": []\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://nd-326-444-187.p2pify.com/9de47db917d4f69168e3fed02217d15b")
.header("Content-Type", "application/json")
.body("{\n \"id\": 1,\n \"jsonrpc\": \"2.0\",\n \"method\": \"getFirstAvailableBlock\",\n \"params\": []\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://nd-326-444-187.p2pify.com/9de47db917d4f69168e3fed02217d15b")
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\": \"getFirstAvailableBlock\",\n \"params\": []\n}"
response = http.request(request)
puts response.read_body{
"jsonrpc": "<string>",
"id": 123,
"result": 123
}Solana node API
getFirstAvailableBlock | Solana
The Solana getFirstAvailableBlock method returns the slot of the lowest confirmed block that has not been purged from the ledger. On Solana.
POST
/
9de47db917d4f69168e3fed02217d15b
getFirstAvailableBlock
curl --request POST \
--url https://nd-326-444-187.p2pify.com/9de47db917d4f69168e3fed02217d15b \
--header 'Content-Type: application/json' \
--data '
{
"id": 1,
"jsonrpc": "2.0",
"method": "getFirstAvailableBlock",
"params": []
}
'import requests
url = "https://nd-326-444-187.p2pify.com/9de47db917d4f69168e3fed02217d15b"
payload = {
"id": 1,
"jsonrpc": "2.0",
"method": "getFirstAvailableBlock",
"params": []
}
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: 'getFirstAvailableBlock', params: []})
};
fetch('https://nd-326-444-187.p2pify.com/9de47db917d4f69168e3fed02217d15b', 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://nd-326-444-187.p2pify.com/9de47db917d4f69168e3fed02217d15b",
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' => 'getFirstAvailableBlock',
'params' => [
]
]),
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://nd-326-444-187.p2pify.com/9de47db917d4f69168e3fed02217d15b"
payload := strings.NewReader("{\n \"id\": 1,\n \"jsonrpc\": \"2.0\",\n \"method\": \"getFirstAvailableBlock\",\n \"params\": []\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://nd-326-444-187.p2pify.com/9de47db917d4f69168e3fed02217d15b")
.header("Content-Type", "application/json")
.body("{\n \"id\": 1,\n \"jsonrpc\": \"2.0\",\n \"method\": \"getFirstAvailableBlock\",\n \"params\": []\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://nd-326-444-187.p2pify.com/9de47db917d4f69168e3fed02217d15b")
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\": \"getFirstAvailableBlock\",\n \"params\": []\n}"
response = http.request(request)
puts response.read_body{
"jsonrpc": "<string>",
"id": 123,
"result": 123
}Solana getFirstAvailableBlock method
The Solana getFirstAvailableBlock method returns the slot of the lowest confirmed block that has not been purged from the ledger.
This method provides the earliest block that is still available for retrieval from the ledger. It is useful for determining the range of historical data that is available.
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
This method does not require any parameters.Response
value— the slot of the lowest confirmed block that has not been purged from the ledger.
Use case
A practical use case forgetFirstAvailableBlock is to determine the range of historical data that is available. This can be useful for block explorers, wallets, or other applications that need to display or make use of this information.Last modified on June 22, 2026
Was this page helpful?