---
title: getSignatureStatuses
description: >-
  Returns the current status for each supplied transaction signature. Each
  signature must be a txid, the first signature of a transaction.
url: /docs/rpc/http/getsignaturestatuses
type: reference
hideTableOfContents: true
---

Returns the current status for each supplied transaction signature. Each
signature must be a [txid](/docs/references/terminology#transaction-id), the
first signature of a transaction.

<Callout type="info" title="Source">
  [`get_signature_statuses`](https://github.com/anza-xyz/agave/blob/v3.1.8/rpc/src/rpc.rs#L1641)
</Callout>

<Callout type="info">
  Unless the `searchTransactionHistory` configuration parameter is included,
  this method only searches the recent status cache of signatures, which retains
  statuses for all active slots plus `MAX_RECENT_BLOCKHASHES` rooted slots.
</Callout>

<APIMethod>

```jsonc !!request curl
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "getSignatureStatuses",
  "params": [
    // !hover(1:3) signatures
    [
      "4cdd1oX7cfVALfr26tP52BZ6cSzrgnNGtYD7BFhm6FFeZV5sPTnRvg6NRn8yC6DbEikXcrNChBM5vVJnTgKhGhVu"
    ],
    // !hover(1:3) config
    {
      // !hover searchTransactionHistory
      "searchTransactionHistory": true
    }
  ]
}
```

```ts !!request title="Kit"
import { createSolanaRpc, type Signature } from "@solana/kit";

const rpc_url = "https://api.devnet.solana.com";
const rpc = createSolanaRpc(rpc_url);

// !hover(1:3) signatures
let signatures = [
  "4cdd1oX7cfVALfr26tP52BZ6cSzrgnNGtYD7BFhm6FFeZV5sPTnRvg6NRn8yC6DbEikXcrNChBM5vVJnTgKhGhVu" as unknown as Signature
];

// !hover(1:3) config
let config = {
  // !hover searchTransactionHistory
  searchTransactionHistory: true
};

let signatureStatus = await rpc.getSignatureStatuses(signatures, config).send();

console.log(signatureStatus);
```

```ts !!request title="web3.js"
import {
  Connection,
  clusterApiUrl,
  type SignatureStatusConfig
} from "@solana/web3.js";

const connection = new Connection(clusterApiUrl("devnet"), "confirmed");

// !hover(1:3) signatures
let signatures = [
  "4cdd1oX7cfVALfr26tP52BZ6cSzrgnNGtYD7BFhm6FFeZV5sPTnRvg6NRn8yC6DbEikXcrNChBM5vVJnTgKhGhVu"
];

// !hover(1:3) config
let config: SignatureStatusConfig = {
  // !hover searchTransactionHistory
  searchTransactionHistory: true
};

let signatureStatus = await connection.getSignatureStatuses(signatures, config);
console.log(signatureStatus);
```

```rs !!request title="Rust"
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://api.devnet.solana.com"),
        CommitmentConfig::confirmed(),
    );

    // !hover(1:3) signatures
    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(())
}
```

### !params

#### !! signatures

!type array  
!required

An array of transaction signatures to confirm, as base-58 encoded strings (up to
a maximum of 256)

#### !! config

!type object

Configuration object containing the following fields:

##### !! searchTransactionHistory

!type bool  
!values true false  
!default false

if `true` - a Solana node will search its ledger cache for any signatures not
found in the recent status cache

### !!result

```jsonc !response
{
  "jsonrpc": "2.0",
  // !hover(1:15) result
  "result": {
    // !hover context
    "context": { "apiVersion": "3.1.8", "slot": 82 },
    // !hover(1:12) value
    "value": [
      {
        "slot": 48,
        "confirmations": null,
        "err": null,
        "status": {
          "Ok": null
        },
        "confirmationStatus": "finalized"
      },
      null
    ]
  },
  "id": 1
}
```

!type object

RpcResponse object containing:

#### !! context

!type object

Slot and API version the node used to answer this request.

| Field        | Type     | Description                                                                     |
| ------------ | -------- | ------------------------------------------------------------------------------- |
| `slot`       | `u64`    | Slot at which the node evaluated this request.                                  |
| `apiVersion` | `string` | RPC API version reported by the node. This field may be omitted by older nodes. |

#### !! value

!type array

Array consisting of either `null` or a transaction-status object containing the
following fields:

| Field                | Type                       | Description                                                                                                            |
| -------------------- | -------------------------- | ---------------------------------------------------------------------------------------------------------------------- |
| `slot`               | `u64`                      | Slot in which the transaction was processed.                                                                           |
| `confirmations`      | `usize \| null`            | Number of blocks since confirmation. `null` means the transaction is rooted and finalized by a supermajority of stake. |
| `err`                | `object \| string \| null` | Error if the transaction failed. `null` if the transaction succeeded.                                                  |
| `status`             | `object`                   | Deprecated legacy status object that mirrors `err`.                                                                    |
| `confirmationStatus` | `string \| null`           | Cluster confirmation status. When present, the value is `processed`, `confirmed`, or `finalized`.                      |

When `err` is returned as an object, it is a transaction error enum payload
rather than a fixed JSON schema:

| Field           | Type                                | Description                                                                                                                                     |
| --------------- | ----------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| `<variantName>` | `array \| object \| string \| null` | Transaction error variant payload. Most variants serialize as strings. `InstructionError` serializes as `[instructionIndex, instructionError]`. |

**`status` fields**

**DEPRECATED** Legacy transaction status object. Exactly one of these fields is
present:

| Field | Type               | Description                                                       |
| ----- | ------------------ | ----------------------------------------------------------------- |
| `Ok`  | `null`             | Transaction succeeded.                                            |
| `Err` | `object \| string` | Transaction failed. Payload uses the same serialization as `err`. |

</APIMethod>
