getFirstAvailableBlock

Returns the slot of the lowest confirmed block that has not been purged from the node's ledger. Validators periodically prune old ledger data, so this method tells you the earliest block you can query. This is important for indexers and analytics services that need to know the available data range, and for error handling when requesting historical blocks.

Parameters

This method does not accept any parameters.

Response

Returns a single value:

FieldTypeDescription
resultu64Slot of the first available block

Code Examples

cURL

1curl http://[IP_ADDRESS]:[PORT] -X POST -H "Content-Type: application/json" -d '{
2  "jsonrpc": "2.0",
3  "id": 1,
4  "method": "getFirstAvailableBlock",
5  "params": []
6}'

TypeScript

1const response = await fetch("http://[IP_ADDRESS]:[PORT]", {
2  method: "POST",
3  headers: { "Content-Type": "application/json" },
4  body: JSON.stringify({
5    jsonrpc: "2.0",
6    id: 1,
7    method: "getFirstAvailableBlock",
8    params: []
9  }),
10});
11const { result } = await response.json();
12console.log("First available block:", result);

Python

1import requests
2
3response = requests.post("http://[IP_ADDRESS]:[PORT]", json={
4    "jsonrpc": "2.0",
5    "id": 1,
6    "method": "getFirstAvailableBlock",
7    "params": []
8})
9result = response.json()["result"]
10print(f"First available block: {result}")

Rust

1use reqwest::Client;
2use serde_json::json;
3
4#[tokio::main]
5async fn main() -> Result<(), Box<dyn std::error::Error>> {
6    let client = Client::new();
7    let res = client.post("http://[IP_ADDRESS]:[PORT]")
8        .json(&json!({
9            "jsonrpc": "2.0",
10            "id": 1,
11            "method": "getFirstAvailableBlock",
12            "params": []
13        }))
14        .send().await?
15        .text().await?;
16    println!("{}", res);
17    Ok(())
18}

Example Response

1{
2  "jsonrpc": "2.0",
3  "result": 128000000,
4  "id": 1
5}