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
| # | Type | Required | Description |
|---|---|---|---|
| 1 | array[string] | Yes | Array of base-58 encoded transaction signatures to query (max 256) |
| 2 | object | No | Configuration object |
Configuration object fields:
| Field | Type | Description |
|---|---|---|
searchTransactionHistory | bool | If true, search the full ledger history (not just recent slots). Default false |
Response
Returns an RpcResponse with an array of status objects (or null):
| Field | Type | Description |
|---|---|---|
context.slot | u64 | The slot at which the statuses were evaluated |
value[].slot | u64 | The slot the transaction was processed in |
value[].confirmations | `usize | null` |
value[].err | `object | null` |
value[].confirmationStatus | `string | null` |
Code Examples
cURL
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
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
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
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
{
"jsonrpc": "2.0",
"result": {
"context": { "slot": 166974442 },
"value": [
{
"slot": 166974400,
"confirmations": null,
"err": null,
"confirmationStatus": "finalized"
}
]
},
"id": 1
}