Get transaction history
A wallet's transaction history, parsed into plain-English activity — not raw instruction bytes.
GET /wallets/{address}/transactionsRaw RPC gives you history in two frustrating steps: getSignaturesForAddress
returns only signatures, then each signature needs its own getTransaction
call — which returns account indexes and base58 instruction data you'd have to
decode program-by-program. This endpoint returns parsed, human-readable
activity in one call.
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
address | path | string | Yes | The wallet's base58 address. |
limit | query | number | No | 1–100, default 25. |
cursor | query | string | No | Pagination cursor. |
type | query | string | No | Filter by activity type: transfer, swap, nftSale, nftMint, stake, burn, other. |
Ordering is always newest-first.
Example
curl "https://api.sarg.am/v1/solana/wallets/9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM/transactions?limit=1" \
-H "Authorization: Bearer $MAINLY_API_KEY"{
"address": "9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM",
"items": [
{
"signature": "5h6xBEauJ3PK6SWCZ1PGjBvj8vDdWG3KpwATGy1ARAXFSDwt8GFXM7W5Ncn16wmqokgpiKRLuS83KUxyZyv2sUYv",
"timestamp": "2026-08-03T18:22:41Z",
"slot": 341197053,
"status": "success",
"type": "swap",
"source": "jupiter",
"description": "Swapped 1.5 SOL for 225.5 USDC on Jupiter",
"fee": { "lamports": 5000, "sol": 0.000005 },
"transfers": {
"sol": [
{ "from": "9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM", "to": "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4", "lamports": 1500000000, "sol": 1.5 }
],
"tokens": [
{
"mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"symbol": "USDC",
"from": "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4",
"to": "9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM",
"amount": { "raw": "225500000", "decimals": 6, "ui": 225.5, "uiString": "225.5" }
}
]
}
}
],
"nextCursor": "eyJzaWciOiI1aDZ4QkVhdUozUEs2U1dDWjFQR2pCdmo4dkRkV0czS3B3QVRHeTFBUkFYRiJ9"
}Response fields
| Field | Type | Description |
|---|---|---|
items[].signature | string | Unique transaction ID — use it with Get a transaction. |
items[].timestamp | string | null | ISO 8601 block time. |
items[].status | string | success or failed. Failed transactions still pay fees and appear in history. |
items[].type | string | Best-effort classification (transfer, swap, nftSale, ...). other when unrecognized. |
items[].source | string | null | Protocol that produced the activity (jupiter, magicEden, ...), when known. |
items[].description | string | One-line plain-English summary — safe to show directly in an activity feed. |
items[].transfers | object | Every SOL and token movement in the transaction, from the wallet's perspective. |
Errors
code | When |
|---|---|
invalid_address | The path parameter isn't valid base58. |
unsupported_confirmation | confirmation=processed — history requires confirmed or finalized. |
Under the hood
Replaces getSignaturesForAddress + N × getTransaction, instruction decoding
across hundreds of known programs, and the balance-diff math that turns
preBalances/postBalances arrays into named transfers.