Skip to main content

Documentation Index

Fetch the complete documentation index at: https://polynode.mintlify.app/llms.txt

Use this file to discover all available pages before exploring further.

Endpoint

https://rpc.polynode.dev
Standard Ethereum JSON-RPC over HTTPS. Drop-in replacement for any Polygon RPC — just change the URL and add your API key.

Authentication

Every request requires a valid polynode API key. Pass it as a header:
x-api-key: YOUR_API_KEY
Or as a Bearer token:
Authorization: Bearer YOUR_API_KEY
Requests without a valid key receive a -32000 error.

Rate Limit

All keys are rate-limited to 2 requests per second per IP. Exceeding this returns a -32005 error. Batch requests count as a single request.

Supported Methods

MethodSourceDescription
eth_sendRawTransactionPriority routingP2P delivery to block-producing validator
eth_chainIdLocalReturns 0x89 (137)
eth_blockNumberLocalLatest block from P2P network
eth_gasPriceLocalCalibrated for optimal block positioning
net_versionLocalReturns 137
net_peerCountLocalConnected P2P peer count
web3_clientVersionLocalReturns PolyNode/1.0.0
eth_callP2P nodeContract read calls
eth_getBalanceP2P nodeAccount balance queries
eth_getTransactionCountP2P nodeNonce queries
eth_estimateGasP2P nodeGas estimation
eth_getBlockByNumberP2P nodeBlock data
eth_getTransactionReceiptP2P nodeTransaction receipts
eth_getLogsP2P nodeLog queries (requires address filter)
Current-state only. eth_getBalance, eth_getStorageAt, and eth_call only support the latest block tag. Historical state at old block numbers is not available. Block and transaction data works for all blocks.

Common Queries

Check a wallet’s MATIC balance

curl -X POST https://rpc.polynode.dev \
  -H "Content-Type: application/json" \
  -H "x-api-key: YOUR_API_KEY" \
  -d '{
    "jsonrpc": "2.0",
    "method": "eth_getBalance",
    "params": ["0xYOUR_WALLET_ADDRESS", "latest"],
    "id": 1
  }'
The result is the balance in wei (hex). Divide by 10^18 for MATIC.

Check a wallet’s USDC balance

Use eth_call with the ERC-20 balanceOf(address) function:
curl -X POST https://rpc.polynode.dev \
  -H "Content-Type: application/json" \
  -H "x-api-key: YOUR_API_KEY" \
  -d '{
    "jsonrpc": "2.0",
    "method": "eth_call",
    "params": [{
      "to": "0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359",
      "data": "0x70a08231000000000000000000000000YOUR_WALLET_ADDRESS_WITHOUT_0x"
    }, "latest"],
    "id": 1
  }'
Replace YOUR_WALLET_ADDRESS_WITHOUT_0x with the 40-character address (no 0x prefix), zero-padded to 64 characters. The result is the balance in the token’s smallest unit (hex). USDC has 6 decimals. Common Polygon token contracts:
TokenAddress
USDC0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359
USDC.e (bridged)0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174
USDT0xc2132D05D31c914a87C6611C10748AEb04B58e8F
WMATIC0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270
WETH0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619

Read any contract function

The data field for eth_call is the function selector (first 4 bytes of the keccak256 hash) followed by ABI-encoded arguments. Common selectors:
FunctionSelectorArguments
balanceOf(address)0x70a08231address (32 bytes, left-padded)
totalSupply()0x18160dddnone
decimals()0x313ce567none
symbol()0x95d89b41none
name()0x06fdde03none
allowance(address,address)0xdd62ed3eowner (32 bytes) + spender (32 bytes)

Get the current block number

curl -X POST https://rpc.polynode.dev \
  -H "Content-Type: application/json" \
  -H "x-api-key: YOUR_API_KEY" \
  -d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'

Get a transaction receipt

curl -X POST https://rpc.polynode.dev \
  -H "Content-Type: application/json" \
  -H "x-api-key: YOUR_API_KEY" \
  -d '{
    "jsonrpc": "2.0",
    "method": "eth_getTransactionReceipt",
    "params": ["0xYOUR_TX_HASH"],
    "id": 1
  }'

Batch Requests

Send multiple calls in a single HTTP request:
curl -X POST https://rpc.polynode.dev \
  -H "Content-Type: application/json" \
  -H "x-api-key: YOUR_API_KEY" \
  -d '[
    {"jsonrpc":"2.0","method":"eth_chainId","params":[],"id":1},
    {"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":2},
    {"jsonrpc":"2.0","method":"eth_gasPrice","params":[],"id":3}
  ]'
Batch requests count as a single request against the rate limit.

Error Codes

CodeMeaning
-32000Missing or invalid API key
-32005Rate limit exceeded (max 2 req/s)
-32601Method not available
-32602Invalid parameters
-32603Upstream error