Skip to content

Solana method

getBlock

Returns a confirmed block, optionally with full transaction detail.

expensiveExpensive: scans a range or a large account set. Frequently restricted.Primary specification (opens in a new tab)

How each provider handles it

3 providers

Provider support for getBlock on Solana
ProviderStatusSuccessMedian
PublicNodeSupported99.6%67 ms
Solana FoundationSupported99.4%71 ms
TatumDegraded91.7%48 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 day. 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.

When it degraded

A degradation is a bucket where a provider fell away from ITS OWN median for this method over the window, not from the cohort's. A provider that is consistently slower than its peers is not degraded — it is slower, which the ranking already says. Buckets with fewer than 20 samples are skipped, because a claim about a provider cannot rest on a handful of calls, and adjacent bad buckets are merged so one outage reads as one incident.

Solana Foundation

  • median rose to 137ms from a typical 67ms

    latency · 2026-09-09 00:00Z

Tatum

  • success fell to 53.9% from a typical 93.7%

    availability · 2026-09-09 00:00Z → 2026-09-10 00:00Z

What it does

Fetches everything in one slot: its blockhash, parent, timestamp, rewards and transactions. The `transactionDetails` parameter controls how much comes back — `full`, `accounts`, `signatures` or `none`.

A busy Solana block holds thousands of transactions, so `full` can be tens of megabytes. The detail level is the difference between a fast call and one that times out.

Parameters

slotu64required
The slot to fetch.
configObjectoptional
encoding, transactionDetails, rewards, commitment, maxSupportedTransactionVersion.Default: transactionDetails defaults to full

Returns

Object | null — the block, or null if the slot was skipped.

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":"getBlock","params":[372145830,{"encoding":"json","transactionDetails":"signatures","rewards":false,"maxSupportedTransactionVersion":0}]}'

As JSON-RPC

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "getBlock",
  "params": [
    372145830,
    {
      "encoding": "json",
      "transactionDetails": "signatures",
      "rewards": false,
      "maxSupportedTransactionVersion": 0
    }
  ]
}

Response

{
  "jsonrpc": "2.0",
  "result": {
    "blockHeight": 350412977,
    "blockTime": 1755168000,
    "blockhash": "9x2yv1F...",
    "parentSlot": 372145829,
    "previousBlockhash": "8Hs3kQ...",
    "signatures": ["5Nx8...", "2Kd9..."]
  },
  "id": 1
}

Things that bite

  • Omitting maxSupportedTransactionVersion makes the node error on any block containing a versioned transaction — which today means almost every block.
  • null means the slot was skipped, which is normal. It does not mean the block is missing.
  • Most providers only retain recent blocks. Asking for an old slot returns an error about pruned history, not a block.

Why it is measured

Measured with `signatures` only, so the response stays bounded and the comparison is about block retrieval rather than about who returns the most bytes.

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

30d window · generated 2026-10-08 18:13:13 UTC · 3 providers