Skip to content

Solana method

getMultipleAccounts

Fetches up to 100 accounts in one call.

moderateModerate: reads state or executes code, but over a bounded range.Primary specification (opens in a new tab)

How each provider handles it

3 providers

Provider support for getMultipleAccounts on Solana
ProviderStatusSuccessMedian
TatumDegraded96.6%27 ms
Solana FoundationSupported100.0%14 ms
PublicNodeSupported100.0%27 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 hour. 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.

Tatum

  • success fell to 91.7% from a typical 97.9%

    availability · 2026-10-08 08:00Z

  • success fell to 80.9% from a typical 97.9%

    availability · 2026-10-08 11:00Z

  • success fell to 87.0% from a typical 97.9%

    availability · 2026-10-08 13: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.
configObjectoptional
encoding, 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 null entry 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.

24h window · generated 2026-10-08 18:34:31 UTC · 3 providers