Solana

App · Cryptocurrency · 7 actions

Read the Solana blockchain through its keyless public JSON-RPC endpoints: SOL and SPL token balances, account state, a wallet's recent transactions, a transaction's full detail with the balance changes it caused, token supply, and cluster health. No account or API key required.

Actions

ActionWhat it does
Get account infoGet an account's state: the program that owns it, its balance, whether it is executable, and its data.
Get network statusCheck that a Solana cluster is healthy and see where it is in the current epoch: the slot it has reached, how far through the epoch that is, and the version the node runs.
Get recent transactionsList the transactions that touched an address, newest first, with each one's signature, time, and whether it succeeded.
Get SOL balanceGet the SOL balance of any wallet or account address, in lamports and in SOL.
Get token balancesList the SPL token balances held by a wallet, one row per token account with its mint and amount.
Get token supplyGet the circulating supply of an SPL token from its mint address, as the raw amount and with the mint's decimals applied.
Get transactionGet a confirmed transaction by signature, with what it actually moved worked out: the fee, the instructions it ran, and the SOL and token balance changes per account.

Get account info

Get an account's state: the program that owns it, its balance, whether it is executable, and its data. Accounts the node can decode (token accounts, mints, stake and vote accounts) come back as readable fields; anything else keeps its data as base64.

Inputs

AddressaddresstextRequired
Base58 address of the account to read. Any account works: a wallet, a token account, a mint, or a program.
Clusterclustertext
Which Solana cluster to read from. Mainnet Beta is the live chain carrying real value; Devnet and Testnet are for trying a workflow out first and their tokens are worth nothing. Defaults to Mainnet Beta.One of: mainnet-beta (Mainnet Beta (live)), devnet, testnet. Default: mainnet-beta.
Commitmentcommitmenttext
How settled the data has to be before the node answers. 'Finalized' is a block that can no longer be rolled back and is the right choice for anything about money; 'confirmed' is a couple of seconds fresher; 'processed' is the newest and the least certain. Defaults to finalized.One of: finalized (Finalized (safest)), confirmed, processed (Processed (newest)). Default: finalized.

Outputs

account_typetext
Kind of account, e.g. 'mint' or 'account'
addresstext
Address the account is for
clustertext
Cluster it was read from
context_slotnumber
Slot the node answered at, i.e. how current this reading is
data_base64text
Raw account data, when it could not be decoded
executabletrue/false
Whether the account is a program itself
existstrue/false
False when nothing has ever been created at this address; the rest of the fields are then empty
lamportsnumber
Balance in lamports, the chain's own unit (1 SOL = 1,000,000,000)
ownertext
Address of the program that owns the account
owner_programtext
Name of that program when it is a well-known one, e.g. 'SPL Token Program'
parsedobject
Decoded account fields, when the node could
programtext
Program the data was decoded as, e.g. 'spl-token'
rent_epochnumber
Epoch rent is next owed, when one applies
rent_exempttrue/false
Whether the account holds enough to owe no rent
solnumber
The same balance expressed in SOL
sol_stringtext
The same balance in SOL as an exact decimal string, for balances too large to hold in a number without rounding
spacenumber
Size of the account's data, in bytes
Example output
{
  "account_type": "mint",
  "address": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
  "cluster": "mainnet-beta",
  "context_slot": 351842091,
  "data_base64": null,
  "executable": false,
  "exists": true,
  "lamports": 388127588933,
  "owner": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
  "owner_program": "SPL Token Program",
  "parsed": {
    "decimals": 6,
    "freezeAuthority": "7dGbd2QZcCKcTndnHcTL8q7SMVXAkp688NTQYwrRCrar",
    "isInitialized": true,
    "mintAuthority": "BJE5MMbqXjVwjAF7oxwPYXnTXDyspzZyt4vwenNw5ruG",
    "supply": "8492155106448329"
  },
  "program": "spl-token",
  "rent_epoch": null,
  "rent_exempt": true,
  "sol": 388.127588933,
  "sol_string": "388.127588933",
  "space": 82
}

Get network status

Check that a Solana cluster is healthy and see where it is in the current epoch: the slot it has reached, how far through the epoch that is, and the version the node runs. Useful as a guard before a workflow reads anything else.

Inputs

Clusterclustertext
Which Solana cluster to read from. Mainnet Beta is the live chain carrying real value; Devnet and Testnet are for trying a workflow out first and their tokens are worth nothing. Defaults to Mainnet Beta.One of: mainnet-beta (Mainnet Beta (live)), devnet, testnet. Default: mainnet-beta.

Outputs

block_heightnumber
Current block height
clustertext
Cluster checked
endpointtext
RPC endpoint the check was made against
epochnumber
Current epoch number
epoch_progress_percentnumber
How far through the epoch the cluster is
feature_setnumber
Feature-set identifier the node runs
healthtext
'ok', or what the node said about being behind
healthytrue/false
Whether the node is caught up with the cluster
slotnumber
Highest slot the node has reached
slot_indexnumber
Slots into the current epoch
slots_in_epochnumber
Total slots this epoch holds
solana_core_versiontext
Node software version, e.g. '2.3.6'
transaction_countnumber
Transactions the cluster has ever processed
Example output
{
  "block_height": 329914772,
  "cluster": "mainnet-beta",
  "endpoint": "https://api.mainnet-beta.solana.com",
  "epoch": 814,
  "epoch_progress_percent": 74.56,
  "feature_set": 3341060832,
  "health": "ok",
  "healthy": true,
  "slot": 351842091,
  "slot_index": 322091,
  "slots_in_epoch": 432000,
  "solana_core_version": "2.3.6",
  "transaction_count": 425819330244
}

Get recent transactions

List the transactions that touched an address, newest first, with each one's signature, time, and whether it succeeded. This is how a workflow watches a wallet: hand a signature to 'Get transaction' for the detail, or stop at the last one already seen so a scheduled run only picks up what is new.

Inputs

AddressaddresstextRequired
Base58 address to list transactions for. A wallet, a token account, or a program all work.
Limitlimitnumber
How many transactions to return, newest first, from 1 to 1000. Defaults to 10.From 1 to 1000. Default: 10.
Before signaturebeforetext
Return only transactions older than this signature. Pass the 'oldest_signature' of a previous run to page further back in time.
Until signatureuntiltext
Stop at this signature and return only what is newer than it. Pass the 'newest_signature' a previous run saw so a scheduled workflow picks up only new activity.
Clusterclustertext
Which Solana cluster to read from. Mainnet Beta is the live chain carrying real value; Devnet and Testnet are for trying a workflow out first and their tokens are worth nothing. Defaults to Mainnet Beta.One of: mainnet-beta (Mainnet Beta (live)), devnet, testnet. Default: mainnet-beta.
Commitmentcommitmenttext
How settled the data has to be before the node answers. 'Finalized' is a block that can no longer be rolled back and is the right choice for anything about money; 'confirmed' is a couple of seconds fresher. Defaults to finalized.One of: finalized (Finalized (safest)), confirmed. Default: finalized.

Outputs

addresstext
Address the transactions were listed for
clustertext
Cluster they were read from
countnumber
Number of transactions returned
newest_signaturetext
First signature in the list, to use as 'until' next run
oldest_signaturetext
Last signature in the list, for paging back
signatureslist
Example output
{
  "address": "9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM",
  "cluster": "mainnet-beta",
  "count": 2,
  "newest_signature": "5j7s6NiJS3JAkvgkoc18WVAsiSaci2pxB2A6ueCJP4tprA2TFg9wSyTLeYouxPBJEMzJinENTkpA52YStRW5Dia7",
  "oldest_signature": "3nVfYSN2SPZWGZa6Ln6NKGRA7XQvZSTVeM8FBGoLnJRDSXhTyPZKfcEXtnfwvJnAynmYQqDbAWJDkUDBGa2vhcFT",
  "signatures": [
    {
      "block_time": 1784894400,
      "block_time_iso": "2026-07-24T12:00:00+00:00",
      "confirmation_status": "finalized",
      "error": null,
      "memo": null,
      "signature": "5j7s6NiJS3JAkvgkoc18WVAsiSaci2pxB2A6ueCJP4tprA2TFg9wSyTLeYouxPBJEMzJinENTkpA52YStRW5Dia7",
      "slot": 351842077,
      "succeeded": true
    },
    {
      "block_time": 1784893180,
      "block_time_iso": "2026-07-24T11:39:40+00:00",
      "confirmation_status": "finalized",
      "error": {
        "InstructionError": [
          0,
          {
            "Custom": 1
          }
        ]
      },
      "memo": null,
      "signature": "3nVfYSN2SPZWGZa6Ln6NKGRA7XQvZSTVeM8FBGoLnJRDSXhTyPZKfcEXtnfwvJnAynmYQqDbAWJDkUDBGa2vhcFT",
      "slot": 351839112,
      "succeeded": false
    }
  ]
}

Get SOL balance

Get the SOL balance of any wallet or account address, in lamports and in SOL. An address that has never been funded reads as zero rather than as an error.

Inputs

AddressaddresstextRequired
Base58 address of the wallet or account to read, for example '9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM'.
Clusterclustertext
Which Solana cluster to read from. Mainnet Beta is the live chain carrying real value; Devnet and Testnet are for trying a workflow out first and their tokens are worth nothing. Defaults to Mainnet Beta.One of: mainnet-beta (Mainnet Beta (live)), devnet, testnet. Default: mainnet-beta.
Commitmentcommitmenttext
How settled the data has to be before the node answers. 'Finalized' is a block that can no longer be rolled back and is the right choice for anything about money; 'confirmed' is a couple of seconds fresher; 'processed' is the newest and the least certain. Defaults to finalized.One of: finalized (Finalized (safest)), confirmed, processed (Processed (newest)). Default: finalized.

Outputs

addresstext
Address the balance is for
clustertext
Cluster it was read from
context_slotnumber
Slot the node answered at, i.e. how current this reading is
lamportsnumber
Balance in lamports, the chain's own unit (1 SOL = 1,000,000,000)
solnumber
The same balance expressed in SOL
sol_stringtext
The same balance in SOL as an exact decimal string, for balances too large to hold in a number without rounding
Example output
{
  "address": "9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM",
  "cluster": "mainnet-beta",
  "context_slot": 351842091,
  "lamports": 2497550000,
  "sol": 2.49755,
  "sol_string": "2.49755"
}

Get token balances

List the SPL token balances held by a wallet, one row per token account with its mint and amount. Narrow it to a single mint to ask about one token, such as how much USDC a wallet holds.

Inputs

Owner addressownertextRequired
Base58 address of the wallet whose token balances to read. This is the wallet itself, not one of its token accounts.
Mint addressminttext
Mint address of a single token to report on, for example the USDC mint. Leave blank to return every token account the wallet holds.
Token programtoken_programtext
Which token program to look under when no mint is given. Most tokens use the original SPL Token program; newer ones with transfer fees or interest use Token-2022, and its accounts are invisible to a query for the original.One of: spl-token (SPL Token (original)), token-2022. Default: spl-token.
Include empty accountsinclude_emptytrue/false
Include token accounts holding a zero balance. A wallet keeps an account for every token it has ever touched, so these are left out by default.Default: false.
Clusterclustertext
Which Solana cluster to read from. Mainnet Beta is the live chain carrying real value; Devnet and Testnet are for trying a workflow out first and their tokens are worth nothing. Defaults to Mainnet Beta.One of: mainnet-beta (Mainnet Beta (live)), devnet, testnet. Default: mainnet-beta.
Commitmentcommitmenttext
How settled the data has to be before the node answers. 'Finalized' is a block that can no longer be rolled back and is the right choice for anything about money; 'confirmed' is a couple of seconds fresher; 'processed' is the newest and the least certain. Defaults to finalized.One of: finalized (Finalized (safest)), confirmed, processed (Processed (newest)). Default: finalized.

Outputs

accountslist
clustertext
Cluster they were read from
context_slotnumber
Slot the node answered at, i.e. how current this reading is
countnumber
Number of accounts returned
minttext
Mint the query was narrowed to, or null
ownertext
Wallet the balances belong to
token_programtext
Token program the query covered, or null when a mint was given instead
total_accountsnumber
Accounts before empty ones were filtered out
Example output
{
  "accounts": [
    {
      "account_lamports": 2039280,
      "amount": "1250450000",
      "decimals": 6,
      "is_native": false,
      "mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
      "owner": "9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM",
      "program": "spl-token",
      "pubkey": "FpB2Zh7KrKrDqvJVv3cvtRYYFXFbLPTNCsSCLZbSHqZm",
      "state": "initialized",
      "token_program_id": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
      "ui_amount": 1250.45,
      "ui_amount_string": "1250.45"
    },
    {
      "account_lamports": 2541280,
      "amount": "500000000",
      "decimals": 9,
      "is_native": true,
      "mint": "So11111111111111111111111111111111111111112",
      "owner": "9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM",
      "program": "spl-token",
      "pubkey": "7uKZ4pDcCBrDbQCEmqNaGgb1Vv4rBfbjBcvBRRCxAr3m",
      "state": "initialized",
      "token_program_id": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
      "ui_amount": 0.5,
      "ui_amount_string": "0.5"
    }
  ],
  "cluster": "mainnet-beta",
  "context_slot": 351842091,
  "count": 2,
  "mint": null,
  "owner": "9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM",
  "token_program": "spl-token",
  "total_accounts": 5
}

Get token supply

Get the circulating supply of an SPL token from its mint address, as the raw amount and with the mint's decimals applied.

Inputs

Mint addressminttextRequired
Base58 mint address of the token, for example 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v' for USDC.
Clusterclustertext
Which Solana cluster to read from. Mainnet Beta is the live chain carrying real value; Devnet and Testnet are for trying a workflow out first and their tokens are worth nothing. Defaults to Mainnet Beta.One of: mainnet-beta (Mainnet Beta (live)), devnet, testnet. Default: mainnet-beta.
Commitmentcommitmenttext
How settled the data has to be before the node answers. 'Finalized' is a block that can no longer be rolled back and is the right choice for anything about money; 'confirmed' is a couple of seconds fresher; 'processed' is the newest and the least certain. Defaults to finalized.One of: finalized (Finalized (safest)), confirmed, processed (Processed (newest)). Default: finalized.

Outputs

amounttext
Raw amount in the token's smallest unit, as a string because it can be larger than a number holds exactly
clustertext
Cluster it was read from
context_slotnumber
Slot the node answered at, i.e. how current this reading is
decimalsnumber
Decimal places the mint uses, e.g. 6 for USDC
minttext
Mint the supply is for
ui_amountnumber
The human-readable amount, with those decimals already applied
ui_amount_stringtext
The same human figure as an exact decimal string
Example output
{
  "amount": "8492155106448329",
  "cluster": "mainnet-beta",
  "context_slot": 351842091,
  "decimals": 6,
  "mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
  "ui_amount": 8492155106.448329,
  "ui_amount_string": "8492155106.448329"
}

Get transaction

Get a confirmed transaction by signature, with what it actually moved worked out: the fee, the instructions it ran, and the SOL and token balance changes per account. Use it to confirm a payment arrived and for how much.

Inputs

SignaturesignaturetextRequired
Base58 transaction signature, the long string an explorer shows for a transaction, or one returned by 'Get recent transactions'.
Include program logsinclude_logstrue/false
Include the program log messages the transaction emitted. They are long and mostly useful for working out why something failed, so they are left out by default.Default: false.
Clusterclustertext
Which Solana cluster to read from. Mainnet Beta is the live chain carrying real value; Devnet and Testnet are for trying a workflow out first and their tokens are worth nothing. Defaults to Mainnet Beta.One of: mainnet-beta (Mainnet Beta (live)), devnet, testnet. Default: mainnet-beta.
Commitmentcommitmenttext
How settled the data has to be before the node answers. 'Finalized' is a block that can no longer be rolled back and is the right choice for anything about money; 'confirmed' is a couple of seconds fresher. Defaults to finalized.One of: finalized (Finalized (safest)), confirmed. Default: finalized.

Outputs

accountslist
Every account the transaction referenced, in order
block_timenumber
Block time as seconds since the Unix epoch
block_time_isotext
The same block time as an ISO 8601 UTC timestamp
clustertext
Cluster it was read from
compute_units_consumednumber
Compute units the transaction used
errorobject
Why it failed, or null when it succeeded
fee_lamportsnumber
Fee paid, in lamports
fee_payertext
Account that paid the fee (the first signer)
fee_solnumber
The same fee expressed in SOL
fee_sol_stringtext
The same fee in SOL as an exact decimal string
instructionslist
logslist
Program log messages, when they were asked for
recent_blockhashtext
Blockhash the transaction was signed against
signaturetext
Signature of the transaction
slotnumber
Slot the transaction landed in
sol_balance_changeslist
succeededtrue/false
Whether the transaction ran without error
token_balance_changeslist
versiontext
Transaction version: 'legacy' or 0
Example output
{
  "accounts": [
    "9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM",
    "3nq5EFTvQxLcRUqcRPBTQjPZbDdBXqzZbYbFAyGtxTfp",
    "11111111111111111111111111111111"
  ],
  "block_time": 1784894400,
  "block_time_iso": "2026-07-24T12:00:00+00:00",
  "cluster": "mainnet-beta",
  "compute_units_consumed": 450,
  "error": null,
  "fee_lamports": 5000,
  "fee_payer": "9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM",
  "fee_sol": 5e-06,
  "fee_sol_string": "0.000005",
  "instructions": [
    {
      "accounts": [],
      "data": null,
      "index": 0,
      "info": {
        "destination": "3nq5EFTvQxLcRUqcRPBTQjPZbDdBXqzZbYbFAyGtxTfp",
        "lamports": 100000000,
        "source": "9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM"
      },
      "program": "system",
      "program_id": "11111111111111111111111111111111",
      "type": "transfer"
    }
  ],
  "logs": [],
  "recent_blockhash": "6vJDPqZmRr2Tp3fnLxvGpJmwLzY6cH9SxiCWJRBhkPYq",
  "signature": "5j7s6NiJS3JAkvgkoc18WVAsiSaci2pxB2A6ueCJP4tprA2TFg9wSyTLeYouxPBJEMzJinENTkpA52YStRW5Dia7",
  "slot": 351842077,
  "sol_balance_changes": [
    {
      "address": "9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM",
      "change_lamports": -100005000,
      "change_sol": -0.100005,
      "post_lamports": 2397545000,
      "pre_lamports": 2497550000
    },
    {
      "address": "3nq5EFTvQxLcRUqcRPBTQjPZbDdBXqzZbYbFAyGtxTfp",
      "change_lamports": 100000000,
      "change_sol": 0.1,
      "post_lamports": 100890880,
      "pre_lamports": 890880
    }
  ],
  "succeeded": true,
  "token_balance_changes": [],
  "version": "legacy"
}

On this page