OpenInfra.sh is now live - Solana infrastructure, included with every server. LEARN MORE HERE >

OpenInfra.shopeninfra.sh

getSignatureStatuses

Returns the current status for each supplied transaction signature. Each signature must be a txid, the first signature of a transaction.

Request

Send a JSON-RPC 2.0 POST request with method: "getSignatureStatuses". The params array takes a list of base-58 encoded transaction signatures and an optional configuration object.

curl · JSON-RPCjson
{  "jsonrpc": "2.0",  "id": 1,  "method": "getSignatureStatuses",  "params": [    [      "4cdd1oX7cfVALfr26tP52BZ6cSzrgnNGtYD7BFhm6FFeZV5sPTnRvg6NRn8yC6DbEikXcrNChBM5vVJnTgKhGhVu"    ],    {      "searchTransactionHistory": true    }  ]}

@solana/kit

kit.tsts
import { createSolanaRpc, type Signature } from "@solana/kit"; const rpc_url = "https://rpc.openinfra.sh";const rpc = createSolanaRpc(rpc_url); let signatures = [  "4cdd1oX7cfVALfr26tP52BZ6cSzrgnNGtYD7BFhm6FFeZV5sPTnRvg6NRn8yC6DbEikXcrNChBM5vVJnTgKhGhVu" as unknown as Signature]; let config = {  searchTransactionHistory: true}; let signatureStatus = await rpc.getSignatureStatuses(signatures, config).send(); console.log(signatureStatus);

@solana/web3.js

web3.tsts
import {  Connection,  type SignatureStatusConfig} from "@solana/web3.js"; const connection = new Connection("https://rpc.openinfra.sh", "confirmed"); let signatures = [  "4cdd1oX7cfVALfr26tP52BZ6cSzrgnNGtYD7BFhm6FFeZV5sPTnRvg6NRn8yC6DbEikXcrNChBM5vVJnTgKhGhVu"]; let config: SignatureStatusConfig = {  searchTransactionHistory: true}; let signatureStatus = await connection.getSignatureStatuses(signatures, config);console.log(signatureStatus);

Rust

main.rsrs
use anyhow::Result;use solana_client::nonblocking::rpc_client::RpcClient;use solana_commitment_config::CommitmentConfig;use solana_sdk::signature::Signature;use std::str::FromStr; #[tokio::main]async fn main() -> Result<()> {    let client = RpcClient::new_with_commitment(        String::from("https://rpc.openinfra.sh"),        CommitmentConfig::confirmed(),    );     let signatures_str = [        "4cdd1oX7cfVALfr26tP52BZ6cSzrgnNGtYD7BFhm6FFeZV5sPTnRvg6NRn8yC6DbEikXcrNChBM5vVJnTgKhGhVu",    ];    let signatures = signatures_str.map(|sig| Signature::from_str(sig).unwrap());     let signature_status = client        .get_signature_statuses_with_history(&signatures)        .await?;     println!("{:#?}", signature_status);     Ok(())}

Parameters

ParameterTypeRequiredDescription
signaturesarrayYesAn array of transaction signatures to confirm, as base-58 encoded strings (up to a maximum of 256).
configobjectNoOptional configuration object. See fields below.
config.searchTransactionHistoryboolNoDefault: false. If true, a Solana node will search its ledger cache for any signatures not found in the recent status cache.

Response

response.jsonjson
{  "jsonrpc": "2.0",  "result": {    "context": { "apiVersion": "3.1.8", "slot": 82 },    "value": [      {        "slot": 48,        "confirmations": null,        "err": null,        "status": {          "Ok": null        },        "confirmationStatus": "finalized"      },      null    ]  },  "id": 1}

The result is an RpcResponse object containing a context field and a value array. Each element in the array is either null or a transaction-status object.

context

FieldTypeDescription
slotu64Slot at which the node evaluated this request.
apiVersionstringRPC API version reported by the node. This field may be omitted by older nodes.

value — transaction-status object

FieldTypeDescription
slotu64Slot in which the transaction was processed.
confirmationsusize | nullNumber of blocks since confirmation. null means the transaction is rooted and finalized by a supermajority of stake.
errobject | string | nullError if the transaction failed. null if the transaction succeeded. When returned as an object it is a transaction error enum payload — see the error variant table below.
statusobjectDeprecated legacy status object that mirrors err. See deprecated fields below.
confirmationStatusstring | nullCluster confirmation status. When present the value is processed, confirmed, or finalized.

err object — variant fields

FieldTypeDescription
<variantName>array | object | string | nullTransaction error variant payload. Most variants serialize as strings. InstructionError serializes as [instructionIndex, instructionError].

status fields (deprecated)

FieldTypeDescription
OknullTransaction succeeded.
Errobject | stringTransaction failed. Payload uses the same serialization as err.