Documentation index

getSignatureStatuses

Returns the statuses of a list of transaction signatures. This method is the primary way to check whether transactions have been confirmed, finalized, or encountered errors. It is essential for transaction confirmation flows, retry logic, and monitoring the status of submitted transactions. You can query up to 256 signatures in a single request and optionally search the full transaction history.

Parameters

#TypeRequiredDescription
1array[string]YesArray of base-58 encoded transaction signatures to query (max 256)
2objectNoConfiguration object

Configuration object fields:

FieldTypeDescription
searchTransactionHistoryboolIf true, search the full ledger history (not just recent slots). Default false

Response

Returns an RpcResponse with an array of status objects (or null):

FieldTypeDescription
context.slotu64The slot at which the statuses were evaluated
value[].slotu64The slot the transaction was processed in
value[].confirmations`usizenull`
value[].err`objectnull`
value[].confirmationStatus`stringnull`

Code Examples

cURL

Terminal
curl http://88.216.36.108:7999 -X POST -H "Content-Type: application/json" -d '{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "getSignatureStatuses",
  "params": [
    [
      "5VERv8NMvzbJMEkV8xnrLkEaWRtSz9CosKDYjCJjBRnbJLgp8uirBgmQpjKhoR4tjF3ZpRzrFmBV6UjKdiSZkQUW"
    ],
    { "searchTransactionHistory": true }
  ]
}'

TypeScript

TypeScript
const response = await fetch("http://88.216.36.108:7999", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    jsonrpc: "2.0",
    id: 1,
    method: "getSignatureStatuses",
    params: [
      [
        "5VERv8NMvzbJMEkV8xnrLkEaWRtSz9CosKDYjCJjBRnbJLgp8uirBgmQpjKhoR4tjF3ZpRzrFmBV6UjKdiSZkQUW"
      ],
      { searchTransactionHistory: true }
    ]
  }),
});
const { result } = await response.json();
result.value.forEach((s, i) => console.log(`Sig ${i}: ${s?.confirmationStatus ?? "not found"}`));

Python

Python
import requests

response = requests.post("http://88.216.36.108:7999", json={
    "jsonrpc": "2.0",
    "id": 1,
    "method": "getSignatureStatuses",
    "params": [
        [
            "5VERv8NMvzbJMEkV8xnrLkEaWRtSz9CosKDYjCJjBRnbJLgp8uirBgmQpjKhoR4tjF3ZpRzrFmBV6UjKdiSZkQUW"
        ],
        {"searchTransactionHistory": True}
    ]
})
result = response.json()["result"]
for i, s in enumerate(result['value']):
    print(f"Sig {i}: {s['confirmationStatus'] if s else 'not found'}")

Rust

Rust
use reqwest::Client;
use serde_json::json;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let client = Client::new();
    let res = client.post("http://88.216.36.108:7999")
        .json(&json!({
            "jsonrpc": "2.0",
            "id": 1,
            "method": "getSignatureStatuses",
            "params": [
                [
                "5VERv8NMvzbJMEkV8xnrLkEaWRtSz9CosKDYjCJjBRnbJLgp8uirBgmQpjKhoR4tjF3ZpRzrFmBV6UjKdiSZkQUW"
            ],
                {"searchTransactionHistory": true}
            ]
        }))
        .send().await?
        .text().await?;
    println!("{}", res);
    Ok(())
}

Example Response

JSON
{
  "jsonrpc": "2.0",
  "result": {
    "context": { "slot": 166974442 },
    "value": [
      {
        "slot": 166974400,
        "confirmations": null,
        "err": null,
        "confirmationStatus": "finalized"
      }
    ]
  },
  "id": 1
}