Free Solana RPC (SOL)
Discover Solana, a high-performance blockchain optimized for decentralized finance and NFTs. Build fast and scalable dApps using its RPC gateway.
Connect to Solana
Access reliable, enterprise-grade endpoints that power your dApp with ultra-low latency and 99.9% uptime.
Connect to Solana Gateway
Make your first RPC call on Solana's Blockchain Gateway.
Devnet
Testnet* Rate limit enabled - perfect for testing and development. For production, we recommend to Upgrade.
Get 200 requests/second, priority support and advanced blockchain features.
Global Load Balancer
Route to nearest node
Batch RPC Calls
Multiple requests at once
Archive Nodes
Historical blockchain data
Debug & Trace
Advanced debugging
Advanced Analytics
Usage & performance
Bring Your Own RPC
Custom RPC gateways
Increase your limit and access all network features in Tatum Development Platform.
MEV Protection on Solana
Protect your transactions from MEV attacks on Solana.
Smart Contract Tools on Solana
Deploy, create, and interact with smart contracts on Solana.
No signup. No paywalls. Just RPC that works. Great ideas come from everywhere.
With love by Tatum
Solana methods
Every method the Solana gateway accepts, grouped by interface. 67 in total, read live from the node rather than kept by hand.
Mainnet is the live Solana network. Every transaction it
accepts is final, and every SOL balance it
reports is real money.
Devnet is the test network. It answers the same methods as Mainnet, with tokens that are free and deliberately worthless, so you can rehearse edge cases at no risk. Moving to Mainnet is a URL change and nothing more.
Solana answers over 3 interfaces: JSON-RPC, WebSocket and gRPC. Each is listed once below with every method it accepts. The endpoints differ per network, and all of them are in the gateway list above.
What sits between you and Solana
A node is a machine running Solana with a copy of the chain. Your code cannot ask the chain directly, it asks a node. The gateway picks a healthy one for every call, so you point at one URL instead of one machine.
- One URL, nothing to run or keep patched yourself.
- Calls routed to a node that is up and in sync.
- A failing node is skipped rather than returned to you as an error.
JSON-RPC
51 methodsThe default. Every wallet, library and framework speaks it, and it is what you want unless you specifically need something else.
One POST carries a method name, its parameters and an id, and the response comes back on the same connection carrying that same id. Requests are independent, so there is no session to keep alive and nothing to reconnect, which is why it runs unchanged behind a load balancer or inside a serverless function. Send an array instead of a single object and the node works through the whole batch in one round trip.
Where it fits
- Anything your library already does for you. ethers, web3.js, viem and their equivalents all target this.
- Batching reads. One array of twenty calls costs one round trip instead of twenty.
- Stateless and serverless deployments, because nothing has to stay connected between calls.
- Historical queries, by passing a block number where you would otherwise pass latest.
Trade-offs
- It cannot push. Finding out that a block landed means polling for it, or moving to WebSocket.
- Wide log queries get refused. Page through in fixed block windows and merge the results yourself.
- Batch responses may come back in any order. Match them on id, never on position.
Enabled and tested methods
Read live from the endpoint, so this is what it actually serves today rather than what the protocol allows in principle. Anything not on this list returns a method-not-found error.
- getAccountInfo
- Returns all information held for a given account.
- getBalance
- Returns the lamport balance of an account.
- getBlock
- Returns a confirmed block at a given slot.
- getBlockCommitment
- Returns how much stake has voted on a block.
- getBlockHeight
- Returns the current block height.
- getBlockProduction
- Returns recent block production, broken down by validator.
- getBlocks
- Lists confirmed blocks between two slots.
- getBlocksWithLimit
- Lists confirmed blocks starting at a slot, up to a limit.
- getBlockTime
- Returns the estimated production time of a block.
- getClusterNodes
- Lists the nodes taking part in the cluster.
- getConfirmedSignaturesForAddress2
- Returns confirmed transaction signatures involving an address.
- getEpochInfo
- Returns information about the current epoch.
- getEpochSchedule
- Returns the epoch schedule this cluster was configured with.
- getFeeForMessage
- Returns the fee the network would charge for a given message.
- getFirstAvailableBlock
- Returns the lowest confirmed block still retained by the node.
- getGenesisHash
- Returns the genesis hash of the cluster.
- getHealth
- Reports whether the node is healthy and caught up with its peers.
- getHighestSnapshotSlot
- Returns the highest slot for which the node has a snapshot.
- getIdentity
- Returns the identity public key of the node.
- getInflationGovernor
- Returns the parameters governing inflation.
- getInflationRate
- Returns the inflation rate for the current epoch.
- getInflationReward
- Returns the inflation reward paid to a list of addresses.
- getLatestBlockhash
- Returns a recent blockhash for use in building a transaction.
- getLeaderSchedule
- Returns the leader schedule for an epoch.
- getMaxRetransmitSlot
- Returns the highest slot seen by the retransmit stage.
- getMaxShredInsertSlot
- Returns the highest slot for which shreds have been inserted.
- getMinimumBalanceForRentExemption
- Returns the balance an account needs to be rent exempt.
- getMultipleAccounts
- Returns information for several accounts in one call.
- getProgramAccounts
- Returns all accounts owned by a given program.
- getRecentPerformanceSamples
- Returns recent throughput samples for the cluster.
- getRecentPrioritizationFees
- Returns prioritization fees paid in recent blocks.
- getSignaturesForAddress
- Returns transaction signatures involving an address, newest first.
- getSignatureStatuses
- Returns the confirmation status of a list of transaction signatures.
- getSlot
- Returns the slot the node is currently processing.
- getSlotLeader
- Returns the validator leading the current slot.
- getSlotLeaders
- Returns the validators leading a range of slots.
- getStakeMinimumDelegation
- Returns the minimum delegation a stake account may hold.
- getSupply
- Returns total and circulating supply.
- getTokenAccountBalance
- Returns the token balance held by an SPL token account.
- getTokenAccountsByOwner
- Lists the SPL token accounts owned by an address.
- getTokenLargestAccounts
- Lists the largest holders of an SPL token.
- getTokenSupply
- Returns the total supply of an SPL token.
- getTransaction
- Returns a confirmed transaction by its signature.
- getTransactionCount
- Returns the total number of transactions the cluster has processed.
- getVersion
- Returns the software version running on the node.
- getVoteAccounts
- Lists current and delinquent vote accounts.
- isBlockhashValid
- Reports whether a blockhash is still valid for submitting a transaction.
- minimumLedgerSlot
- Returns the lowest slot the node still has ledger data for.
- requestAirdrop
- Requests test tokens on a development or test network.
- sendTransaction
- Broadcasts a signed transaction to the cluster.
- simulateTransaction
- Runs a transaction against current state without submitting it.
Common JSON-RPC errors
What you are most likely to hit calling this interface, and what to do about it.
- -32700
- Parse error. The request body was not valid JSON. Check that the body is serialised JSON and that Content-Type is application/json.
- -32600
- Invalid request. The JSON parsed, but it is not a well-formed JSON-RPC call. Include jsonrpc, method and id fields. A batch must be a non-empty array.
- -32601
- Method not found. This node does not expose the method you called. Check the spelling and the namespace, and confirm the method is in the list above for this network. Tracing methods in particular are not enabled everywhere.
- -32602
- Invalid params. The method exists but the arguments are wrong. Check argument order and types. Most EVM methods want hex-encoded quantities, and a block parameter such as latest or a hex height.
- -32603
- Internal error. The node failed while handling an otherwise valid request. Retry with backoff. If it persists on one method, it is usually that method rather than the node.
- -32000
- Server error. A catch-all the node uses for execution failures, most often a reverted call or a request over a limit. Read the accompanying message. Execution reverted means your call failed on chain, not in transport. Narrow the block range if you are querying logs.
- HTTP 429
- Rate limited. You have exceeded the free tier request allowance. Back off and retry, batch reads into single calls, or move to a dedicated endpoint for production traffic.
- HTTP 413
- Payload too large. The request body exceeded what the node accepts. Split large batches into smaller ones.
WebSocket
16 methodsOne connection held open, so the node pushes events to you instead of waiting to be asked.
You subscribe once and the node sends a message every time the thing you asked about happens: a new head, a log matching your filter, a transaction hitting the pool. Each subscription hands back an id you later pass to unsubscribe. It replaces the polling loop outright, and it is the only way to hear about something in the same second it occurs.
Where it fits
- Live data: new blocks, contract logs, pending transactions, confirmations.
- Cutting request volume, since one subscription replaces a method polled on a timer forever.
- Reacting fast, because you hear about an event as the node sees it rather than on your next poll.
Trade-offs
- Nothing is replayed. Whatever was emitted while the socket was down is gone for good.
- Keep the last block you handled, and after reconnecting backfill the gap over JSON-RPC before trusting the stream again.
- Idle connections get dropped by proxies. Send periodic pings, and reconnect with backoff rather than in a tight loop.
- Endpoints cap subscriptions per connection, so share one connection instead of opening several.
Enabled and tested methods
Read live from the endpoint, so this is what it actually serves today rather than what the protocol allows in principle. Anything not on this list returns a method-not-found error.
- accountSubscribe
- Subscribes to changes on an account.
- accountUnsubscribe
- Cancels an account subscription.
- logsSubscribe
- Subscribes to transaction logs matching a filter.
- logsUnsubscribe
- Cancels a logs subscription.
- programSubscribe
- Subscribes to changes on accounts owned by a program.
- programUnsubscribe
- Cancels a program subscription.
- rootSubscribe
- Subscribes to new roots being set by the validator.
- rootUnsubscribe
- Cancels a root subscription.
- signatureSubscribe
- Subscribes to the confirmation of a transaction signature.
- signatureUnsubscribe
- Cancels a signature subscription.
- slotSubscribe
- Subscribes to slot changes.
- slotsUpdatesSubscribe
- Subscribes to detailed slot progress updates.
- slotsUpdatesUnsubscribe
- Cancels a slot updates subscription.
- slotUnsubscribe
- Cancels a slot subscription.
- voteSubscribe
- Subscribes to votes observed in the gossip network.
- voteUnsubscribe
- Cancels a vote subscription.
Common WebSocket errors
What you are most likely to hit calling this interface, and what to do about it.
- 1006
- Connection closed abnormally, with no close frame. Usually an idle timeout, a network change, or a proxy dropping the connection. Reconnect with exponential backoff and re-establish every subscription. Send periodic pings to keep the connection from idling out.
- 1013
- Try again later. The server is shedding load or you have opened too many connections. Back off before reconnecting, and reuse one connection for many subscriptions rather than opening one each.
- -32601
- Method not found. Subscriptions use a different method name from the HTTP interface. Use eth_subscribe and eth_unsubscribe on EVM chains, or the chain-specific subscribe methods listed above.
- Missed events
- Not an error code. Anything emitted while the socket was down is gone, because subscriptions are not replayed on reconnect. Record the last block you processed, and after reconnecting backfill the gap over JSON-RPC before trusting the live stream again.
- HTTP 429
- Rate limited during the upgrade handshake, or too many concurrent subscriptions. Reduce concurrent connections and consolidate subscriptions, or move to a dedicated endpoint.
gRPC
Binary messages over HTTP/2, checked against a schema both ends share.
Clients are generated from that schema rather than written by hand, so a renamed field breaks your build instead of quietly returning nothing at three in the morning. Messages are protocol buffers, appreciably smaller than the JSON equivalent, and a single connection multiplexes many calls at once rather than queueing them.
Where it fits
- Backends making a very large number of calls, where JSON parsing and connection setup start to dominate.
- Streaming in either direction, without the reconnect bookkeeping a WebSocket needs.
- Catching schema drift at compile time rather than in production.
Trade-offs
- You cannot inspect it with curl or a browser. Reach for grpcurl instead.
- Nothing works until you have the schema and a generated client, so it is a poor fit for a quick look.
- Not every gateway publishes a method list. Use server reflection to see what is actually exposed.
This endpoint does not publish a machine-readable method list, so there is nothing to enumerate here. Use server reflection against the endpoint above to see what it exposes.
Common gRPC errors
What you are most likely to hit calling this interface, and what to do about it.
- UNAVAILABLE
- The service could not be reached, or the connection dropped mid-call. Retry with backoff. This code is explicitly safe to retry.
- DEADLINE_EXCEEDED
- The call did not complete within the deadline you set. Raise the deadline for expensive calls, or page the request into smaller ones.
- RESOURCE_EXHAUSTED
- A quota or rate limit was hit, or the message exceeded the size limit. Back off and retry, reduce concurrency, or raise the client max message size for large responses.
- INVALID_ARGUMENT
- The request message was rejected as malformed, independently of system state. Check the field types against the schema. Retrying without changing the request will not help.
- NOT_FOUND
- The requested object, transaction or checkpoint does not exist on this node. Confirm the identifier, and that the node retains history that far back.
- UNIMPLEMENTED
- The service or method is not enabled on this endpoint. Check the service name against the list above; use server reflection to see what is actually exposed.
Indexed Solana Data Insights
Complete on-chain data access, no infrastructure to run yourself. Query wallets, tokens, NFTs, and transaction history with lightning-fast APIs.
Get Wallet Portfolio
Fetch all token balances for a wallet on Solana.
Get Token Exchange Rates
Check exchange rates for tokens and fiat on Solana.
Check Solana Malicious Address
Verify if an address on Solana is flagged as malicious.
Get Token Information
Fetch detailed information about a token on Solana.
Get Solana Wallet Transactions
Retrieve all Solana transactions for a wallet, including internal transfers.
Web3 Name Service on Solana
Resolve Web3 names to blockchain addresses instantly with a unified API.
Real-time Solana Alerts
Real-time webhooks for on-chain events. Stop polling the network - get instant alerts for transactions, smart contract events, and wallet activities.
About Solana
What it is, and guides for building on it.
The Solana RPC documentation provides developers with the necessary tools to interact with the Solana blockchain programmatically. Solana is a high-performance blockchain that uses a unique consensus mechanism called Proof-of-History (PoH), combined with Proof-of-Stake (PoS), to achieve fast transaction speeds and high throughput. The documentation includes API endpoints for querying blockchain data, managing transactions, and deploying smart contracts. Solana is ideal for decentralized finance (DeFi), NFTs, and scalable decentralized applications requiring low-latency and high performance.
From the Tatum blog
Tatum WebSocket: Stream Blockchain Data in Real Time
Learn how Tatum WebSocket subscriptions stream real time blockchain data from Ethereum, Polygon, and Solana without p...
What's new
Stream Blockchain Data: WebSockets Are Here
Stop polling. Start streaming. Tatum WebSocket subscriptions push on-chain events to your app the instant they happen...
Data API: Liquid Staking APIs
We’re introducing the Tatum Liquid Staking API, enabling developers to retrieve liquid staking balances and supported...
Solana Yellowstone gRPC
Solana Yellowstone gRPC is live on Tatum. You can keep a single gRPC connection open to Mainnet and receive transacti...
Solana Alpenglow: What Solana’s Biggest Upgrade Means for Builders
Solana is overhaulng its consensus layer. Discover how Alpenglow brings 150ms finality to the network and what it mea...
Staking API Explained: Native Staking vs Liquid Staking
Learn how native and liquid staking work on Ethereum and Solana, and how to build with a Staking API to track rewards...
Scaling on Solana: Navigating Institutional and Production Infrastructure
Learn why institutions are building on Solana and how to navigate architecture, RPC, and gRPC for production-grade We...
Solana gRPC Streaming: How to Use Yellowstone to Stream Transactions, Account...
Learn how to stream real-time Solana data using Yellowstone gRPC. This guide covers account updates, transactions, sl...
Roadmap & Blockchain Upgrades to Watch in 2026
A builder-focused overview of major blockchain upgrades planned for 2026, covering Ethereum, Solana, Polygon, BNB Cha...
Agave 3.0: What Does a Solana’s 40% Performance Boost Means for Builders
Agave 3.0, the latest Solana client from Anza, brings major performance and RPC upgrades. Here’s what changes for dev...
Frequently Asked Questions
Everything you need to know about Solana RPC endpoints
Quick Answer: What is Solana RPC?
RPC (Remote Procedure Call) is the standard way to interact with the network programmatically - reading on-chain data, submitting transactions, and deploying smart contracts through JSON-RPC calls. The free tier ships 5 requests per minute with no registration required, which covers most learning and testing workflows. Production applications typically move to Tatum Premium for 200 requests per second and enterprise-grade reliability.
What is Solana RPC?
How do I connect to Solana using these RPC endpoints?
What are the rate limits for the free RPC tier?
Is Solana RPC free forever?
What happens if I exceed the free tier rate limit?
Can I use these Solana RPC endpoints with MetaMask?
Are these RPC endpoints secure?
What's the difference between mainnet and testnet RPC endpoints?
How do I troubleshoot RPC connection errors?
Can I use these endpoints in production?
Explore Other Blockchains
Discover RPC endpoints for other popular blockchain networks