Solana Vibe Station¶
Solana Vibe Station (SVS) runs Solana RPC on hardware it owns in Atlanta and Amsterdam, and bills it differently from every other provider in these docs: a flat monthly price per rate limit, with no credits and no per-call metering. There is a free tier at 5 requests/second, and paid tiers run from $40/month at 30 req/s to $500/month at 1,000 req/s.
Because nothing is metered, the usual question ("what does getBlock cost here?") has no answer.
Every call costs the same, which is nothing on top of the subscription. You pay for a rate limit
instead.
Referral link
The sign-up links on this page go through rpcplane.dev/go/solana-vibe-station, which is a
Solana Vibe Station referral link. If you sign up through it and then pay for a plan, RPC Plane
may earn a commission on what you pay. SVS's program pays up to 30% of a first invoice and up to
10% of renewals. It costs you nothing, and the free tier earns us nothing. None of the content
depends on it: every figure below comes from SVS's own published pages or from requests we sent
to its endpoints, and the problems we found are on this page too.
What is the Solana Vibe Station RPC URL?¶
The hostname carries the tier, and the key is an api_key query parameter:
Paid tiers swap free for lite, basic, ultra, elite or epic. WebSocket uses the same host and query with wss://. Each hostname is geo-routed to the nearer
region. To pin one, insert the region: free.rpc.atl1.solanavibestation.com (Atlanta) or
free.rpc.ams1.solanavibestation.com (Amsterdam). Both regional free hosts answered when checked on
2026-11-06.
There is also a public endpoint that needs no key:
SVS also documents a /historical path for lookups older than 24 hours
(https://<tier>.rpc.solanavibestation.com/historical?api_key=...). For RPC Plane, use the plain URL
and leave /historical out. History depth below explains why.
How do I get a Solana Vibe Station API key?¶
- Create an account. The free tier needs no card.
- In the portal, add the Free RPC product (or a paid tier).
- Copy the API key, or the full endpoint URL shown for it.
The key travels in the URL, so treat the whole endpoint URL as a secret and put it in an environment variable.
Is there a free Solana Vibe Station tier, and what are its limits?¶
Yes. Free RPC costs $0 and has no monthly allowance at all. There are no credits to run out of, so the rate limit is the only ceiling:
| Limit | Free tier |
|---|---|
| Requests | 5/sec |
sendTransaction |
1/sec |
| Monthly allowance | none (unmetered) |
| History | served (see below) |
| LightSpeed, Hyperion | paid tiers only |
Measured 2026-11-06 with a free key: a burst of 20 concurrent requests got 6 through, 6 req/s held for four seconds with no errors, and 10 req/s settled at about 6 per second, with the rest returning HTTP 429. That is a little above the published 5, but design against the 5.
SVS says the free tier "is not intended for production use and may be subject to unscheduled downtime, abuse, and rate limit changes without notice."
The public endpoint publishes no limit. Measured the same day, it held 1 req/s for ten seconds, but at 2 req/s only 12 of 20 requests succeeded. Treat it as about 1 req/s, less than RPC Plane's health probe sends at the default interval (see the probe spends part of the limit).
Plans and rate limits¶
| Plan | Monthly | Annual | Requests/s | sendTransaction/s |
getProgramAccounts/s |
|---|---|---|---|---|---|
| Free | $0 | — | 5 | 1 | — |
| Lite | $40 | $400 | 30 | 10 | 2 |
| Basic | $75 | $750 | 100 | 25 | 5 |
| Ultra | $150 | $1,500 | 250 | 50 | 10 |
| Elite | $300 | $3,000 | 500 | 100 | 15 |
| Epic | $500 | $5,000 | 1,000 | 250 | 25 |
Annual billing is ten months' price for twelve. Plans are month to month with no cancellation fee, and a request over the limit is throttled for that second rather than billed: "You are never billed an overage."
Verified 2026-11-06 against solanavibestation.com/pricing and the rate-limit reference. SVS's own pages disagree in two places:
- Lite is 30 req/s on the pricing page, in the portal catalog and on the rate-limit page. The RPC services page says 40. This table uses 30.
- The
getProgramAccountslimits appear only on the RPC services page. The rate-limit page doesn't list a separategetProgramAccountslimit.
Every paid tier includes LightSpeed (tip-based transaction landing, 0.001 SOL minimum tip) and
Hyperion (SVS's indexer for getProgramAccounts and similar scans). Staked RPC (SWQoS, plus Jito
sendBundle) is a separate line, from $300/month. Yellowstone gRPC streaming starts at $150/month.
The pricing page also has a slot for packages that pair an RPC tier with gRPC streaming at a discount. None were published when checked on 2026-11-06.
What each method costs¶
Nothing per call. That makes per-call comparison a question of utilisation. A tier's effective rate depends on how much of its limit you actually use, and it beats metered pricing surprisingly early:
| Plan | Calls/month at the full limit | $/M at the full limit | Cheaper than $4.50/M metered above |
|---|---|---|---|
| Lite | 77.8M | $0.51 | 8.9M calls/mo (3.4 req/s average) |
| Basic | 259.2M | $0.29 | 16.7M calls/mo (6.4 req/s average) |
| Ultra | 648M | $0.23 | 33.3M calls/mo (12.9 req/s average) |
| Elite | 1,296M | $0.23 | 66.7M calls/mo (25.7 req/s average) |
| Epic | 2,592M | $0.19 | 111M calls/mo (42.9 req/s average) |
$4.50/M is Alchemy's standard read, the cheapest metered standard read in
provider pricing. The table uses a 30-day month. Against history reads the
break-even comes much sooner, because history is where metered providers charge their premium:
Basic costs the same as 1.5M Helius getBlock calls at $50/M.
The catch is that a rate limit caps your peak, and a flat price is only cheap when your
average sits near that peak. Size a tier to your busiest second and it idles the rest of the
day. With RPC Plane you can size for the baseline and let the overflow go elsewhere: cap the SVS
entry with max_rps and the proxy sends traffic above the cap to a metered provider, so you buy a
smaller tier and pay per call only for the bursts.
How far back does its history go?¶
Further than most free endpoints, though not without gaps. Two behaviours matter, and neither returns an error.
getSignaturesForAddress on the plain URL covers about the last 11 hours. That is the node's
local ledger: minimumLedgerSlot was about 180,000 slots behind the tip. On 2026-11-06, for an
address whose latest 1,000 signatures go back 1.2 days, the plain free URL and the public endpoint
both returned 236 signatures, while the Solana Foundation endpoint and SVS's /historical path
returned all 1,000. The /historical lists matched the Foundation's exactly, six pages deep.
getTransaction and getBlock reach back to 25 October 2024, with a hole. The plain URL answers
these from SVS's archive, without /historical. getFirstAvailableBlock reports slot 297,562,244
(2024-10-25), and anything older comes back as null or error -32009. Within that range we sampled
transactions at different ages and compared each one with the Foundation endpoint, which had all of
them:
| Transaction age (from 2026-11-06) | Found by SVS |
|---|---|
| Up to ~15 days (after 2026-10-21) | 69 of 69 |
| 2026-08-31 to 2026-10-21 | 27 of 76: the rest returned null |
| 2024-10-25 to 2026-08-30 | 92 of 92 |
| Before 2024-10-25 | none: below the archive floor |
Inside that window getBlock still returns the full block, with a signature list identical to the
Foundation's. Only the lookup by signature misses. /historical misses the same transactions, and
inside the window its getSignaturesForAddress with a before cursor returned an empty list where
the Foundation returned 200 signatures. Read the hole as dated: it may be a backfill that is still
running, so re-check before relying on the archive.
So mark it history = "recent". Both behaviours are the ones that setting exists for. With it,
RPC Plane never sends getSignaturesForAddress to SVS, and a null or error from SVS on
getTransaction or getBlock fails over to a full-history provider. Point lookups routed to SVS,
which are the expensive calls on metered providers, are still answered there at no per-call cost,
except those that fall in the gap. See history lookups.
That needs a full-history provider in the same pool. The Solana Foundation endpoint qualifies, as
do Helius, QuickNode and Alchemy. Checked end to end on v0.13.0 with SVS first in a
failover_ordered pool: a getTransaction from the gap came back from SVS as a miss
(rpc_plane_requests_total{status="miss"}), failed over, and returned the transaction from the
Foundation endpoint. getSignaturesForAddress went straight to the Foundation and returned all 1,000
signatures.
The /historical path¶
/historical serves nine methods: getBlock, getBlocks, getBlockTime, getBlocksWithLimit,
getFirstAvailableBlock, getSignaturesForAddress, getSignatureStatuses, getSlot and
getTransaction. Anything else gets HTTP 403 with error -32601. It also refuses processed
commitment with HTTP 403. RPC Plane's health probe sends getSlot at processed, so an entry
pointed at /historical fails every probe and its circuit opens.
The only thing it adds over the plain URL is the full-depth getSignaturesForAddress, and that is
exactly the method the hole breaks. Adding it as a full provider would let its empty lists and
nulls for that window reach your clients as real answers, so leave it out for now. If the gap
closes and you want it, scope the entry to history methods and leave out getSlot, which skips the
probe (submission-only providers describes how such an
entry is scored).
To re-check the gap yourself, take a signature from a block in the missing window and compare:
SIG=... # any transaction from late September 2026
for url in "https://free.rpc.solanavibestation.com/?api_key=${SVS_API_KEY}" \
"https://api.mainnet-beta.solana.com"; do
curl -s "$url" -H 'Content-Type: application/json' -d '{"jsonrpc":"2.0","id":1,
"method":"getTransaction","params":["'"$SIG"'",{"maxSupportedTransactionVersion":1}]}' \
| head -c 80; echo
done
Configure Solana Vibe Station in RPC Plane¶
[health]
interval_ms = 30000 # the default probes 3x a second, 60% of the free tier; see below
[[providers]]
name = "svs"
url = "https://free.rpc.solanavibestation.com/?api_key=${SVS_API_KEY}"
max_rps = 5
history = "recent" # ~11 h of getSignaturesForAddress, and a gap in getTransaction
For a paid tier, change the hostname (basic.rpc..., ultra.rpc...) and set max_rps to the
tier's limit.
The health probe spends part of the limit¶
Every health.interval_ms, RPC Plane probes each provider
with three getSlot calls, one per commitment level, and those calls don't draw from max_rps. At
the default 1,000 ms that is 3 req/s, which is 60% of the free tier's 5, and max_rps = 5 on
top of it would run into 429s. At 30,000 ms, the interval the free-tier stack
uses, the probe costs 0.1 req/s. If you keep a short interval, lower max_rps to leave room for it
instead. On a paid tier the probe is noise: 3 req/s against Basic's 100.
The interval is global, and on metered providers in the same pool the probe also draws on their monthly allowance. The free-tier guide has the numbers.
The public endpoint is the extreme case. At about 1 req/s, the probe alone exceeds its limit at any
interval_ms under 3,000, and even at 30,000 it would add a tenth of a request a second to a leg
that holds one. It is not worth adding as a pool member.
Writes have their own, tighter limit¶
sendTransaction is limited separately: 1/s on Free, 10/s on Lite. As with
Helius, a single max_rps can't protect
it. Register the key twice so writes get their own bucket:
[[providers]]
name = "svs-writes"
url = "https://free.rpc.solanavibestation.com/?api_key=${SVS_API_KEY}"
methods = ["sendTransaction"]
max_rps = 1
[[providers]]
name = "svs-reads"
url = "https://free.rpc.solanavibestation.com/?api_key=${SVS_API_KEY}"
max_rps = 5
history = "recent"
See working around a per-method limit.
Method notes¶
Checked 2026-11-06 on the free and public endpoints:
- No DAS.
getAssetandgetAssetsByOwnerreturn -32601 "Method not found". Keep Metaplex calls on a provider that serves them, with amethodsallowlist if needed. getProgramAccountsandgetLargestAccountswork, including on the free tier. Many free endpoints block both.- Jito
simulateBundleworks on the free tier. getSupplyrejectsexcludeNonCirculatingAccountsListwith -32602, because SVS serves it from an indexer that doesn't track circulating supply.getTransactionsForAddressis not available on the plain URL.
When to use Solana Vibe Station¶
- Steady, high-volume reads. If your average load sits well inside one tier, the flat price
undercuts every metered provider here. History reads especially: SVS's
getBlockcosts the same asgetBalance. - As a free-tier leg. 5 req/s with no monthly allowance to burn makes it a useful member of a free-tier stack. It never runs dry the way a credit allowance does.
- Not as your only history source, yet. Pair it with a full-history provider and keep
history = "recent"until the archive gap above is closed. - Not for DAS. It doesn't serve the Metaplex methods.