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
1curl http://[IP_ADDRESS]:[PORT] -X POST -H "Content-Type: application/json" -d '{
2 "jsonrpc": "2.0",
3 "id": 1,
4 "method": "getSignatureStatuses",
5 "params": [
6 [
7 "5VERv8NMvzbJMEkV8xnrLkEaWRtSz9CosKDYjCJjBRnbJLgp8uirBgmQpjKhoR4tjF3ZpRzrFmBV6UjKdiSZkQUW"
8 ],
9 { "searchTransactionHistory": true }
10 ]
11}'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: "getSignatureStatuses",
8 params: [
9 [
10 "5VERv8NMvzbJMEkV8xnrLkEaWRtSz9CosKDYjCJjBRnbJLgp8uirBgmQpjKhoR4tjF3ZpRzrFmBV6UjKdiSZkQUW"
11 ],
12 { searchTransactionHistory: true }
13 ]
14 }),
15});
16const { result } = await response.json();
17result.value.forEach((s, i) => console.log(`Sig ${i}: ${s?.confirmationStatus ?? "not found"}`));Python
1import requests
2
3response = requests.post("http://[IP_ADDRESS]:[PORT]", json={
4 "jsonrpc": "2.0",
5 "id": 1,
6 "method": "getSignatureStatuses",
7 "params": [
8 [
9 "5VERv8NMvzbJMEkV8xnrLkEaWRtSz9CosKDYjCJjBRnbJLgp8uirBgmQpjKhoR4tjF3ZpRzrFmBV6UjKdiSZkQUW"
10 ],
11 {"searchTransactionHistory": True}
12 ]
13})
14result = response.json()["result"]
15for i, s in enumerate(result['value']):
16 print(f"Sig {i}: {s['confirmationStatus'] if s else 'not found'}")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": "getSignatureStatuses",
12 "params": [
13 [
14 "5VERv8NMvzbJMEkV8xnrLkEaWRtSz9CosKDYjCJjBRnbJLgp8uirBgmQpjKhoR4tjF3ZpRzrFmBV6UjKdiSZkQUW"
15 ],
16 {"searchTransactionHistory": true}
17 ]
18 }))
19 .send().await?
20 .text().await?;
21 println!("{}", res);
22 Ok(())
23}Example Response
1{
2 "jsonrpc": "2.0",
3 "result": {
4 "context": { "slot": 166974442 },
5 "value": [
6 {
7 "slot": 166974400,
8 "confirmations": null,
9 "err": null,
10 "confirmationStatus": "finalized"
11 }
12 ]
13 },
14 "id": 1
15}