Plans & Limits

What each plan includes, and the rate, stream and bandwidth limits that apply in each region.

constant-k plans have a flat price. There are no credits and no overage fees. Each plan sets a total request rate, per-method caps and stream limits.

Limits apply per region

Every limit on this page applies separately in each dedicated region. If you run in more than one region, each region gives you the full amount.

A dash (—) means the method or feature is not included in that plan.

Plans

FreeOperatorBlade RunnerNexus
Price per month$0$19$99$299
Price per year—$190$990$2,990
Total RPC requests5/s50/s200/s500/s
Solana RPC✓✓✓✓
WebSocket—✓✓✓
Kaldera gRPC——✓✓
Turbo Kaldera (aRPC)———✓
ShredPrism———✓
Cube Runner long-term storage——✓✓

aRPC, anticipatory RPC, is constant-k's name for pre-execution transaction streaming. Current prices are on the pricing page.

ShredQuasar

ShredQuasar is sold on its own, per region, and is not part of the table above. No RPC plan is required, and it does not change any limit on one.

One regionBoth regions
Price per month$299$499
Price per year$2,990$4,990

A one-hour trial is available per region. It needs an account, it is tied to the IP address it is activated from, and each IP address gets one.

Rate limits

Two limits apply to every Solana RPC call:

  1. The plan total, in the table above. All requests together, across every method, may not exceed it. WebSocket requests count toward the same total.
  2. The method cap, in the tables below. Heavy methods such as getBlock and getTransaction have lower caps than light ones such as getBalance.

Counting

  • Per API key, not per IP address. Every machine that uses the same key draws on the same budget. Moving to another IP address resets nothing.
  • One key is one budget, whichever hostname you call. The staked send hostname draws on the same per-second budget as the regular RPC hostname.
  • The window is one fixed second. The count starts at zero at the start of each second and is compared against your limit as each request arrives.
  • No burst allowance. The budget does not build up while you are idle, and there is no queue or token bucket to borrow from.

Over the limit

The request is rejected with HTTP 429 and a JSON-RPC error with code -32005. The message names the limit you hit: your plan total, a method category, or a method that is at capacity across all keys.

{
  "jsonrpc": "2.0",
  "error": { "code": -32005, "message": "Global rate limit exceeded (5/sec, batch of 1)" },
  "id": null
}

A rate-limit 429 carries no Retry-After header and no rate-limit headers, so the client cannot read a wait time from the response and has to back off on its own. The window is a whole second, so a short pause is usually enough. The exact messages are on the Errors page.

The getBlock long-term storage 429 is different: it carries Retry-After. See Cube Runner.

Solana RPC methods

Per-method caps. See the Solana RPC overview for the special entries below, such as getProgramAccounts.

MethodFreeOperatorBlade RunnerNexus
sendTransaction (network)1/s15/s50/s200/s
sendTransaction (staked, SWQoS)—1/s5/s20/s
getSupply——2/s5/s
getProgramAccounts (filter required)——2/s, 1 open5/s, 3 open
getProgramAccountsV2 (paginated, 10,000/page)——2/s, 1 open5/s, 3 open
ALT Lookups (ALT program · from index)——2/s5/s
getTokenLargestAccounts——2/s30/s
getBlock1/s5/s10/s30/s
getBlocks——10/s30/s
getBlocksWithLimit——10/s30/s
getConfirmedBlock1/s5/s10/s30/s
getSignaturesForAddress—5/s10/s30/s
getTokenAccountsByOwner—5/s10/s30/s
getBlockCommitment2/s5/s50/s100/s
getBlockProduction2/s5/s50/s100/s
getBlockTime2/s5/s50/s100/s
getConfirmedTransaction2/s5/s50/s100/s
getInflationReward2/s5/s50/s100/s
getTransaction2/s5/s50/s100/s
simulateTransaction2/s5/s50/s100/s
getAccountInfo5/s50/s200/s500/s
getBalance5/s50/s200/s500/s
getBlockHeight5/s50/s200/s500/s
getClusterNodes5/s50/s200/s500/s
getEpochInfo5/s50/s200/s500/s
getEpochSchedule5/s50/s200/s500/s
getFeeForMessage5/s50/s200/s500/s
getGenesisHash5/s50/s200/s500/s
getHealth5/s50/s200/s500/s
getHighestSnapshotSlot5/s50/s200/s500/s
getIdentity5/s50/s200/s500/s
getLatestBlockhash—50/s200/s500/s
getLeaderSchedule5/s50/s200/s500/s
getMinimumBalanceForRentExemption5/s50/s200/s500/s
getMultipleAccounts (max 100 per call)—50/s200/s500/s
getRecentPerformanceSamples5/s50/s200/s500/s
getRecentPrioritizationFees5/s50/s200/s500/s
getSignatureStatuses (max 100 per call)—50/s200/s500/s
getSlot5/s50/s200/s500/s
getSlotLeader5/s50/s200/s500/s
getStakeActivation5/s50/s200/s500/s
getStakeMinimumDelegation5/s50/s200/s500/s
getTokenAccountBalance5/s50/s200/s500/s
getTokenSupply5/s50/s200/s500/s
getTransactionCount5/s50/s200/s500/s
getVersion5/s50/s200/s500/s
getVoteAccounts5/s50/s200/s500/s
isBlockhashValid5/s50/s200/s500/s

"Open" in the table is the number of getProgramAccounts and getProgramAccountsV2 calls one API key can have in progress at the same time, both methods counted together. A call over the cap gets HTTP 429 with code -32005. See Errors.

Not supported on any plan: batch requests (one JSON-RPC call per HTTP request), getLargestAccounts and sendBundle.

WebSocket limits

LimitFreeOperatorBlade RunnerNexus
Allowed Methods—SubscriptionsSubscriptionsSubscriptions
Concurrent Connections (per key)—1050100
Subscriptions (per connection)—1050100
Requests—Count toward the plan totalCount toward the plan totalCount toward the plan total
blockSubscribe———✓
Keepalive (getHealth)—✓✓✓

See WebSockets.

Kaldera gRPC limits

Yellowstone gRPC with shred acceleration and a per-subscriber fanout. Not available on Free or Operator.

LimitBlade RunnerNexus
Subscribe Bandwidth37.5 MB/s150 MB/s
Subscribe Concurrent Streams75200
SubscribeDeshred Access (pre-execution tx stream)✓✓
SubscribeDeshred Bandwidth22.5 MB/s75 MB/s
SubscribeDeshred Concurrent Streams1525
Replay Window24 hours per region24 hours per region
Subscription FiltersSlots, Transactions, AccountsSlots, Transactions, Accounts
Filters per Stream1564
Accounts per Filter1002,000
Owners per Filter3850
Max Accounts per Stream (auto-split)1,500128,000
Max Accounts Total (streams × max per stream)~112,500~25,600,000
Transaction Filters per Stream1532
Accounts per Transaction Filter1001,000
"Any" (No Filter) Streams—Max 3 Streams
Compressiongzip, zstdgzip, zstd

Bandwidth limits apply per API key, per region. A stream at its limit is throttled. When a client falls behind, Kaldera buffers up to 64 MB of its data. If that buffer fills, Kaldera drops the oldest queued updates and keeps the client on the newest data.

Turbo Kaldera limits

Turbo Kaldera streams decoded pre-execution transactions over the standard Yellowstone Subscribe method, on the turbo-kaldera-<region> hostnames in New York, Frankfurt and Amsterdam. Not available on Free or Operator.

LimitBlade RunnerNexus
Turbo Subscribe—✓
SubscribeDeshred on the turbo hostnames✓✓
Concurrent streamsKaldera SubscribeDeshred limitShared with Kaldera Subscribe
BandwidthKaldera SubscribeDeshred limitShared with Kaldera Subscribe
Transaction filters (accountInclude, accountExclude, accountRequired, vote)✓✓
Execution metadata (fee, status, logs)——
Replay (fromSlot)——
  • Turbo streams are Kaldera Subscribe streams. They count toward the same concurrent streams and bandwidth as standard Kaldera, so a Nexus key holding all 200 Subscribe streams closes one before it opens a Turbo stream.
  • Blade Runner reaches the same pre-execution data through SubscribeDeshred, counted under the Kaldera SubscribeDeshred limits.
  • A lower plan is refused with gRPC status PERMISSION_DENIED (7).

ShredPrism limits

Serialized entries over gRPC. Nexus only.

LimitNexus
Bandwidth LimitNone
Concurrent StreamsOne Stream Per Key
Stream TypeFull Solana Feed over gRPC
Shred VisibilityPre-block, sub-slot

Cube Runner limits

Cube Runner retrieves a block from long-term storage when no cache, ledger or other region holds it. Long-term storage is included on Blade Runner and Nexus tier plans. Each plan has its own queue in each region, shared by every API key on that plan in that region.

LimitBlade RunnerNexus
Retrieval rate per region1 block per 15 seconds1 block per 3 seconds
Monthly allowance per API key, per region10,000 blocks50,000 blocks
Blocks queued per API key200500
Blocks queued per region1,0002,000
Longest allowed queue time (no guaranteed delivery; request again to requeue)1 hour2 hours
  • The monthly allowance counts only blocks retrieved from long-term storage for that API key. Blocks served by a cache, a ledger or another region never count.
  • Each region keeps its own count, so an API key has the full allowance in each region.
  • The allowance resets at 00:00 UTC on the first day of each month.
  • The getBlock rate limit in Solana RPC methods applies to every getBlock request, whichever source serves it.

Trials and billing

  • Trials. The pricing page lists Free as a 5-day trial for testing. Paid plans offer a 3-day trial. Each account can use one trial, for any plan, so the highest plan you expect to need is the one worth trialling.
  • Payment. In USD or in USDC. A yearly plan costs the same as 10 months.
  • Crypto payments. Crypto subscriptions do not renew automatically. Each extra payment adds time to the end of your current plan. Payment through the QR code or the Open in Wallet button on the payment page activates the account automatically.
  • Cancelling. Available at any time. Your plan stays active until the end of the billing period.
  • Limit changes. constant-k may adjust plan limits to keep the nodes healthy, and posts a notice when it does. The Plan Limits page on the main site shows the current values.

See the Terms of Service for the full rules.

On this page