How to Use getSignatureStatuses
Learn getSignatureStatuses use cases, code examples, request parameters, response structure, and tips.
The getSignatureStatuses
RPC method allows you to retrieve the processing and confirmation status of a list of transaction signatures. This is useful for determining if transactions have been processed, confirmed, or finalized by the network.
Unless the searchTransactionHistory
option is enabled, this method primarily queries a recent status cache on the RPC node. For older transactions, enabling searchTransactionHistory
is crucial.
Common Use Cases
- Confirming Transaction Finality: Verifying if a submitted transaction has reached a desired level of confirmation (e.g.,
confirmed
orfinalized
). - Batch Status Lookup: Efficiently checking the status of multiple transactions at once, for example, after a batch send.
- Updating UI based on Transaction State: Reflecting the real-time status of a transaction to the user.
- Error Checking: Identifying if any of a list of transactions failed and why.
Request Parameters
signatures
(array
ofstring
): (Required) An array of base-58 encoded transaction signatures. You can query up to 256 signatures in a single request.options
(object
, optional): An optional configuration object with the following field:searchTransactionHistory
(boolean
, optional): Iftrue
, the RPC node will search its full transaction history for the signatures. Iffalse
(the default), it only searches a recent status cache. For old or potentially dropped transactions, set this totrue
.
Response Structure
The result
field of the JSON-RPC response contains an object with two fields:
context
(object
): An object containing:slot
(u64
): The slot in which the RPC node processed this request.
value
(array
ofobject
|null
): An array of status objects, corresponding to the order of signatures in the request. Each element can be:- An object with the following fields if the signature is found:
slot
(u64
): The slot in which the transaction was processed.confirmations
(number
|null
): The number of blocks that have been confirmed since the transaction was processed.null
if the transaction is finalized (as finality implies it won’t be rolled back, so a specific confirmation count isn’t as relevant).err
(object
|null
): An error object if the transaction failed (e.g.,{"InstructionError":[0,{"Custom":1}]}
), ornull
if it succeeded.status
(object
): An object indicating the transaction’s execution status. Usually{"Ok":null}
for successful transactions or an object detailing the error for failed ones.confirmationStatus
(string
|null
): The cluster’s confirmation status for the transaction (e.g.,processed
,confirmed
,finalized
). Can benull
if status is not available in the cache andsearchTransactionHistory
is false.
null
: If a signature is not found in the status cache andsearchTransactionHistory
isfalse
(or if it truly doesn’t exist even with history search).
- An object with the following fields if the signature is found:
Examples
1. Get Status for a List of Signatures (Recent Cache)
This example fetches the status for two signatures, relying on the node’s recent cache.
2. Get Status with Transaction History Search
This example fetches the status for signatures and explicitly requests the node to search its transaction history.
Developer Tips
searchTransactionHistory
: Crucial for reliability. Iffalse
(default), the method only checks a limited recent cache. If a transaction is old or was potentially dropped and not in this cache, it will returnnull
for that signature’s status. Always set totrue
if you need to confirm the status of transactions that might not be very recent.- Signature Limit: You can query a maximum of 256 signatures per call.
null
Status: Anull
in thevalue
array for a given signature means its status was not found. This could be because it’s not in the recent cache (ifsearchTransactionHistory
is false), the transaction never landed, or it’s too old for the node’s history even withsearchTransactionHistory: true
.confirmations: null
: This usually means the transaction has reachedfinalized
status. At this point, the concept of a specific number of confirmations is less relevant because the block is considered irreversible.- Error Handling: Check the
err
field within each status object to see if a transaction failed. Thestatus
field will also provide details (e.g.,{"Err":...}
).
Using getSignatureStatuses
is an efficient way to monitor the state of multiple Solana transactions. Remember to use searchTransactionHistory: true
for robust status checking.