Quicknode Blockchain Infrastructure
Intake Questions
- Which chain and network should Quicknode target?
- Is this read-only or should I create infrastructure (streams, webhooks, IPFS writes)?
- Does this require real-time streaming (gRPC/Yellowstone/Hypercore) or standard RPC?
- What endpoint or API key should I use (default:
QUICKNODE_RPC_URL, optional QUICKNODE_WSS_URL / QUICKNODE_API_KEY)?
- Any constraints (latency, regions, throughput, destinations)?
Safety Defaults
- Default to testnet/devnet when a network is not specified.
- Prefer read-only operations and dry runs before creating resources.
- Never ask for or accept private keys or secret keys.
Confirm Before Write
- Require explicit confirmation before creating or modifying Streams, Webhooks, or IPFS uploads.
- If confirmation is missing, return the exact API payload for review.
Quick Reference
| Product |
Description |
Use Case |
| RPC Endpoints |
High-performance blockchain access |
dApp backend, wallet interactions |
| Streams |
Real-time & historical blockchain data pipelines |
Event monitoring, analytics, indexing |
| Webhooks |
Event-driven notifications |
Alerts, transaction monitoring |
| IPFS |
Decentralized file storage |
NFT metadata, asset hosting |
| Add-ons |
Enhanced blockchain APIs |
Token balances, NFT data, DeFi |
| DAS API |
Solana Digital Asset Standard (add-on) |
NFT/token queries, compressed NFTs, asset search |
| Yellowstone gRPC |
Solana Geyser streaming (add-on) |
Real-time account, transaction, slot data |
| Hypercore |
Hyperliquid gRPC/JSON-RPC/WS (beta) |
Trades, orders, book updates, blocks, TWAP, events, writer actions |
| Admin API |
REST API for account management |
Endpoint CRUD, usage monitoring, billing |
| Key-Value Store |
Serverless key-value and list storage (beta) |
Persistent state for Streams, dynamic address lists |
| x402 |
Pay-per-request RPC via USDC micropayments |
Keyless RPC access, AI agents, pay-as-you-go |
RPC Endpoints
Quicknode provides low-latency RPC endpoints for 80+ blockchain networks.
Endpoint Setup
// EVM chains (ethers.js)
import { JsonRpcProvider } from 'ethers';
const provider = new JsonRpcProvider(process.env.QUICKNODE_RPC_URL!);
// EVM chains (viem)
import { createPublicClient, http } from 'viem';
import { mainnet } from 'viem/chains';
const client = createPublicClient({
chain: mainnet,
transport: http(process.env.QUICKNODE_RPC_URL!),
});
// Solana
import { createSolanaRpc } from '@solana/kit';
const rpc = createSolanaRpc(process.env.QUICKNODE_RPC_URL!);
Authentication
Quicknode endpoints include authentication in the URL:
https://{ENDPOINT_NAME}.{NETWORK}.quiknode.pro/{API_KEY}/
For additional security, enable JWT authentication or IP allowlisting in the Quicknode dashboard.
Supported Networks
| Category |
Networks |
| EVM |
Ethereum, Polygon, Arbitrum, Optimism, Base, BSC, Avalanche, Fantom, zkSync, Scroll, Linea, Hyperliquid EVM (HyperEVM) |
| Non-EVM |
Solana, Bitcoin, NEAR, Stacks, Cosmos, Sei, Aptos, Sui, TON, Hyperliquid (HyperCore) |
Not exhaustive. Full list: https://www.quicknode.com/chains
Rate Limits & Plans
As of 2026-02-02. Verify current limits in Quicknode docs before sizing a production system.
| Plan |
Requests/sec |
Credits/month |
| Free Trial |
15 |
10M |
| Build |
50 |
80M |
| Accelerate |
125 |
450M |
| Scale |
250 |
950M |
| Business |
500 |
2B |
See references/rpc-reference.md for complete RPC documentation including method tables for EVM, Solana, and Bitcoin chains, WebSocket patterns, and batch request examples.
Streams
Real-time & historical blockchain data pipelines that filter, transform, and deliver data to your destinations.
Stream Types
| Type |
Data |
Use Case |
| Block |
Full block data |
Block explorers, analytics |
| Transaction |
Transaction details |
Tx monitoring, indexing |
| Logs |
Contract events |
DeFi tracking, NFT sales, token transfers |
| Receipt |
Transaction receipts |
Gas analysis, status tracking |
Quick Setup
- Create stream in Quicknode dashboard
- Select network and data type
- Add filter function (JavaScript)
- Configure destination (webhook, S3, database)
Basic Filter Function
See references/streams-reference.md for filter examples and full Streams documentation.
Webhooks
Event-driven notifications for blockchain activity.
Webhooks vs Streams
| Feature |
Webhooks |
Streams |
| Setup |
Simple |
More configuration |
| Filtering |
Address/event-based |
Custom JavaScript |
| Destinations |
HTTP endpoint only |
Webhook, S3, Postgres, Azure |
| Processing |
Basic |
Full transformation |
| Use Case |
Simple alerts |
Complex pipelines |
Webhook Setup
See references/webhooks-reference.md for API examples and full Webhooks documentation.
IPFS Storage
Decentralized file storage with Quicknode's IPFS gateway.
See references/ipfs-reference.md for upload examples, metadata examples, and complete IPFS documentation.
Marketplace Add-ons
Enhanced APIs available through Quicknode's marketplace.
Token API (Ethereum)
// Get all token balances for an address
const response = await fetch(process.env.QUICKNODE_RPC_URL!, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
method: 'qn_getWalletTokenBalance',
params: [{ wallet: '0x...', contracts: [] }]
})
});
NFT API (Ethereum)
// Fetch NFTs owned by address
const response = await fetch(process.env.QUICKNODE_RPC_URL!, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
method: 'qn_fetchNFTs',
params: [{ wallet: '0x...', page: 1, perPage: 10 }]
})
});
Solana Priority Fee API
// Get recommended priority fees
const response = await rpc.request('qn_estimatePriorityFees', {
last_n_blocks: 100,
account: 'YOUR_ACCOUNT'
}).send();
Metis - Jupiter Swap API
// Using Metis - Jupiter Swap API
import { createJupiterApiClient } from '@jup-ag/api';
const jupiterApi = createJupiterApiClient({
basePath: `${process.env.QUICKNODE_METIS_URL}`
});
const quote = await jupiterApi.quoteGet({
inputMint: 'So11111111111111111111111111111111111111112',
outputMint: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',
amount: 1000000000,
slippageBps: 50
});
const swapResult = await jupiterApi.swapPost({
swapRequest: {
quoteResponse: quote,
userPublicKey: 'YourPubkey...'
}
});
See references/marketplace-addons.md for complete Add-ons documentation.
Solana DAS API (Digital Asset Standard)
Comprehensive API for querying Solana digital assets — standard NFTs, compressed NFTs (cNFTs), fungible tokens, MPL Core Assets, and Token 2022 Assets. Available as a Marketplace add-on (Metaplex DAS API).
Docs: https://www.quicknode.com/docs/solana/solana-das-api
Quick Setup
// Get all assets owned by a wallet
const response = await fetch(process.env.QUICKNODE_RPC_URL, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
jsonrpc: '2.0',
id: 1,
method: 'getAssetsByOwner',
params: {
ownerAddress: 'E645TckHQnDcavVv92Etc6xSWQaq8zzPtPRGBheviRAk',
limit: 10,
options: { showFungible: true, showCollectionMetadata: true }
}
})
});
const { result } = await response.json();
// result.total — total assets
// result.items — array of asset metadata
// result.cursor — for pagination
Available Methods
| Method |
Description |
getAsset |
Get metadata for a single asset |
getAssets |
Get metadata for multiple assets |
getAssetProof |
Get Merkle proof for a compressed asset |
getAssetProofs |
Get Merkle proofs for multiple assets |
getAssetsByAuthority |
List assets by authority |
getAssetsByCreator |
List assets by creator |
getAssetsByGroup |
List assets by group (e.g., collection) |
getAssetsByOwner |
List assets by wallet owner |
getAssetSignatures |
Transaction signatures for compressed assets |
getTokenAccounts |
Token accounts by mint or owner |
getNftEditions |
Edition details of a master NFT |
searchAssets |
Search assets with flexible filters |
See references/solana-das-api-reference.md for complete DAS API documentation with all methods, parameters, and examples.
Yellowstone gRPC (Solana)
High-performance Solana Geyser plugin for real-time blockchain data streaming via gRPC. Available as a Marketplace add-on.
Quick Setup
import Client, { CommitmentLevel } from "@triton-one/yellowstone-grpc";
// Derive from HTTP URL: https://example.solana-mainnet.quiknode.pro/TOKEN/
const client = new Client(
"https://example.solana-mainnet.quiknode.pro:10000",
"TOKEN",
{}
);
const stream = await client.subscribe();
stream.on("data", (data) => {
if (data.transaction) console.log("Tx:", data.transaction);
});
stream.write({
transactions: {
txn_filter: {
vote: false,
failed: false,
accountInclude: ["PROGRAM_PUBKEY"],
accountExclude: [],
accountRequired: [],
},
},
accounts: {},
slots: {},
blocks: {},
blocksMeta: {},
transactionsStatus: {},
entry: {},
accountsDataSlice: [],
commitment: CommitmentLevel.CONFIRMED,
});
Filter Types
| Filter |
Description |
| accounts |
Account data changes by pubkey, owner, or data pattern |
| transactions |
Transaction events with vote/failure/account filters |
| transactionsStatus |
Lightweight transaction status updates |
| slots |
Slot progression and status changes |
| blocks |
Full block data with optional tx/account inclusion |
| blocksMeta |
Block metadata without full contents |
| entry |
PoH entry updates |
See references/yellowstone-grpc-reference.md for complete Yellowstone gRPC documentation.
HyperCore (Hyperliquid)
Quicknode's data delivery infrastructure for the Hyperliquid L1 chain. Provides gRPC, JSON-RPC, WebSocket, and Info API access. Currently in public beta.
Access Methods
| Method |
Path / Port |
Use Case |
| Info API |
/info (POST) |
50+ methods for market data, positions, orders |
| JSON-RPC |
/hypercore (POST) |
Block queries (hl_getBlock, hl_getBatchBlocks) |
| WebSocket |
/hypercore/ws |
Real-time subscriptions (hl_subscribe) |
| gRPC |
Port 10000 |
Lowest-latency streaming for trades, orders, books |
gRPC Stream Types
| Stream |
Volume |
Description |
| TRADES |
High |
Execution data: coin, price, size, side, fees |
| ORDERS |
Very High |
Order lifecycle with 18+ status types |
| BOOK_UPDATES |
Very High |
L2 order book diffs |
| TWAP |
Low |
Time-weighted average price order updates |
| EVENTS |
High |
Ledger updates, funding, deposits, withdrawals |
| BLOCKS |
Extreme |
Raw HyperCore blocks (gRPC only) |
| WRITER_ACTIONS |
Low |
System-level token transfers |
HyperEVM
| Path |
Debug/Trace |
Archive |
Use Case |
/evm |
No |
Partial |
Standard EVM operations |
/nanoreth |
Yes |
Extended |
Debug, trace, WebSocket subscriptions |
See references/hypercore-hyperliquid-reference.md for complete HyperCore and Hyperliquid documentation.
Quicknode SDK
Official JavaScript/TypeScript SDK for Quicknode services.
Installation
npm install @quicknode/sdk
Basic Usage
import { Core } from '@quicknode/sdk';
const core = new Core({
endpointUrl: process.env.QUICKNODE_RPC_URL!,
});
// Token API
const balances = await core.client.qn_getWalletTokenBalance({
wallet: '0x...',
});
// NFT API
const nfts = await core.client.qn_fetchNFTs({
wallet: '0x...',
page: 1,
perPage: 10,
});
See references/sdk-reference.md for complete SDK documentation.
Admin API
REST API for programmatic management of Quicknode endpoints, usage, rate limits, security, billing, and teams. Enables infrastructure-as-code workflows.
Quick Reference
| Resource |
Methods |
Endpoint |
| Chains |
GET |
/v0/chains |
| Endpoints |
GET, POST, PATCH, DELETE |
/v0/endpoints |
| Metrics |
GET |
/v0/endpoints/{id}/metrics |
| Rate Limits |
GET, POST, PUT |
/v0/endpoints/{id}/method-rate-limits, /v0/endpoints/{id}/rate-limits |
| Security |
GET |
/v0/endpoints/{id}/security_options |
| Usage |
GET |
/v0/usage/rpc, by-endpoint, by-method, by-chain |
| Billing |
GET |
/v0/billing/invoices |
| Teams |
GET |
/v0/teams |
Authentication
All requests use the x-api-key header against https://api.quicknode.com/v0/.
const QN_API_KEY = process.env.QUICKNODE_API_KEY!;
const res = await fetch('https://api.quicknode.com/v0/endpoints', {
headers: { 'x-api-key': QN_API_KEY },
});
const endpoints = await res.json();
See references/admin-api-reference.md for full Admin API documentation including endpoint CRUD, usage monitoring, rate limit configuration, security options, billing, and teams.
Key-Value Store (Beta)
Serverless storage for lists and key-value sets, primarily accessed from within Streams filter functions via the qnLib helper library. Also available via REST API.
Stream Integration (qnLib)
List operations — manage lists of items (e.g., wallet addresses):
qnLib.qnUpsertList — create or update a list
qnLib.qnAddListItem — add item to a list
qnLib.qnRemoveListItem — remove item from a list
qnLib.qnContainsListItems — batch membership check
qnLib.qnDeleteList — delete a list
Set operations — manage key-value pairs:
qnLib.qnAddSet — create a key-value set
qnLib.qnGetSet — retrieve value by key
qnLib.qnBulkSets — bulk create/remove sets
qnLib.qnDeleteSet — delete a set
Docs: https://www.quicknode.com/docs/key-value-store
x402 (Pay-Per-Request RPC)
Pay-per-request RPC access via USDC micropayments on Base. No API key required — authenticate with Sign-In with Ethereum (SIWE), purchase credits, and access 140+ chain endpoints.
Quick Setup
import { wrapFetch } from "@x402/fetch";
import { createWalletClient, http } from "viem";
import { privateKeyToAccount } from "viem/accounts";
import { base } from "viem/chains";
const account = privateKeyToAccount(process.env.PRIVATE_KEY as `0x${string}`);
const walletClient = createWalletClient({
account,
chain: base,
transport: http(),
});
// Wrap fetch to auto-handle 402 payments
const x402Fetch = wrapFetch(fetch, walletClient);
// Use like normal fetch — payments are handled automatically
const response = await x402Fetch("https://x402.quicknode.com/ethereum-mainnet", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
jsonrpc: "2.0",
method: "eth_blockNumber",
params: [],
id: 1,
}),
});
See references/x402-reference.md for complete x402 documentation including SIWE authentication, credit management, and the @x402/fetch wrapper.
Common Patterns
Multi-Chain dApp Setup
import { Core } from '@quicknode/sdk';
const chains = {
ethereum: new Core({
endpointUrl: 'https://YOUR_ETH_ENDPOINT.quiknode.pro/KEY/'
}),
polygon: new Core({
endpointUrl: 'https://YOUR_POLYGON_ENDPOINT.quiknode.pro/KEY/'
}),
arbitrum: new Core({
endpointUrl: 'https://YOUR_ARB_ENDPOINT.quiknode.pro/KEY/'
}),
};
// Use appropriate chain
const ethBalance = await chains.ethereum.client.getBalance({ address: '0x...' });
Real-Time Transaction Monitoring
- Create Stream filtering for your contract address
- Add Filter Function to extract relevant events
- Configure Webhook destination to your server
- Process Events in your backend
NFT Collection Indexing
- Use Streams to capture mint/transfer events
- Store in Database via PostgreSQL destination
- Query via Add-ons for current ownership data
- Query via SDK for custom API endpoints
Real-Time Solana Monitoring with Yellowstone gRPC
- Connect via gRPC on port 10000 with your auth token
- Subscribe to transactions filtering by program or account
- Process updates in real-time via the streaming interface
- Implement reconnection with exponential backoff
Hyperliquid Trading Data Pipeline
- Connect via gRPC on port 10000 for lowest-latency data
- Subscribe to TRADES/ORDERS streams with coin filters
- Process events — handle ~12 blocks/sec throughput
- Use Info API (
/info) for account state and market metadata
Best Practices
RPC
- Use WebSocket for subscriptions and real-time data
- Implement retry logic with exponential backoff
- Cache responses when data doesn't change frequently
- Use batch requests to reduce API calls
Streams
- Start with narrow filters, expand as needed
- Test filter functions locally before deployment
- Streams will automatically retry on failures
- Monitor stream health via dashboard
Security
- Store API keys in environment variables
- Enable IP allowlisting for production
- Use JWT authentication for sensitive operations
- Rotate API keys periodically
gRPC
- Enable zstd compression to reduce bandwidth (up to 70% for Hyperliquid)
- Implement reconnection logic with exponential backoff — streams can drop
- Use narrow filters (specific accounts, coins, or programs) to minimize data volume
- Set appropriate commitment levels (Yellowstone: CONFIRMED for most use cases, FINALIZED for irreversibility)
- Send keepalive pings (every 10s for Yellowstone, every 30s for Hypercore) to maintain connections
Documentation Links
Quicknode Products
Chain-Specific Docs
LLM-Optimized Documentation
Additional Resources
1---2name: quicknode-skill3description: Quicknode blockchain infrastructure including RPC endpoints (80+ chains), Streams (real-time data), Webhooks, IPFS storage, Marketplace Add-ons (Token API, NFT API, DeFi tools), Solana DAS API (Digital Asset Standard), Key-Value Store, gRPC streaming (Yellowstone for Solana, Hypercore for Hyperliquid), and x402 pay-per-request RPC. Use when setting up blockchain infrastructure, configuring real-time data pipelines, processing blockchain events, storing data on IPFS, using Quicknode-specific APIs, querying Solana NFTs/tokens/compressed assets, persisting state with Key-Value Store, or building low-latency gRPC streams. Triggers on mentions of Quicknode, Streams, qn_ methods, IPFS pinning, Quicknode add-ons, DAS API, Digital Asset Standard, compressed NFT, cNFT, getAssetsByOwner, searchAssets, Key-Value Store, KV store, qnLib, Yellowstone, gRPC, Geyser, Hypercore, Hyperliquid, HYPE, evm, rpc, ethereum, blockchain, solana, or x402.4---56# Quicknode Blockchain Infrastructure78## Intake Questions9- Which chain and network should Quicknode target?10- Is this read-only or should I create infrastructure (streams, webhooks, IPFS writes)?11- Does this require real-time streaming (gRPC/Yellowstone/Hypercore) or standard RPC?12- What endpoint or API key should I use (default: `QUICKNODE_RPC_URL`, optional `QUICKNODE_WSS_URL` / `QUICKNODE_API_KEY`)?13- Any constraints (latency, regions, throughput, destinations)?1415## Safety Defaults16- Default to testnet/devnet when a network is not specified.17- Prefer read-only operations and dry runs before creating resources.18- Never ask for or accept private keys or secret keys.1920## Confirm Before Write21- Require explicit confirmation before creating or modifying Streams, Webhooks, or IPFS uploads.22- If confirmation is missing, return the exact API payload for review.2324## Quick Reference2526| Product | Description | Use Case |27|---------|-------------|----------|28| **RPC Endpoints** | High-performance blockchain access | dApp backend, wallet interactions |29| **Streams** | Real-time & historical blockchain data pipelines | Event monitoring, analytics, indexing |30| **Webhooks** | Event-driven notifications | Alerts, transaction monitoring |31| **IPFS** | Decentralized file storage | NFT metadata, asset hosting |32| **Add-ons** | Enhanced blockchain APIs | Token balances, NFT data, DeFi |33| **DAS API** | Solana Digital Asset Standard (add-on) | NFT/token queries, compressed NFTs, asset search |34| **Yellowstone gRPC** | Solana Geyser streaming (add-on) | Real-time account, transaction, slot data |35| **Hypercore** | Hyperliquid gRPC/JSON-RPC/WS (beta) | Trades, orders, book updates, blocks, TWAP, events, writer actions |36| **Admin API** | REST API for account management | Endpoint CRUD, usage monitoring, billing |37| **Key-Value Store** | Serverless key-value and list storage (beta) | Persistent state for Streams, dynamic address lists |38| **x402** | Pay-per-request RPC via USDC micropayments | Keyless RPC access, AI agents, pay-as-you-go |3940## RPC Endpoints4142Quicknode provides low-latency RPC endpoints for 80+ blockchain networks.4344### Endpoint Setup4546```typescript47// EVM chains (ethers.js)48import { JsonRpcProvider } from 'ethers';49const provider = new JsonRpcProvider(process.env.QUICKNODE_RPC_URL!);5051// EVM chains (viem)52import { createPublicClient, http } from 'viem';53import { mainnet } from 'viem/chains';54const client = createPublicClient({55 chain: mainnet,56 transport: http(process.env.QUICKNODE_RPC_URL!),57});5859// Solana60import { createSolanaRpc } from '@solana/kit';61const rpc = createSolanaRpc(process.env.QUICKNODE_RPC_URL!);62```6364### Authentication6566Quicknode endpoints include authentication in the URL:67```68https://{ENDPOINT_NAME}.{NETWORK}.quiknode.pro/{API_KEY}/69```7071For additional security, enable JWT authentication or IP allowlisting in the Quicknode dashboard.7273### Supported Networks7475| Category | Networks |76|----------|----------|77| **EVM** | Ethereum, Polygon, Arbitrum, Optimism, Base, BSC, Avalanche, Fantom, zkSync, Scroll, Linea, Hyperliquid EVM (HyperEVM) |78| **Non-EVM** | Solana, Bitcoin, NEAR, Stacks, Cosmos, Sei, Aptos, Sui, TON, Hyperliquid (HyperCore) |7980Not exhaustive. Full list: https://www.quicknode.com/chains8182### Rate Limits & Plans8384As of 2026-02-02. Verify current limits in Quicknode docs before sizing a production system.8586| Plan | Requests/sec | Credits/month |87|------|-------------|---------------|88| Free Trial | 15 | 10M |89| Build | 50 | 80M |90| Accelerate | 125 | 450M |91| Scale | 250 | 950M |92| Business | 500 | 2B |9394See [references/rpc-reference.md](references/rpc-reference.md) for complete RPC documentation including method tables for EVM, Solana, and Bitcoin chains, WebSocket patterns, and batch request examples.9596## Streams9798Real-time & historical blockchain data pipelines that filter, transform, and deliver data to your destinations.99100### Stream Types101102| Type | Data | Use Case |103|------|------|----------|104| **Block** | Full block data | Block explorers, analytics |105| **Transaction** | Transaction details | Tx monitoring, indexing |106| **Logs** | Contract events | DeFi tracking, NFT sales, token transfers |107| **Receipt** | Transaction receipts | Gas analysis, status tracking |108109### Quick Setup1101111. Create stream in Quicknode dashboard1122. Select network and data type1133. Add filter function (JavaScript)1144. Configure destination (webhook, S3, database)115116### Basic Filter Function117118See [references/streams-reference.md](references/streams-reference.md) for filter examples and full Streams documentation.119120## Webhooks121122Event-driven notifications for blockchain activity.123124### Webhooks vs Streams125126| Feature | Webhooks | Streams |127|---------|----------|---------|128| **Setup** | Simple | More configuration |129| **Filtering** | Address/event-based | Custom JavaScript |130| **Destinations** | HTTP endpoint only | Webhook, S3, Postgres, Azure |131| **Processing** | Basic | Full transformation |132| **Use Case** | Simple alerts | Complex pipelines |133134### Webhook Setup135136See [references/webhooks-reference.md](references/webhooks-reference.md) for API examples and full Webhooks documentation.137138## IPFS Storage139140Decentralized file storage with Quicknode's IPFS gateway.141142See [references/ipfs-reference.md](references/ipfs-reference.md) for upload examples, metadata examples, and complete IPFS documentation.143144145## Marketplace Add-ons146147Enhanced APIs available through Quicknode's marketplace.148149### Token API (Ethereum)150151```javascript152// Get all token balances for an address153const response = await fetch(process.env.QUICKNODE_RPC_URL!, {154 method: 'POST',155 headers: { 'Content-Type': 'application/json' },156 body: JSON.stringify({157 method: 'qn_getWalletTokenBalance',158 params: [{ wallet: '0x...', contracts: [] }]159 })160});161```162163### NFT API (Ethereum)164165```javascript166// Fetch NFTs owned by address167const response = await fetch(process.env.QUICKNODE_RPC_URL!, {168 method: 'POST',169 headers: { 'Content-Type': 'application/json' },170 body: JSON.stringify({171 method: 'qn_fetchNFTs',172 params: [{ wallet: '0x...', page: 1, perPage: 10 }]173 })174});175```176177### Solana Priority Fee API178179```javascript180// Get recommended priority fees181const response = await rpc.request('qn_estimatePriorityFees', {182 last_n_blocks: 100,183 account: 'YOUR_ACCOUNT'184}).send();185```186187### Metis - Jupiter Swap API188189```typescript190// Using Metis - Jupiter Swap API191import { createJupiterApiClient } from '@jup-ag/api';192193const jupiterApi = createJupiterApiClient({194 basePath: `${process.env.QUICKNODE_METIS_URL}`195});196197const quote = await jupiterApi.quoteGet({198 inputMint: 'So11111111111111111111111111111111111111112',199 outputMint: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',200 amount: 1000000000,201 slippageBps: 50202});203204const swapResult = await jupiterApi.swapPost({205 swapRequest: {206 quoteResponse: quote,207 userPublicKey: 'YourPubkey...'208 }209});210```211212See [references/marketplace-addons.md](references/marketplace-addons.md) for complete Add-ons documentation.213214## Solana DAS API (Digital Asset Standard)215216Comprehensive API for querying Solana digital assets — standard NFTs, compressed NFTs (cNFTs), fungible tokens, MPL Core Assets, and Token 2022 Assets. Available as a Marketplace add-on (Metaplex DAS API).217218**Docs:** https://www.quicknode.com/docs/solana/solana-das-api219220### Quick Setup221222```javascript223// Get all assets owned by a wallet224const response = await fetch(process.env.QUICKNODE_RPC_URL, {225 method: 'POST',226 headers: { 'Content-Type': 'application/json' },227 body: JSON.stringify({228 jsonrpc: '2.0',229 id: 1,230 method: 'getAssetsByOwner',231 params: {232 ownerAddress: 'E645TckHQnDcavVv92Etc6xSWQaq8zzPtPRGBheviRAk',233 limit: 10,234 options: { showFungible: true, showCollectionMetadata: true }235 }236 })237});238const { result } = await response.json();239// result.total — total assets240// result.items — array of asset metadata241// result.cursor — for pagination242```243244### Available Methods245246| Method | Description |247|--------|-------------|248| `getAsset` | Get metadata for a single asset |249| `getAssets` | Get metadata for multiple assets |250| `getAssetProof` | Get Merkle proof for a compressed asset |251| `getAssetProofs` | Get Merkle proofs for multiple assets |252| `getAssetsByAuthority` | List assets by authority |253| `getAssetsByCreator` | List assets by creator |254| `getAssetsByGroup` | List assets by group (e.g., collection) |255| `getAssetsByOwner` | List assets by wallet owner |256| `getAssetSignatures` | Transaction signatures for compressed assets |257| `getTokenAccounts` | Token accounts by mint or owner |258| `getNftEditions` | Edition details of a master NFT |259| `searchAssets` | Search assets with flexible filters |260261See [references/solana-das-api-reference.md](references/solana-das-api-reference.md) for complete DAS API documentation with all methods, parameters, and examples.262263## Yellowstone gRPC (Solana)264265High-performance Solana Geyser plugin for real-time blockchain data streaming via gRPC. Available as a Marketplace add-on.266267### Quick Setup268269```typescript270import Client, { CommitmentLevel } from "@triton-one/yellowstone-grpc";271272// Derive from HTTP URL: https://example.solana-mainnet.quiknode.pro/TOKEN/273const client = new Client(274 "https://example.solana-mainnet.quiknode.pro:10000",275 "TOKEN",276 {}277);278279const stream = await client.subscribe();280stream.on("data", (data) => {281 if (data.transaction) console.log("Tx:", data.transaction);282});283284stream.write({285 transactions: {286 txn_filter: {287 vote: false,288 failed: false,289 accountInclude: ["PROGRAM_PUBKEY"],290 accountExclude: [],291 accountRequired: [],292 },293 },294 accounts: {},295 slots: {},296 blocks: {},297 blocksMeta: {},298 transactionsStatus: {},299 entry: {},300 accountsDataSlice: [],301 commitment: CommitmentLevel.CONFIRMED,302});303```304305### Filter Types306307| Filter | Description |308|--------|-------------|309| **accounts** | Account data changes by pubkey, owner, or data pattern |310| **transactions** | Transaction events with vote/failure/account filters |311| **transactionsStatus** | Lightweight transaction status updates |312| **slots** | Slot progression and status changes |313| **blocks** | Full block data with optional tx/account inclusion |314| **blocksMeta** | Block metadata without full contents |315| **entry** | PoH entry updates |316317See [references/yellowstone-grpc-reference.md](references/yellowstone-grpc-reference.md) for complete Yellowstone gRPC documentation.318319## HyperCore (Hyperliquid)320321Quicknode's data delivery infrastructure for the Hyperliquid L1 chain. Provides gRPC, JSON-RPC, WebSocket, and Info API access. Currently in public beta.322323### Access Methods324325| Method | Path / Port | Use Case |326|--------|-------------|----------|327| **Info API** | `/info` (POST) | 50+ methods for market data, positions, orders |328| **JSON-RPC** | `/hypercore` (POST) | Block queries (`hl_getBlock`, `hl_getBatchBlocks`) |329| **WebSocket** | `/hypercore/ws` | Real-time subscriptions (`hl_subscribe`) |330| **gRPC** | Port 10000 | Lowest-latency streaming for trades, orders, books |331332### gRPC Stream Types333334| Stream | Volume | Description |335|--------|--------|-------------|336| **TRADES** | High | Execution data: coin, price, size, side, fees |337| **ORDERS** | Very High | Order lifecycle with 18+ status types |338| **BOOK_UPDATES** | Very High | L2 order book diffs |339| **TWAP** | Low | Time-weighted average price order updates |340| **EVENTS** | High | Ledger updates, funding, deposits, withdrawals |341| **BLOCKS** | Extreme | Raw HyperCore blocks (gRPC only) |342| **WRITER_ACTIONS** | Low | System-level token transfers |343344### HyperEVM345346| Path | Debug/Trace | Archive | Use Case |347|------|-------------|---------|----------|348| `/evm` | No | Partial | Standard EVM operations |349| `/nanoreth` | Yes | Extended | Debug, trace, WebSocket subscriptions |350351See [references/hypercore-hyperliquid-reference.md](references/hypercore-hyperliquid-reference.md) for complete HyperCore and Hyperliquid documentation.352353## Quicknode SDK354355Official JavaScript/TypeScript SDK for Quicknode services.356357### Installation358359```bash360npm install @quicknode/sdk361```362363### Basic Usage364365```typescript366import { Core } from '@quicknode/sdk';367368const core = new Core({369 endpointUrl: process.env.QUICKNODE_RPC_URL!,370});371372// Token API373const balances = await core.client.qn_getWalletTokenBalance({374 wallet: '0x...',375});376377// NFT API378const nfts = await core.client.qn_fetchNFTs({379 wallet: '0x...',380 page: 1,381 perPage: 10,382});383```384385See [references/sdk-reference.md](references/sdk-reference.md) for complete SDK documentation.386387## Admin API388389REST API for programmatic management of Quicknode endpoints, usage, rate limits, security, billing, and teams. Enables infrastructure-as-code workflows.390391### Quick Reference392393| Resource | Methods | Endpoint |394|----------|---------|----------|395| Chains | GET | `/v0/chains` |396| Endpoints | GET, POST, PATCH, DELETE | `/v0/endpoints` |397| Metrics | GET | `/v0/endpoints/{id}/metrics` |398| Rate Limits | GET, POST, PUT | `/v0/endpoints/{id}/method-rate-limits`, `/v0/endpoints/{id}/rate-limits` |399| Security | GET | `/v0/endpoints/{id}/security_options` |400| Usage | GET | `/v0/usage/rpc`, `by-endpoint`, `by-method`, `by-chain` |401| Billing | GET | `/v0/billing/invoices` |402| Teams | GET | `/v0/teams` |403404### Authentication405406All requests use the `x-api-key` header against `https://api.quicknode.com/v0/`.407408```typescript409const QN_API_KEY = process.env.QUICKNODE_API_KEY!;410411const res = await fetch('https://api.quicknode.com/v0/endpoints', {412 headers: { 'x-api-key': QN_API_KEY },413});414const endpoints = await res.json();415```416417See [references/admin-api-reference.md](references/admin-api-reference.md) for full Admin API documentation including endpoint CRUD, usage monitoring, rate limit configuration, security options, billing, and teams.418419## Key-Value Store (Beta)420421Serverless storage for lists and key-value sets, primarily accessed from within Streams filter functions via the `qnLib` helper library. Also available via REST API.422423### Stream Integration (qnLib)424425**List operations** — manage lists of items (e.g., wallet addresses):426- `qnLib.qnUpsertList` — create or update a list427- `qnLib.qnAddListItem` — add item to a list428- `qnLib.qnRemoveListItem` — remove item from a list429- `qnLib.qnContainsListItems` — batch membership check430- `qnLib.qnDeleteList` — delete a list431432**Set operations** — manage key-value pairs:433- `qnLib.qnAddSet` — create a key-value set434- `qnLib.qnGetSet` — retrieve value by key435- `qnLib.qnBulkSets` — bulk create/remove sets436- `qnLib.qnDeleteSet` — delete a set437438Docs: https://www.quicknode.com/docs/key-value-store439440## x402 (Pay-Per-Request RPC)441442Pay-per-request RPC access via USDC micropayments on Base. No API key required — authenticate with Sign-In with Ethereum (SIWE), purchase credits, and access 140+ chain endpoints.443444### Quick Setup445446```typescript447import { wrapFetch } from "@x402/fetch";448import { createWalletClient, http } from "viem";449import { privateKeyToAccount } from "viem/accounts";450import { base } from "viem/chains";451452const account = privateKeyToAccount(process.env.PRIVATE_KEY as `0x${string}`);453const walletClient = createWalletClient({454 account,455 chain: base,456 transport: http(),457});458459// Wrap fetch to auto-handle 402 payments460const x402Fetch = wrapFetch(fetch, walletClient);461462// Use like normal fetch — payments are handled automatically463const response = await x402Fetch("https://x402.quicknode.com/ethereum-mainnet", {464 method: "POST",465 headers: { "Content-Type": "application/json" },466 body: JSON.stringify({467 jsonrpc: "2.0",468 method: "eth_blockNumber",469 params: [],470 id: 1,471 }),472});473```474475See [references/x402-reference.md](references/x402-reference.md) for complete x402 documentation including SIWE authentication, credit management, and the `@x402/fetch` wrapper.476477## Common Patterns478479### Multi-Chain dApp Setup480481```typescript482import { Core } from '@quicknode/sdk';483484const chains = {485 ethereum: new Core({486 endpointUrl: 'https://YOUR_ETH_ENDPOINT.quiknode.pro/KEY/'487 }),488 polygon: new Core({489 endpointUrl: 'https://YOUR_POLYGON_ENDPOINT.quiknode.pro/KEY/'490 }),491 arbitrum: new Core({492 endpointUrl: 'https://YOUR_ARB_ENDPOINT.quiknode.pro/KEY/'493 }),494};495496// Use appropriate chain497const ethBalance = await chains.ethereum.client.getBalance({ address: '0x...' });498```499500### Real-Time Transaction Monitoring5015021. **Create Stream** filtering for your contract address5032. **Add Filter Function** to extract relevant events5043. **Configure Webhook** destination to your server5054. **Process Events** in your backend506507### NFT Collection Indexing5085091. **Use Streams** to capture mint/transfer events5102. **Store in Database** via PostgreSQL destination5113. **Query via Add-ons** for current ownership data5124. **Query via SDK** for custom API endpoints513514### Real-Time Solana Monitoring with Yellowstone gRPC5155161. **Connect via gRPC** on port 10000 with your auth token5172. **Subscribe to transactions** filtering by program or account5183. **Process updates** in real-time via the streaming interface5194. **Implement reconnection** with exponential backoff520521### Hyperliquid Trading Data Pipeline5225231. **Connect via gRPC** on port 10000 for lowest-latency data5242. **Subscribe to TRADES/ORDERS** streams with coin filters5253. **Process events** — handle ~12 blocks/sec throughput5264. **Use Info API** (`/info`) for account state and market metadata527528## Best Practices529530### RPC531- Use WebSocket for subscriptions and real-time data532- Implement retry logic with exponential backoff533- Cache responses when data doesn't change frequently534- Use batch requests to reduce API calls535536### Streams537- Start with narrow filters, expand as needed538- Test filter functions locally before deployment539- Streams will automatically retry on failures540- Monitor stream health via dashboard541542### Security543- Store API keys in environment variables544- Enable IP allowlisting for production545- Use JWT authentication for sensitive operations546- Rotate API keys periodically547548### gRPC549- Enable zstd compression to reduce bandwidth (up to 70% for Hyperliquid)550- Implement reconnection logic with exponential backoff — streams can drop551- Use narrow filters (specific accounts, coins, or programs) to minimize data volume552- Set appropriate commitment levels (Yellowstone: CONFIRMED for most use cases, FINALIZED for irreversibility)553- Send keepalive pings (every 10s for Yellowstone, every 30s for Hypercore) to maintain connections554555## Documentation Links556557### Quicknode Products558- **Main Docs**: https://www.quicknode.com/docs/559- **Streams**: https://www.quicknode.com/docs/streams560- **Webhooks**: https://www.quicknode.com/docs/webhooks561- **IPFS**: https://www.quicknode.com/docs/ipfs562- **SDK**: https://www.quicknode.com/docs/quicknode-sdk563- **Admin API**: https://www.quicknode.com/docs/admin-api564- **DAS API (Solana)**: https://www.quicknode.com/docs/solana/solana-das-api565- **Yellowstone gRPC**: https://www.quicknode.com/docs/solana/yellowstone-grpc/overview566- **Hyperliquid**: https://www.quicknode.com/docs/hyperliquid567- **Hyperliquid gRPC**: https://www.quicknode.com/docs/hyperliquid/grpc-api568- **Key-Value Store**: https://www.quicknode.com/docs/key-value-store569- **x402**: https://x402.quicknode.com570571### Chain-Specific Docs572- **Ethereum**: https://www.quicknode.com/docs/ethereum573- **Solana**: https://www.quicknode.com/docs/solana574- **Polygon**: https://www.quicknode.com/docs/polygon575- **Arbitrum**: https://www.quicknode.com/docs/arbitrum576- **Base**: https://www.quicknode.com/docs/base577- **Optimism**: https://www.quicknode.com/docs/optimism578- **Avalanche**: https://www.quicknode.com/docs/avalanche579- **BNB Smart Chain**: https://www.quicknode.com/docs/bnb-smart-chain580- **Hyperliquid**: https://www.quicknode.com/docs/hyperliquid581582### LLM-Optimized Documentation583- **Platform Overview (llms.txt)**: https://www.quicknode.com/llms.txt — High-level index of all Quicknode products, chains, guides, and solutions584- **Docs Index (llms.txt)**: https://www.quicknode.com/docs/llms.txt — Per-chain and per-product documentation index (links to `https://www.quicknode.com/docs/{chain-or-product}/llms.txt`)585- **x402 (llms.txt)**: https://x402.quicknode.com/llms.txt586587### Additional Resources588- **Quicknode Guides**: https://www.quicknode.com/guides589- **SDK Reference**: https://www.quicknode.com/docs/quicknode-sdk590- **Marketplace**: https://marketplace.quicknode.com/591- **Sample App Library**: https://www.quicknode.com/sample-app-library592- **Guide Examples Repo**: https://github.com/quiknode-labs/qn-guide-examples