getSignaturesForAddress
Returns confirmed signatures for transactions involving an address, ordered from newest to oldest. This is the primary method for building transaction history UIs, wallet activity feeds, and account monitoring systems. It supports pagination via before and until parameters and can return up to 1,000 signatures per request. Use getTransaction to fetch full details for each signature.
Parameters
| # | Type | Required | Description |
|---|---|---|---|
| 1 | string | Yes | Base-58 encoded account address |
| 2 | object | No | Configuration object |
Configuration object fields:
| Field | Type | Description |
|---|---|---|
commitment | string | Commitment level: confirmed or finalized (default finalized) |
limit | number | Maximum number of signatures to return (1-1000, default 1000) |
before | string | Start searching backwards from this transaction signature |
until | string | Search until this transaction signature (not inclusive) |
minContextSlot | number | Minimum slot at which the request can be evaluated |
Response
Returns an array of signature information objects:
| Field | Type | Description |
|---|---|---|
[].signature | string | Transaction signature (base-58) |
[].slot | u64 | The slot containing the transaction |
[].err | `object | null` |
[].memo | `string | null` |
[].blockTime | `i64 | null` |
[].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": "getSignaturesForAddress",
5 "params": [
6 "Vote111111111111111111111111111111111111111",
7 { "limit": 5, "commitment": "confirmed" }
8 ]
9}'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: "getSignaturesForAddress",
8 params: [
9 "Vote111111111111111111111111111111111111111",
10 { limit: 5, commitment: "confirmed" }
11 ]
12 }),
13});
14const { result } = await response.json();
15result.forEach(s => console.log(s.signature, s.confirmationStatus));Python
1import requests
2
3response = requests.post("http://[IP_ADDRESS]:[PORT]", json={
4 "jsonrpc": "2.0",
5 "id": 1,
6 "method": "getSignaturesForAddress",
7 "params": [
8 "Vote111111111111111111111111111111111111111",
9 {"limit": 5, "commitment": "confirmed"}
10 ]
11})
12result = response.json()["result"]
13for s in result: print(f"{s['signature'][:20]}... {s['confirmationStatus']}")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": "getSignaturesForAddress",
12 "params": [
13 "Vote111111111111111111111111111111111111111",
14 {"limit": 5, "commitment": "confirmed"}
15 ]
16 }))
17 .send().await?
18 .text().await?;
19 println!("{}", res);
20 Ok(())
21}Example Response
1{
2 "jsonrpc": "2.0",
3 "result": [
4 {
5 "signature": "5VERv8NMvzbJMEkV8xnrLkEaWRtSz9CosKDYjCJjBRnbJLgp8uirBgmQpjKhoR4tjF3ZpRzrFmBV6UjKdiSZkQUW",
6 "slot": 166974442,
7 "err": null,
8 "memo": null,
9 "blockTime": 1681391935,
10 "confirmationStatus": "finalized"
11 }
12 ],
13 "id": 1
14}