Solana method
getMultipleAccounts
Fetches up to 100 accounts in one call.
How each provider handles it
| Provider | Status | Success | Median |
|---|---|---|---|
| Tatum | Degraded | 94.0% | 26 ms |
| Solana Foundation | Supported | 99.9% | 19 ms |
| PublicNode | Supported | 99.9% | 26 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 47ms from a typical 16ms
latency · 2026-09-09 00:00Z → 2026-09-10 00:00Z
median rose to 36ms from a typical 16ms
latency · 2026-09-13 00:00Z
Tatum
success fell to 59.6% from a typical 95.9%
availability · 2026-09-09 00:00Z → 2026-09-10 00:00Z
What it does
The batched form of `getAccountInfo`. One round trip instead of many, which matters a great deal on a chain where reading a position often means reading a dozen related accounts.
The result array is positional: entry `i` corresponds to the pubkey at position `i`, and an account that does not exist comes back as `null` in place rather than being omitted.
Parameters
pubkeysArray of stringrequired- Up to 100 base-58 addresses.
configObjectoptionalencoding,commitment,dataSlice,minContextSlot.
Returns
Array under result.value, positionally aligned with the request.
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":"getMultipleAccounts","params":[["SysvarC1ock11111111111111111111111111111111","SysvarRent111111111111111111111111111111111"],{"encoding":"base64"}]}'As JSON-RPC
{
"jsonrpc": "2.0",
"id": 1,
"method": "getMultipleAccounts",
"params": [
[
"SysvarC1ock11111111111111111111111111111111",
"SysvarRent111111111111111111111111111111111"
],
{ "encoding": "base64" }
]
}Response
{
"jsonrpc": "2.0",
"result": {
"context": { "slot": 372145830 },
"value": [
{ "data": ["ZgAAAAAAAAA...", "base64"], "owner": "Sysvar1111111111111111111111111111111111111", "lamports": 1169280 },
{ "data": ["rgAAAAAA...", "base64"], "owner": "Sysvar1111111111111111111111111111111111111", "lamports": 1009200 }
]
},
"id": 1
}Things that bite
- A
nullentry means that account does not exist. Filtering nulls out shifts every later index and silently misaligns the results. - The 100-account ceiling is part of the specification. Exceeding it is an error, not a truncation.
Why it is measured
It shows whether a provider genuinely batches or simply loops internally — the difference appears as latency that scales with the number of accounts.
Called every 300 seconds per endpoint, with jitter so the fleet does not hit a provider in lockstep.
30d window · generated 2026-10-08 18:32:48 UTC · 3 providers