Solana’s timeline is organized around slots of roughly 400 milliseconds. User-visible confirmation depends on the commitment level you require (processed, confirmed, or finalized). Fees usually sit below a fraction of a cent. That speed and cost profile changed how developers think about onchain apps.
It also changed what a Solana API needs to do. A wallet refresh that batches ten reads on Ethereum may issue fifty fine-grained reads on Solana. Latency-sensitive trading systems may care about sub-second reaction time. That matters especially when monitoring pools, quotes, and transaction landing.
This guide explains what a Solana API is in 2026. It covers data types, transports, providers, pricing models, and the patterns that work at production scale. If you want a curated list of vendors first, see our best Solana APIs roundup.
Everything here is provider-neutral until §12, where we lay out a fair comparison table.
If you’re new to crypto APIs in general, our beginner’s guide to crypto APIs covers the fundamentals across all chains before going Solana-specific.
How to use this guide. Read top to bottom for a full mental model. Or jump to §6 for transports, §10 for the decision factors, and §12 for the provider table.
- A Solana API is a hosted layer between your app and a Solana cluster.
- SPL, Token-2022, and compressed NFTs each need different read paths.
- REST and WebSocket cover most apps; Geyser gRPC unlocks high-throughput indexing.
- Priority fees and Jito bundles matter for reliable transaction landing.
- MCP servers expose Solana data to AI agents through scoped read access.
On a budget? See these cheaper market data alternatives.
1. What a Solana API actually means
A Solana API is a hosted interface that lets your application read from and write to a Solana cluster. It abstracts the JSON-RPC surface, indexes onchain state, and often layers extras like webhooks, streams, and pricing.
Under the hood, Solana exposes a JSON-RPC API at the validator level. Methods like getBalance, getAccountInfo, and sendTransaction are part of that surface. A Solana API provider runs validators or RPC nodes, sometimes adds indexers, and gives you a managed endpoint.
Some providers go further. They ship REST helpers, GraphQL layers, Geyser streams, NFT-specific endpoints, or MCP servers for AI agents. The right shape depends on what you are building.
The account model in plain English. Solana stores all state in objects called accounts. A wallet is an account. A token balance lives in an account. A program (the Solana word for smart contract) is also an account. Every account has a public key address. Every account has an owner. The owner is another program that controls how the data inside changes.
Account ownership is usually established during initialization. It determines which program may modify the account data. In normal app flows, treat the owner as the key field. It tells you how to decode and interact with the account. A user wallet is owned by the System Program. An SPL token balance is owned by the SPL Token program. A market state is owned by the DEX program that runs it.
That has direct consequences for API design. You do not query “the Solana network” as one blob. You query specific accounts at specific addresses. To list a wallet’s tokens, you fetch all accounts owned by the SPL Token program. The authority field must equal that wallet. To show a Raydium pool, you fetch the pool’s account by address. Then you decode its data layout. At the base RPC layer, most state reads eventually resolve to accounts. Higher-level APIs add transactions, signatures, blocks, assets, prices, and indexed abstractions on top.
Watching costs? See these cheaper market data API alternatives.
2. Quick decision table
| If you need | Start with |
|---|---|
| SOL and SPL token balances | REST or RPC with portfolio endpoints |
| Transaction history for a wallet | Indexed REST or getSignaturesForAddress |
| Real-time price feeds | WebSocket price stream |
| Swap quotes | Aggregator quote endpoint (Jupiter or similar) |
| NFT data including cNFTs | DAS API (getAsset, getAssetsByOwner) |
| Indexed account changes | Geyser gRPC or webhook streams |
| AI assistant access | MCP server with scoped read tools |
| Several of these at once | All-in-one Solana data provider |
3. Data categories you will encounter on Solana
Solana data splits into a handful of distinct shapes. Each has its own access pattern and pricing implications.
a. Account data
Solana stores everything as accounts. A wallet is an account. A token holding is an account. A program (smart contract) is also an account. You read account state with getAccountInfo for one address or getProgramAccounts for many.
What getAccountInfo returns. A successful call yields five fields. lamports is the SOL balance in micro-units. owner is the program that controls the account. data is the raw byte blob whose layout depends on the owner program. executable is a boolean that marks program accounts. rentEpoch tracks rent-exempt status.
The data blob is opaque until you know the layout. A System Program account holds nothing useful in the data field. It just holds SOL. A token account holds 165 bytes that decode into mint, owner, amount, and a few flags. A market account on a DEX holds hundreds of bytes of order book state. You either decode it yourself with an IDL, or you let a provider do it for you.
System accounts and program-owned accounts behave differently in practice. A System Program account is a plain wallet. It can send SOL and sign transactions. A program-owned account holds structured state and cannot sign anything. Knowing which is which avoids wasted reads against accounts that will never carry the data you expected. If you are comparing wallet-data providers more broadly across chains, see our list of the best crypto wallet APIs.
Why getProgramAccounts is heavy. The method scans every account owned by a program and filters by your criteria. On a popular program with millions of accounts, that scan is expensive. Most providers throttle it heavily or charge premium credits. Indexers solve this. They ingest the firehose into a database, then serve queries from there instead of touching the validator.
b. Token data: SPL and Token-2022
SPL Token is the classic fungible token standard on Solana. Token-2022 is the newer extensions program. It adds optional features like transfer fees, confidential transfers, interest bearing balances, and a metadata pointer.
If your API only knows SPL, you will misread Token-2022 mints. Confirm coverage for both programs and their relevant extensions.
The two programs in practice. SPL Token was the original. One single program runs every classic fungible token on Solana. The deployed program ID is widely known, and the mint count crossed a million long ago. Most major stablecoins, governance tokens, and meme coins minted before 2024 use this program.
Token-2022, also called Token Extensions, launched in 2024 and saw steady adoption through 2026. The program lives at a different address and adds opt-in extensions. Several extensions are worth knowing. Transfer fees skim a percentage on every transfer. Confidential transfers use zero-knowledge proofs to hide amounts. Metadata pointer embeds name and symbol directly on the mint. Mint close authority lets the issuer close the mint and reclaim rent. Default account state starts new token accounts as frozen. Permanent delegate is a wallet that can always move tokens. Transfer hooks run custom logic on every transfer.
This matters for any wallet or balance API. For associated token accounts, the token program ID is part of the derivation. SPL Token and Token-2022 holdings can resolve to different account addresses. The same wallet and mint can map to two distinct accounts. Complete wallet views should check both programs where relevant. Skip one and you are showing partial portfolios. Tools that promise full Solana support must handle both layouts. They also handle extension-specific math, such as subtracting transfer fees from the displayed amount.
c. DEX and swap data
A large share of Solana swap integrations use aggregators such as Jupiter. Aggregators route across pools on Raydium, Orca, Phoenix, and others. A Solana API can surface aggregator quotes, pool reserves, or raw swap events. Pick the layer your app actually needs.
The venues underneath. Jupiter is the routing aggregator. It queries every DEX program it indexes and returns the best price for a given input size. Raydium runs both classic AMM pools and a concentrated liquidity market maker. Orca operates Whirlpools, its concentrated liquidity venue. Phoenix is an orderbook-based market that behaves more like a centralized exchange.
A swap quote is harder to serve than a price. A price is a single number per pair. A quote depends on input size, slippage tolerance, the route chosen, and how many hops the router stitches together. Two requests one second apart can return different routes if liquidity moved. Apps that show “this is what you will receive” must re-quote often and refresh on the user’s input changes.
DEX-focused APIs typically expose four endpoints. A quote endpoint returns the price and route for an intended swap. A swap-instructions endpoint returns the Solana instructions you sign and send. A pools endpoint lists liquidity venues and their reserves. A tokens endpoint maps mint addresses to metadata. Build against these four shapes and most DEX integrations look the same. For a broader cross-chain look at swap and lending data, see our roundup of the best DeFi APIs.
d. NFT data including cNFTs
Solana supports both standard NFTs and compressed NFTs (cNFTs). cNFTs use offchain data verified against an onchain Merkle root. They cost a tiny fraction of a normal mint and enable collections of millions of items.
You access both via the Digital Asset Standard (DAS) API, with methods like getAsset and getAssetsByOwner. Not every Solana provider implements DAS fully.
Standard NFTs follow Metaplex. A regular SPL NFT is an SPL Token mint with a supply of one and zero decimals. Its metadata sits in a Metaplex Token Metadata account derived from the mint. The metadata holds the name, symbol, URI, and creator list. That URI points to a JSON file hosted offchain. The file lives on Arweave or IPFS and holds the image and trait data.
cNFTs change the storage layout. Per-item data lives in a Merkle tree maintained offchain by an indexer. Only the tree’s root hash sits onchain. To prove a cNFT exists or to transfer it, you supply a Merkle proof. The indexer regenerates the proof from its tree state.
cNFTs make very large collections much cheaper to mint and index than standard NFTs. Most per-asset data is compressed and verified against onchain state. Exact cost depends on rent, SOL price, and implementation. That design made airdrops of millions of items practical on Solana.
DAS is the indexer API that resolves cNFT data. Key methods are getAsset for one NFT by ID and getAssetsByOwner to list a wallet’s holdings. Use getAssetProof to fetch the Merkle proof needed for transfer or burn. DAS support is offered by several Solana infrastructure providers. Verify the exact methods you need, such as getAsset, getAssetsByOwner, and getAssetProof, before committing. Without DAS, cNFTs are basically invisible to wallets. Regular RPC methods only see the tree root, not the items inside.
e. Transaction data
Solana transactions are signed client-side and submitted via RPC. Priority fees increase the chance of inclusion under load. Jito bundles let you submit ordered transaction groups. They can help with landing reliability, revert protection, and certain MEV or ordering risks. Treat this as risk reduction, not a full guarantee.
Priority fees in detail. A priority fee is extra lamports paid per compute unit. It is an incentive for the current block leader. Pay it to be included ahead of others when capacity is tight. During quiet periods, the base fee is enough. During mints or volatile markets, transactions without a competitive priority fee drop on the floor.
The RPC method getRecentPrioritizationFees returns recent fee data across specified accounts. Use it to size your own fee. A common pattern is simple. Read the 75th percentile of the last 150 slots for the accounts your transaction touches. Set your fee at or just above that level. Dynamic fee estimation is now standard in production wallets and bots.
Jito and bundles. Jito is a popular Solana validator client and a separate block engine service. The block engine processes “bundles,” which are ordered sets of transactions that either execute together or not at all. Bundles can help with landing reliability, revert protection, and certain MEV or ordering risks. Treat this as risk reduction, not a full guarantee.
Bundles also unlock atomic multi-step strategies that span several signers or programs. Arbitrage between two pools relies on bundle atomicity. Liquidations that move collateral and repay in one shot do too. So do flash-style routes across multiple programs. Anyone doing serious DeFi trading on Solana eventually integrates Jito for both inclusion reliability and ordering control.
f. Staking and validator data
Staking data covers stake accounts, validator identities, commission rates, vote accounts, and epoch reward history. A staking dashboard or wallet showing yield needs these reads in addition to plain balances.
g. Geyser and gRPC streams
Geyser is a plugin interface inside the Solana validator. It emits account updates, slot changes, and transactions as a stream. Providers expose this via gRPC for very low latency reads.
Geyser shines for indexers, MEV bots, and any system that has to react inside one slot. It is heavier and more expensive than REST.
How Geyser actually works. Solana Labs introduced Geyser as a validator plugin architecture. A plugin is a shared library loaded into the validator process at startup. It receives a raw firehose: every account update, every transaction, and every block. Events arrive in the order the validator sees them.
The simplest plugins write events to disk or a message queue. The serious ones speak gRPC. They stream events to remote consumers in real time. gRPC streaming over Geyser is how heavy indexers ingest at scale. Triton’s Yellowstone gRPC is the main commercial option for streaming Solana events at scale.
Use cases follow the firehose shape. Building your own indexer over a single program. Real-time MEV systems that must react within one slot. Custom dashboards that show every swap or liquidation as it lands. Audit pipelines that record every account state change for compliance. If your workload only needs occasional account reads, Geyser is overkill and WebSocket subscriptions are the cheaper choice.
h. AI and MCP servers
Model Context Protocol (MCP) is a standard for connecting AI agents to external tools and data. An MCP server wraps Solana endpoints as discrete tools an agent can call by name. Read access is the safe default.
4. Real-world use cases on Solana
- SOL + SPL + Token-2022 balances
- Transaction history with parsing
- Real-time price feeds
- cNFT inventory via DAS
- Stake account positions
- Geyser stream for pool state
- Aggregator quotes (Jupiter)
- Priority fee oracle
- Jito bundle submission
- Slot-level latency telemetry
- Pool reserves across venues
- Token metadata and decimals
- Route simulation endpoints
- Versioned transaction support
- Failure replay logs
- DAS coverage for cNFTs and standard NFTs
- Collection-level queries
- Royalty and creator data
- Mint and burn events
- Webhook on transfers
- Full historical tx log per wallet
- Parsed transfers by program
- Token-2022 transfer fee handling
- Historical USD pricing
- Staking reward attribution
- MCP server with scoped read tools
- Wallet, DeFi, and price tools
- Cached portfolio summaries
- Per-tool rate limits
- Audit log of agent calls
5. Anatomy of a Solana API call
Here is a generic shape using a neutral host. The structure is the same across most providers.
POST https://api.example.com/v1/solana/getBalance
Headers:
Content-Type: application/json
X-API-KEY: sk_live_xxx
Body:
{
"jsonrpc": "2.0",
"id": 1,
"method": "getBalance",
"params": ["3xY...wallet_pubkey..."]
}
The path identifies the chain and method. Headers carry your key. The body holds parameters. Keys live on your server, never in client code.
6. Transports comparison
REST and WebSocket describe how apps communicate. MCP is a tool-call layer for AI agents. Geyser is a high-throughput stream from the validator.
| Transport | How it works | Best for | Trade-off |
|---|---|---|---|
| REST | Request and response over HTTPS | Balances, history, occasional queries | Not push, polling adds latency |
| WebSocket | Persistent socket pushes updates | Live prices, slot subs, account changes | Reconnect logic and backpressure |
| Geyser gRPC | Direct validator plugin stream | Indexers, MEV, real-time analytics | Higher cost, ops overhead |
| MCP | Tool calls from an AI agent | Agents reading Solana wallet and DeFi data | Scope and rate limits per tool |
Choosing between WebSocket and Geyser. The two streams look similar from a distance, but the cost and scope differ. WebSocket pushes updates for the specific subscriptions you open. You ask for one account or one program log, and you receive updates only for that. Geyser gRPC pushes the firehose: every account on every program, every transaction, every slot.
The rule of thumb is the subscription count. App-level real-time work with a few hundred subscriptions is a WebSocket job. Indexer-level work that watches everything across a program is a Geyser job. Picking the wrong side wastes money in one direction and falls behind under load in the other.
Pricing follows that split. WebSocket is usually included in standard plans, often metered against the same request budget as REST. Geyser gRPC is almost always a premium tier on its own. Pricing is per-stream and reflects the raw bandwidth and processing it consumes.
7. Authentication, read vs write, and security
Most Solana API methods are read-only and only require a key. Write methods broadcast transactions you already signed locally with a private key. In a normal non-custodial Solana flow, the transaction is signed client-side before submission. So the RPC provider receives a signed transaction, not the private key. Custodial or server-side signing setups have different risk profiles.
Why Solana writes are different from EVM writes. On Solana, a transaction is signed entirely client-side before it ever leaves your machine. You build the instructions and sign the whole payload with your ed25519 private key. Then you submit a finished signed blob to the RPC. The API receives bytes and forwards them. It has no opportunity to alter or inspect the signing process.
This non-custodial pattern is structurally safer than some EVM setups. Certain EVM integrations use API-side signing services. With a client-signed Solana flow, the same separation always holds. The provider sees the signed blob and the signature. The key stays on the signing device. Custodial or server-side signing setups change this profile and should be evaluated separately.
Common reads:
getBalance: native SOL balancegetTokenAccountsByOwner: SPL token holdingsgetAsset(DAS): NFT or cNFT metadatagetSignaturesForAddress: transaction history
Common writes:
sendTransaction: submit a signed transaction- Priority fee instruction in the signed payload
- Jito bundle send for atomic groups
simulateTransaction: dry-run before signing
Security checklist:
- Keep API keys on the server, never in client bundles.
- Sign transactions in a secure environment, ideally a hardware wallet.
- Always simulate before broadcasting in production.
- Set per-key rate limits and budget alerts.
- Rotate keys on staff offboarding and after suspected leaks.
- Use ed25519 keys only on hardware where possible.
- Separate hot and cold wallets by purpose and balance size.
- Simulate every transaction before broadcasting on mainnet.
8. Rate limits, credits, and pricing
Solana providers price along three common axes: requests per second, monthly request totals, and credit-weighted method costs. Heavier methods (like getProgramAccounts with filters) often cost more credits than light ones.
Worked example: wallet app. Say you run a Solana wallet app with 1,000 active users. Each user triggers 5 wallet refreshes per day. Each refresh calls one getTokenAccountsByOwner plus 3 price calls. That works out to 4 calls per refresh. 20 calls per user per day. 20,000 calls per day in total. Layer in background sync and webhooks. Real volume often lands near 200,000 requests per day for a busy app.
The arithmetic matters. 200,000 requests per day is 6 million per month. Under a flat request model with 6 million requests included, you stay inside the tier. Add a 25 percent month-over-month growth rate and you blow through that tier in roughly 90 days. Plan headroom into your sizing, not just current volume.
Worked example: trading bot. A DEX trading bot is heavier. Imagine 50 swaps per minute during active hours, around 2,500 trades per day. Each swap fans out into a few calls. getRecentPrioritizationFees sizes the fee. simulateTransaction confirms the route still works. sendTransaction broadcasts. Two or three quote calls happen beforehand. That is roughly 6 calls per swap and 15,000 calls per day from the swap path alone.
Layer on continuous pool polling and the daily count climbs into the hundreds of thousands. A credit-based provider may charge 5 credits for simulate, 10 for prioritization fees, and 1 for sendTransaction. The same workload costs 15,000 requests on a request-based plan. It can consume 100,000 credits on a credit-based plan. Bundle senders like Jito typically sit on their own pricing entirely and bill per bundle landed.
Always run your specific mix against the calculator the provider ships, not the marketing number on the homepage.
9. When the wrong Solana API type is chosen
- Polling REST every second for live prices: high latency, wasted requests.
- Using a multichain endpoint that only partially implements Solana methods.
- Picking a Token-only API and missing Token-2022 balances entirely.
- Querying standard NFT endpoints for cNFTs and getting empty responses.
- Running an indexer on REST instead of Geyser: you fall behind in minutes.
- Sending transactions without priority fees during congestion: drops everywhere.
10. How to choose your Solana API
11. Common mistakes when choosing
- Choosing based on free tier alone, then hitting a steep tier cliff.
- Skipping the cNFT and DAS coverage test.
- Ignoring region or latency from your servers.
- Not testing under realistic concurrency.
- Assuming all providers support Geyser equally well.
- Forgetting Token-2022 transfer fee math.
- Hard-coding a single provider with no failover.
- Picking a multichain RPC for a Solana-deep workload.
- Sending transactions without dynamic priority fees.
- Choosing for today’s volume, not 12 months out.
12. Examples of Solana API providers
The table below is not a ranking. Each provider has a fair slot with equal weight. Verify the specifics that matter for your use case before you commit.
| Provider | Common fit | Not ideal for | What to verify |
|---|---|---|---|
| CoinStats Solana API | Wallet balances, SPL token holdings, transaction history, DeFi positions, and MCP-based agent access | Teams that need to run custom validator infrastructure | Token-2022, cNFT, protocol coverage, latency, and exact endpoint support for your workload |
| Triton One | High-performance RPC with Geyser plugin | Teams without indexing engineering capacity | Pricing at scale, region availability |
| Syndica | Reliable mainnet-beta RPC with archival history | Specialized cNFT or DAS-only workloads | Method-level rate limits |
| Shyft | Indexed Solana data and SDK ergonomics | Direct chain reads at low latency | Webhook costs and rate windows |
| Bitquery | GraphQL queries across chains including Solana | Real-time RPC streaming | Query cost shape at scale |
13. Getting started: your first Solana API call
Three quick examples that fetch a SOL balance. Swap in your own host, key, and address.
curl
curl -X POST "https://api.example.com/v1/solana" \
-H "Content-Type: application/json" \
-H "X-API-KEY: $KEY" \
-d '{"jsonrpc":"2.0","id":1,"method":"getBalance","params":["YOUR_PUBKEY"]}'
JavaScript (fetch)
async function getBalance(pubkey) {
try {
const res = await fetch("https://api.example.com/v1/solana", {
method: "POST",
headers: {
"Content-Type": "application/json",
"X-API-KEY": process.env.SOLANA_KEY,
},
body: JSON.stringify({
jsonrpc: "2.0",
id: 1,
method: "getBalance",
params: [pubkey],
}),
});
if (!res.ok) throw new Error("HTTP " + res.status);
const data = await res.json();
return data.result?.value;
} catch (err) {
console.error("getBalance failed", err);
return null;
}
}
Python (httpx)
import os
import httpx
def get_balance(pubkey: str):
url = "https://api.example.com/v1/solana"
headers = {
"Content-Type": "application/json",
"X-API-KEY": os.environ["SOLANA_KEY"],
}
payload = {
"jsonrpc": "2.0",
"id": 1,
"method": "getBalance",
"params": [pubkey],
}
try:
with httpx.Client(timeout=10.0) as client:
res = client.post(url, json=payload, headers=headers)
res.raise_for_status()
return res.json().get("result", {}).get("value")
except httpx.HTTPError as e:
print("getBalance failed:", e)
return None
- Do not embed API keys in mobile or browser bundles.
- Do not sign transactions on the provider side, ever.
- Do not poll
getBalancein a tight loop, subscribe instead. - Do not skip
simulateTransactionfor important writes. - Do not assume one provider covers Token-2022 and cNFTs by default.
- Do not ignore commitment levels, they change what you actually see.
14. Best practices when building on Solana
- Cache aggressively. Token metadata, decimals, and program IDs rarely change.
- Split hot and cold paths. Live UI on WebSocket, history on REST, analytics on Geyser.
- Use Geyser for indexing. Replaying REST falls behind under load.
- Set priority fees dynamically. Query
getRecentPrioritizationFeesand adapt. - Adopt versioned transactions and ALTs. Address Lookup Tables reduce payload size.
- Normalize on SPL mint address. Use it as the canonical token ID across your system.
- Pick commitment levels intentionally. Processed for speed, confirmed for UI, finalized for accounting.
- Use
getMultipleAccountsinstead of N parallel calls. One batched call replaces manygetAccountInforoundtrips and cuts your request count sharply. - Stagger expensive polling across multiple keys. Providers usually rate-limit per-key, so spreading heavy work across keys avoids 429s on any single one.
- Always check the commitment level on writes.
processedis for UX speed only and can roll back.finalizedis for safety in accounting flows.confirmedis the safe default for most cases in between.
15. The future: AI agents, MCP, and what is emerging on Solana
The next frontier is agent-native access. AI agents do not browse documentation. They call tools by name with arguments. An MCP server turns a Solana API into that tool surface.
For Solana MCP servers, read-only tools should be the default design choice. Writes should require explicit human approval, transaction simulation, and external signing. Safety comes from how you scope tools and authenticate users, not from MCP itself.
CoinStats Crypto API ships an MCP Server that exposes Solana wallet, DeFi, and portfolio data to AI agents. Other ecosystems are converging on similar patterns. Read-only defaults keep blast radius small.
Beyond agents, watch Firedancer and Anza work on validator clients. Faster, more diverse validators mean lower latency and stronger network resilience over time.
16. Integration checklist
- Does this provider cover SPL, Token-2022, and cNFTs natively?
- What is the documented p99 latency from my server region?
- Is Geyser gRPC available, and at what tier?
- How does pricing scale with my projected 12-month volume?
- Are priority fee and Jito endpoints first-class?
- What is the error code reference, and how granular?
- How does the status page and incident history look?
- Are there SDKs in my languages, with maintenance signals?
- What happens to my keys if I leave?
- Is there an MCP server or agent-friendly surface for AI use cases?
17. Conclusion
Solana rewards apps that are built with its model in mind. Fast settlement, low fees, and an account-driven state shape every read and write you will make. The right API hides the mechanics without hiding the choices.
Whether you ship a wallet tracker, a trading bot, or an NFT marketplace, the same checklist applies. The agent-driven assistant case is no different. Coverage, latency, pricing, and a clear path from prototype to scale matter more than any single feature.
Start with a small, real workload. Measure honestly. Pick the provider whose answers match your numbers, not the one with the loudest pitch.
Map your use case to the data categories above. Pick two providers from the table and test them against your actual workload. The one whose latency, coverage, and bill match your numbers wins. That is the only test that matters at this stage.
Frequently asked questions
What is Solana’s account model?
Every entity on Solana lives in an account. A wallet, a token holding, and a program are all accounts. Each account has an owner, a lamport balance, and a data field. System accounts are plain wallets owned by the System Program and just hold SOL. Program-owned accounts hold structured data controlled by their owner program. Reads target accounts; writes modify them through programs.
What is the difference between SPL and Token-2022?
SPL is the original Solana fungible token standard. Token-2022 is a newer program. It adds optional extensions: transfer fees, confidential transfers, interest bearing balances, metadata pointers, and more. Both are live; mints choose one. Token accounts under each program live at different derived addresses, so any complete wallet view has to query both.
What are compressed NFTs (cNFTs)?
cNFTs store most data offchain, with only a Merkle root anchored onchain. They make very large collections much cheaper to mint and index than standard NFTs. Exact cost depends on rent, SOL price, and implementation. You access them via the DAS API with methods like getAsset and getAssetsByOwner. Without a DAS-compliant provider, cNFTs are effectively invisible to your app.
What is a Solana validator?
A validator is a node that participates in consensus, processes transactions, and earns rewards. Stakers delegate SOL to validators in exchange for a share of those rewards.
What is mainnet-beta versus devnet?
Mainnet-beta is the live, value-bearing network. Devnet is a free testing network with fake SOL. Testnet sits between, used by validator teams. Always build against devnet first.
What are commitment levels?
Solana exposes three: processed, confirmed, and finalized. Processed is fastest but can be rolled back. Confirmed is the common default. Finalized is the strongest guarantee, best for accounting.
What are priority fees?
Priority fees are extra micro-lamports per compute unit paid to nudge a validator to include your transaction. They matter most during congestion, when blocks are full. Use getRecentPrioritizationFees to read recent levels for the accounts your transaction touches. Set your fee dynamically at or above the 75th percentile of recent slots to balance landing odds and cost.
What is Jito and why use bundles?
Jito provides a block engine and bundle relay. Bundles are ordered sets of transactions that execute together or not at all. They can help with landing reliability, revert protection, and certain MEV or ordering risks. Use cases include arbitrage between two pools and liquidations that move collateral and repay in one shot. Treat this as risk reduction, not a full guarantee. Many providers expose Jito send paths alongside standard RPC.
What is Geyser?
Geyser is a plugin interface inside the Solana validator. A Geyser plugin is loaded into the validator process. It receives every account update, transaction, and slot as it happens. Production providers expose this firehose over gRPC streaming for very low latency indexing. It is the right choice for indexers and MEV systems and overkill for app-level real-time work.
What is the DAS API?
Digital Asset Standard. A common interface for reading NFTs, cNFTs, and other digital assets on Solana. Key methods include getAsset, getAssetsByOwner, and getAssetsByGroup.
Can I read Solana data without a private key?
Yes. All read methods are public. You only need a private key to sign transactions you submit yourself. In a normal non-custodial flow, signing happens client-side. The RPC provider receives a signed transaction rather than the key. Custodial or server-side signing setups have different risk profiles.
REST vs WebSocket for Solana?
Use REST for occasional queries: balances, history, one-off reads. Use WebSocket for live UI: price ticks, slot subs, account change notifications. Many apps mix both.
Is Solana RPC free?
Public RPC endpoints are useful for testing. Production apps usually need a dedicated provider for predictable limits, support, and reliability.
What are Firedancer and Anza?
Firedancer is a new high-performance Solana validator client built by Jump Crypto. Anza is the team developing the Agave client. Multiple validator client implementations make the network more resilient. If a bug hits one client, validators on a different client keep producing blocks and the chain keeps moving. Client diversity is a structural property worth tracking.
How do rate limits work?
Most providers cap requests per second, per minute, or per month. Some weight methods by credit cost. Read the docs carefully and design retries with backoff around 429 responses.
Best Solana API for an AI agent?
Look for a provider that ships an MCP server with scoped Solana tools. That removes the integration work of wrapping RPC methods as agent tools yourself.






