Skip to main content
Sodae Solana RPC

Make a request

Standard Solana SDKs work unchanged. Pass the URL with ?api-key= appended, or set the x-token header if the SDK lets you add headers:

From a web page

Browsers can call RPC directly at https://ams.tls.sodae.io. Give the page its own key and limit it to your site with a domain rule; never put a server key in front-end code.

Batches

Send a JSON array of requests to get an array of responses:
A batch counts as one request against your request rate. Each call in it costs its own credits, and each sendTransaction in it counts against your sendTransaction limit. Each call in a batch is answered on its own. If one call cannot be served, its entry carries the error with its id, the other calls still return their results, and the failed call costs no credits.

History

The endpoint serves the full ledger history: getBlock, getTransaction and getSignaturesForAddress reach back to genesis. getSignatureStatuses returns statuses for recent transactions; it does not support searchTransactionHistory.

Rate limits

Your plan sets requests per second for your whole account, shared by all your API keys; trials allow 5. Requests above the rate get HTTP 429 with JSON-RPC code -429 and x-error-code: RATE_LIMITED. Back off and retry. A higher rate takes effect as soon as you buy it. sendTransaction calls per second are also limited across your whole account: 12 on Developer, 50 on Business and 125 on Professional, and a quarter of the request rate on RPC plans priced by request rate. Sends above it get HTTP 429 with x-error-code: SEND_RATE_LIMITED; other methods are not affected.

Sending transactions

Transactions land most reliably when the client does the following:
  • Skip preflight. Pass skipPreflight: true. To check a transaction first, call simulateTransaction separately, then send it. A simulation counts as a read.
  • Retry in your own code. Pass maxRetries: 0 and resend the same signed transaction until it confirms or its blockhash expires. Then fetch a new blockhash, sign again and send.
  • Use a settled blockhash. Fetch it with confirmed or finalized commitment, never processed.
  • Set the compute budget. Request only the compute units the transaction needs, and always add a priority fee. getRecentPrioritizationFees shows recent fees for the accounts you write.
Each resend is a sendTransaction call and counts against your sendTransaction limit.

Credits

Every method has a credit cost, listed in Methods. RPC plans include 200,000 credits per request per second each month; trials, packages and credit packs carry their own. When the allowance runs out, requests get HTTP 402 with x-error-code: QUOTA_EXCEEDED.

Large responses

Responses are streamed as they are produced, so large results such as getProgramAccounts over a big program are supported. Use dataSlice and filters to keep responses small.

WebSocket

RPC does not offer WebSocket subscriptions. Use Yellowstone gRPC for real-time account, transaction and slot updates.