Get started with Solana RPC node using nolimitnodes.com
NoLimitNodes gives you REST and WebSocket access to the Solana blockchain through a single API key.
On this page +
NoLimitNodes gives you REST and WebSocket access to the Solana blockchain through a single API key. This guide walks through account setup, your first JSON-RPC request, streaming live events over a socket, and a few habits that keep an integration stable in production.
1. Getting Started with NoLimitNodes
Before you can make any requests, you'll need an account and an API key. The whole process takes a couple of minutes:
Go to the NoLimitNodes dashboard.
Generate an API key if you haven't done so already.
You'll receive two links:
- REST API:
https://api.nolimitnodes.com/solana?api_key=xxx - WebSocket:
wss://api.nolimitnodes.com/solana?api_key=xxx
Treat the key like a password. Don't commit it to public repositories or ship it in client-side code.
2. Using the REST API
Request Example:
curl -X POST 'https://api.nolimitnodes.com/solana?api_key=xxx' \
-H 'Content-Type: application/json' \
-d '{
"id": 1,
"jsonrpc": "2.0",
"method": "getEpochInfo"
}'
Response Example:
{
"jsonrpc": "2.0",
"result": {
"absoluteSlot": 307196285,
"blockHeight": 285572434,
"epoch": 711,
"slotIndex": 44285,
"slotsInEpoch": 432000,
"transactionCount": 347697747950
},
"id": 1
}
That request asks the Solana network for epoch information: the current epoch, the block height, and how many slots the epoch contains. You'll find the full method list and more examples in the official NoLimitNodes documentation.
3. Using the WebSocket API
When you need data pushed to you instead of polled, switch to the WebSocket API. It streams events straight from the Solana blockchain as they happen. Here's how it works.
Socket Connect
To open a connection and listen for events, grab a WebSocket client library such as websockets for Python. A minimal example:
import asyncio
import websockets
import json
async def connect_to_socket():
async with websockets.connect('wss://api.nolimitnodes.com/solana?api_key=xxx') as websocket:
# Subscribe to logs subscription event
await websocket.send(json.dumps({
"jsonrpc": "2.0",
"id": 1,
"method": "logsSubscribe",
"params": [
{
"mentions": [
"6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P" # target account address (pump.fun)
]
},
{
"commitment": "finalized"
}
]
}))
while True:
message = await websocket.recv()
print(f"Received message: {message}")
asyncio.run(connect_to_socket())Socket Response:
Received message: {"jsonrpc":"2.0","result":131089,"id":1}
Received message: {"jsonrpc":"2.0","method":"logsNotification","params":{"result":{"context":{"slot":307199168},"value":{"signature":"4mVmSvqxP3vMsPAnLpwo8sdNXCz9P9E5VfBaejW5XiEv2k8tP1voMJ97jHYAm6TwyNsoT23BHtq2PVNEbrhMvPU5","err":null,"logs":["Program ComputeBudget111111111111111111111111111111 invoke [1]","Program ComputeBudget111111111111111111111111111111 success","Program ComputeBudget111111111111111111111111111111 invoke [1]","Program ComputeBudget111111111111111111111111111111 success","Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL invoke [1]","Program log: CreateIdempotent","Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]","Program log: Instruction: GetAccountDataSize","Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 1569 of 141295 compute units","Program return: TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA pQAAAAAAAAA=","Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success","Program 11111111111111111111111111111111 invoke [2]","Program 11111111111111111111111111111111 success","Program log: Initialize the associated token account","Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]","Program log: Instruction: InitializeImmutableOwner","Program log: Please upgrade to SPL Token 2022 for immutable owner support","Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 1405 of 134708 compute units","Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success","Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]","Program log: Instruction: InitializeAccount3","Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4188 of 130826 compute units","Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success","Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL consumed 23345 of 149700 compute units","Program ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL success","Program BSfD6SHZigAfDWSjzD5Q41jw8LmKwtmjskPH9XW1mrRW invoke [1]","Program log: Instruction: PumpBuy","Program 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P invoke [2]","Program log: Instruction: Buy","Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [3]","Program log: Instruction: Transfer","Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4645 of 81002 compute units","Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success","Program 11111111111111111111111111111111 invoke [3]","Program 11111111111111111111111111111111 success","Program 11111111111111111111111111111111 invoke [3]","Program 11111111111111111111111111111111 success","Program 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P invoke [3]","Program 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P consumed 2003 of 68914 compute units","Program 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P success","Program data: vdt/007mYe7vni0Y3HOmbSJC8omPPDs8SozaJdCIQMmNMUndPgb8b8XzolcAAAAA7aRIYiolAAABOIcGSKDiS7MC+BPzjFpQtnY9LZb/h0OkbdQvlI2BJ9ySC1xnAAAAAF4NyBgIAAAAdaQgEOBJAwBeYaQcAQAAAHUMDsROSwIA","Program 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P consumed 43461 of 108647 compute units","Program 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P success","Program 11111111111111111111111111111111 invoke [2]","Program 11111111111111111111111111111111 success","Program BSfD6SHZigAfDWSjzD5Q41jw8LmKwtmjskPH9XW1mrRW consumed 64332 of 126355 compute units","Program BSfD6SHZigAfDWSjzD5Q41jw8LmKwtmjskPH9XW1mrRW success","Program 11111111111111111111111111111111 invoke [1]","Program 11111111111111111111111111111111 success"]}},"subscription":131089}}
Received message: {"jsonrpc":"2.0","method":"logsNotification","params":{"result":{"context":{"slot":307199168},"value":{"signature":"5ZtAiTZk4fp1gv8UdXoebN6zhkeE1gikQRzdNgbtbKybUvsu3yRAvgzU477BSi5D4CNegC5Gmap26h7cPf2MaeKu","err":null,"logs":["Program ComputeBudget111111111111111111111111111111 invoke [1]","Program ComputeBudget111111111111111111111111111111 success","Program ComputeBudget111111111111111111111111111111 invoke [1]","Program ComputeBudget111111111111111111111111111111 success","Program 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P invoke [1]","Program log: Instruction: Sell","Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]","Program log: Instruction: Transfer","Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4645 of 13469 compute units","Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success","Program 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P invoke [2]","Program 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P consumed 2003 of 5339 compute units","Program 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P success","Program data: vdt/007mYe6LLgf/8UglPDo1BzbCIWxaLglw1QU2SvCuHU80QlxS3wHo7GUAAAAAAADz3qcrAAAAT0PtN2jG/xFfX7j9n7Poz6CNQrmv3iG8ELAHwe3PPDmSC1xnAAAAAHIxJbAHAAAATaBBKKJ2AwByhQG0AAAAAE0IL9wQeAIA","Program 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P consumed 31918 of 33528 compute units","Program 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P success"]}},"subscription":131089}}
Received message: {"jsonrpc":"2.0","method":"logsNotification","params":{"result":{"context":{"slot":307199168},"value":{"signature":"37XZJs8ZNK7KmYtTmKm1aYYJ1puCTuuRRdCRxLrPaZ7ETyqz1foqk9jRDq2xvCbQopkWuiEcQAfbgfGjpv4AKJtQ","err":null,"logs":["Program ComputeBudget111111111111111111111111111111 invoke [1]","Program ComputeBudget111111111111111111111111111111 success","Program ComputeBudget111111111111111111111111111111 invoke [1]","Program ComputeBudget111111111111111111111111111111 success","Program 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P invoke [1]","Program log: Instruction: Sell","Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [2]","Program log: Instruction: Transfer","Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 4645 of 281141 compute units","Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success","Program 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P invoke [2]","Program 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P consumed 2003 of 273011 compute units","Program 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P success","Program data: vdt/007mYe45jktOv8WjKQPx3/rvsL1pqXMsXHOlBS7RBwg2xV1nj78cgAMAAAAAOPweIecBAAAAsqHJL+d5ddJWK4t9Zp9ndVn69URNKD2ANfrK99W+7pqSC1xnAAAAAB9w7f0GAAAAvRmgs+nOAwAfxMkBAAAAAL2BjWdY0AIA","Program 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P consumed 30418 of 299700 compute units","Program 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P success","Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA invoke [1]","Program log: Instruction: CloseAccount","Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA consumed 2916 of 269282 compute units","Program TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA success","Program 11111111111111111111111111111111 invoke [1]","Program 11111111111111111111111111111111 success","Program 11111111111111111111111111111111 invoke [1]","Program 11111111111111111111111111111111 success"]}},"subscription":131089}}The script subscribes to the logs subscription event, which pushes a message every time new logs are finalized on the Solana network. The loop then receives and prints each incoming message.
4. Best Practices
- Secure your API key: keep it out of public code repositories and client-facing applications.
- Use the appropriate methods: follow the official documentation for both the REST and WebSocket APIs so you stay clear of rate limits and get stable performance.
- Test with a small subset of data: verify your requests and socket subscriptions against a small slice of data first, before pointing real traffic at them.
For further details and examples, visit the official NoLimitNodes documentation.
That's the whole integration: REST for queries, WebSockets for live updates, one key for both. From here you can wire NoLimitNodes into your Solana application and spend your time on the product rather than the plumbing.
Every benchmark in this blog runs against our public endpoints.
Spin up an RPC, WebSocket, or gRPC endpoint in under a minute. Flat pricing, no request caps. Reproduce the numbers for your own workload.