Skip to content

Endpoints ​

One gateway host, one path per chain:

https://rpc.nodes.koshelek.ru/<chain>

All endpoints require the apikey header (Authentication). The same host also serves WebSocket subscriptions (wss://…/ws/<chain>) and gRPC (rpc.nodes.koshelek.ru:443) for the chains marked below.

Chain matrix ​

Every chain below is served by nodes we operate; its page (first column) has the methods, limits and examples. WS = WebSocket subscriptions (details); gRPC = native gRPC (details).

ChainPathProtocolBatchWSgRPCNotes
Ethereum/ethJSON-RPC 2.0yesyesnodebug_* blocked; heavy methods guarded
BNB Smart Chain/bscJSON-RPC 2.0yesyesno
Bitcoin/btcJSON-RPC 1.0 (bitcoind)yesnonoload-balanced across nodes
Litecoin/ltcJSON-RPC 1.0 (litecoind)yesnono
Bitcoin Cash/bchJSON-RPC 1.0 (BCHN)see pagenonono estimatesmartfee (use estimatefee)
Dogecoin/dogeJSON-RPC 1.0 (dogecoind)yesnono~1 min blocks; fees are DOGE-denominated
Dash/dashJSON-RPC 1.0 (dashd)yesnono
Liquid/liquidJSON-RPC 1.0 (elementsd)yesnonoBitcoin sidechain
XRP Ledger/xrprippled JSON-RPCnoyesnorippled has no batch
Stellar/xlmstellar-core RESTnononoGET only; core info endpoints
TRON/tronREST (java-tron HTTP API)nonoyesPOST /tron/wallet/<method>
TON/tonTonCenter HTTP (via ton-http-api)nononoJSON-RPC at /ton/jsonRPC + REST (/ton/getMasterchainInfo, …)
NEAR/nearJSON-RPC 2.0yesnono
Aptos/aptosREST (fullnode API v1)nononoGET /aptos/v1/...
Sui/suiJSON-RPC 2.0yesnono
Cardano/cardanoOgmios JSON-RPCyesyesnoqueryNetwork/*, queryLedgerState/*

Aliases: /bitcoin→/btc, /ethereum→/eth, /ripple→/xrp, /stellar→/xlm, /litecoin→/ltc (for project chain-scoping purposes; the gateway paths above are the canonical ones).

Per-location availability

The matrix above lists every chain the platform serves. A deployment location may serve a subset of it, and a chain can be temporarily withdrawn while its nodes are migrated between locations. A chain that is not served where you're connected answers with JSON-RPC error -32601"chain not available at this location" (WebSocket paths return HTTP 404 with the same message) — see Errors. Your API key is fine; retry on a location that serves the chain or check back after maintenance.

Two request styles ​

JSON-RPC chains — POST the JSON-RPC envelope to the chain path:

bash
curl -X POST https://rpc.nodes.koshelek.ru/eth \
  -H "apikey: $YOUR_API_KEY" -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":1}'

REST chains — append the upstream API path after the chain segment:

bash
# TRON: java-tron wallet API
curl -X POST https://rpc.nodes.koshelek.ru/tron/wallet/getnowblock \
  -H "apikey: $YOUR_API_KEY"

# Aptos: fullnode REST v1
curl https://rpc.nodes.koshelek.ru/aptos/v1 \
  -H "apikey: $YOUR_API_KEY"

Stellar (/xlm) is GET-only at the gateway: a POST returns Kong's 404 {"message":"no Route matched with those values"}.

Batch requests ​

JSON-RPC chains accept arrays. Responses are correlated by id (order is not guaranteed), each element is cached and metered individually:

bash
curl -X POST https://rpc.nodes.koshelek.ru/eth \
  -H "apikey: $YOUR_API_KEY" -H 'Content-Type: application/json' \
  -d '[{"jsonrpc":"2.0","method":"eth_chainId","params":[],"id":1},
       {"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":2}]'

Response caching ​

The gateway caches per method class — you can always tell from the X-Cache: HIT|MISS response header:

ClassExamplesTTL
Immutableeth_getTransactionReceipt, getrawtransaction, confirmed blocks by hashindefinite
Staticeth_chainId, net_version, getnodeinfoindefinite
Shorteth_blockNumber (2 s), getblockcount (10 s), eth_gasPrice (5 s), getMasterchainInfo (2 s)1–30 s
Neverevery submit/broadcast, eth_estimateGas, eth_call*—

* eth_call uses a 2 s TTL keyed on call data; state-changing simulation is safe because nothing is executed on-chain.

If your use case needs a guaranteed-fresh value (e.g. polling chain height in tests), prefer an uncached method of the same family — e.g. getmininginfo instead of getblockcount on bitcoind chains.

WebSockets ​

Chains marked WS in the matrix stream native subscriptions over

wss://rpc.nodes.koshelek.ru/ws/<chain>?apikey=<YOUR_API_KEY>

The key rides the ?apikey= query parameter (browser WebSocket() can't set headers) or the apikey header for everything else; the handshake is authenticated exactly like an HTTPS call, then frames pipe verbatim to the chain node (eth_subscribe, XRPL subscribe, Ogmios). The WebSocket chains are Ethereum, BNB Smart Chain, XRP Ledger and Cardano; per-chain examples + reconnect guidance: WebSockets.

gRPC ​

Chains marked gRPC in the matrix (TRON) are additionally served over native gRPC (TLS, key in apikey metadata, no path prefix — routing is by proto package: protocol.* → TRON). Two entries: rpc.nodes.koshelek.ru:8443 supports every call shape; rpc.nodes.koshelek.ru:443 handles unary + server-streaming. The gateway does not expose server reflection, so pass the java-tron protos explicitly:

bash
grpcurl -H "apikey: $YOUR_API_KEY" \
  -import-path ./protocol -proto api/api.proto \
  rpc.nodes.koshelek.ru:443 protocol.Wallet/GetNowBlock

Port semantics + details: gRPC.