Solana method
getBlock
Returns a confirmed block, optionally with full transaction detail.
How each provider handles it
| Provider | Status | Success | Median |
|---|---|---|---|
| Tatum | Degraded | 91.7% | 48 ms |
| PublicNode | Supported | 99.6% | 67 ms |
| Solana Foundation | Supported | 99.4% | 71 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.
configObjectoptionalencoding,transactionDetails,rewards,commitment,maxSupportedTransactionVersion.Default:transactionDetailsdefaults tofull
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
maxSupportedTransactionVersionmakes the node error on any block containing a versioned transaction — which today means almost every block. nullmeans 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 17:45:11 UTC · 3 providers