Skip to content

Solana method

getAccountInfo

Returns an account's full contents, including its data.

cheapCheap for a provider to serve — no state is read, or one key is.Primary specification (opens in a new tab)

How each provider handles it

3 providers

Provider support for getAccountInfo on Solana
ProviderStatusSuccessMedian
Solana FoundationSupported100.0%15 ms
PublicNodeSupported100.0%27 ms
TatumDegraded90.0%30 ms

Success excludes calls the provider does not implement — an optional method a provider declines to offer is a capability fact, not a failure, and is never scored as one.

Over time

Median latency per minute. Gaps are periods with no measurement, drawn as gaps rather than joined across — a line through missing data invents a measurement that was never taken.

Logarithmic scale — each gridline is ten times the one below it. Click a provider in the legend to hide it.

What it does

Where `getBalance` returns one number, this returns the whole account: owner program, lamports, rent epoch, executable flag, and the raw data.

The encoding parameter matters. `base64` is compact and universal; `jsonParsed` asks the node to decode known program accounts into readable JSON, which costs the node more and is not supported for every program.

Parameters

pubkeystringrequired
Account address, base-58 encoded.
configObjectoptional
encoding (base58, base64, base64+zstd, jsonParsed), commitment, dataSlice, minContextSlot.Default: encoding defaults to base58, which fails outright on accounts larger than 129 bytes

Returns

Object | null under result.value.

Try it

Runnable as written, against a keyless public endpoint. Nothing here needs an API key.

Request

curl -s https://api.mainnet-beta.solana.com \
  -H 'content-type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"getAccountInfo","params":["SysvarC1ock11111111111111111111111111111111",{"encoding":"base64"}]}'

As JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "getAccountInfo",
  "params": [
    "SysvarC1ock11111111111111111111111111111111",
    { "encoding": "base64" }
  ]
}

Response

{
  "jsonrpc": "2.0",
  "result": {
    "context": { "slot": 372145830 },
    "value": {
      "data": ["ZgAAAAAAAAA...", "base64"],
      "executable": false,
      "lamports": 1169280,
      "owner": "Sysvar1111111111111111111111111111111111111",
      "rentEpoch": 18446744073709551615,
      "space": 40
    }
  },
  "id": 1
}

Things that bite

  • The default base58 encoding errors on accounts over 129 bytes. Always pass base64 unless you know the account is tiny.
  • rentEpoch of 18446744073709551615 is u64 max and means the account is rent-exempt.
  • dataSlice fetches part of a large account, which is the difference between a few hundred bytes and several megabytes.

Why it is measured

It exercises account fetch plus encoding, so it separates providers whose read path is fast from those whose serialisation is.

Called every 120 seconds per endpoint, with jitter so the fleet does not hit a provider in lockstep.

1h window · generated 2026-10-08 18:06:06 UTC · 3 providers