Mainly

Get transaction history

A wallet's transaction history, parsed into plain-English activity — not raw instruction bytes.

GET /wallets/{address}/transactions

Raw 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

ParameterInTypeRequiredDescription
addresspathstringYesThe wallet's base58 address.
limitquerynumberNo1–100, default 25.
cursorquerystringNoPagination cursor.
typequerystringNoFilter 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

FieldTypeDescription
items[].signaturestringUnique transaction ID — use it with Get a transaction.
items[].timestampstring | nullISO 8601 block time.
items[].statusstringsuccess or failed. Failed transactions still pay fees and appear in history.
items[].typestringBest-effort classification (transfer, swap, nftSale, ...). other when unrecognized.
items[].sourcestring | nullProtocol that produced the activity (jupiter, magicEden, ...), when known.
items[].descriptionstringOne-line plain-English summary — safe to show directly in an activity feed.
items[].transfersobjectEvery SOL and token movement in the transaction, from the wallet's perspective.

Errors

codeWhen
invalid_addressThe path parameter isn't valid base58.
unsupported_confirmationconfirmation=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.

On this page