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:
| Field | Type | Description |
|---|---|---|
result | u64 | Slot 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}