Kadia Ergo Node

node.kadia.io · Ergo mainnet

A public Ergo node.
Just point and read.

Read blocks, boxes, tokens, balances and the mempool, or submit a signed transaction — straight from a browser, a script or your dApp. No API key, no sign-up, CORS open to every origin.

Base URL https://node.kadia.io

01 / Quick start

Four calls cover most apps.

Where is the chain?

Tip height, header id, peers and mempool size in one call.

curl https://node.kadia.io/info

What can an address spend?

Unspent boxes, newest first. Page with offset and limit.

curl "https://node.kadia.io/blockchain/box/unspent/byAddress/$ADDRESS?limit=10"

What does it hold?

Confirmed and unconfirmed ERG and token balances.

curl https://node.kadia.io/blockchain/balanceForAddress/$ADDRESS

Send a signed transaction.

Dry-run it with /transactions/check first; /transactions broadcasts it and returns the id.

curl -X POST https://node.kadia.io/transactions \
  -H "Content-Type: application/json" \
  --data @signed-tx.json

From JavaScript

Any origin can call the node directly — no proxy needed.

const info = await fetch('https://node.kadia.io/info').then((r) => r.json());
console.log(info.fullHeight, info.bestFullHeaderId);

02 / What's open

Every public route.

These follow the standard Ergo node REST API, so existing clients and SDKs work unchanged. Each route below was checked against this node. Pick Try to load it into the console with live example values. The machine-readable contract is openapi.json (OpenAPI 3, only the routes listed here).

Node

Chain tip, sync state and network time.

2
  • GET/infoNode status: tip height, header ids, peers, mempool size, version
  • GET/peers/statusTime of the last incoming peer message and the node's clock

Blocks

Headers and full blocks by id, height or range, plus Merkle proofs.

10
  • GET/blocksHeader ids for a range of heights (offset = start height)
  • GET/blocks/at/{blockHeight}Header ids at a height
  • GET/blocks/chainSliceHeaders between two heights
  • GET/blocks/{headerId}Full block: header, transactions, extension, AD proofs
  • POST/blocks/headerIdsFull blocks for a list of header ids
  • GET/blocks/{headerId}/headerBlock header
  • GET/blocks/{headerId}/transactionsTransactions in a block
  • GET/blocks/{headerId}/proofFor/{txId}Merkle proof that a transaction is in a block
  • GET/blocks/lastHeaders/{count}The most recent headers
  • GET/blocks/modifier/{modifierId}Any block section by its modifier id

Send and fees

Check or broadcast signed transactions; fee and wait-time estimates.

7
  • POST/transactionsBroadcast a signed transaction (JSON); returns its id
  • POST/transactions/bytesBroadcast a signed transaction (hex bytes); returns its id
  • POST/transactions/checkValidate a signed transaction (JSON) without broadcasting
  • POST/transactions/checkBytesValidate a signed transaction (hex bytes) without broadcasting
  • GET/transactions/poolHistogramMempool fee histogram by expected wait
  • GET/transactions/getFeeRecommended fee in nanoERG for a wait time and size
  • GET/transactions/waitTimeExpected wait in ms for a fee and size

Mempool

Transactions waiting to be mined on this node.

6
  • GET/transactions/unconfirmedMempool transactions, paged
  • HEAD/transactions/unconfirmed/{txId}Is this transaction in the mempool? (200 or 404)
  • GET/transactions/unconfirmed/byTransactionId/{txId}One mempool transaction
  • GET/transactions/unconfirmed/transactionIdsIds of every mempool transaction
  • POST/transactions/unconfirmed/byTransactionIdsMempool transactions for a list of ids
  • POST/transactions/unconfirmed/byErgoTreeMempool transactions touching an ErgoTree

UTXO set

Unspent boxes straight from the state, with or without the mempool.

7
  • GET/utxo/byId/{boxId}Unspent box by id
  • GET/utxo/byIdBinary/{boxId}Unspent box by id, as serialized hex
  • GET/utxo/withPool/byId/{boxId}Box by id from the UTXO set or the mempool
  • POST/utxo/withPool/byIdsBoxes for a list of ids, UTXO set or mempool
  • GET/utxo/withPool/byIdBinary/{boxId}Box by id as serialized hex, UTXO set or mempool
  • GET/utxo/getSnapshotsInfoUTXO snapshots stored on this node
  • GET/utxo/genesisThe genesis boxes

Indexed chain

Addresses, tokens, balances and history from the node's extra index.

23
  • GET/blockchain/indexedHeightHow far the extra index has caught up
  • GET/blockchain/block/byHeaderId/{headerId}Indexed block by header id
  • POST/blockchain/block/byHeaderIdsIndexed blocks for a list of header ids
  • GET/blockchain/transaction/byId/{txId}Confirmed transaction by id, with addresses and indexes
  • GET/blockchain/transaction/byIndex/{txIndex}Confirmed transaction by global index
  • POST/blockchain/transaction/byAddressTransactions for an address (address as JSON string)
  • GET/blockchain/transaction/byAddress/{address}Transactions for an address
  • GET/blockchain/box/byId/{boxId}Box by id, spent or unspent
  • GET/blockchain/box/byIndex/{boxIndex}Box by global index
  • GET/blockchain/box/byTokenId/{tokenId}Boxes that ever held a token
  • GET/blockchain/box/unspent/byTokenId/{tokenId}Unspent boxes holding a token
  • POST/blockchain/box/byAddressBoxes for an address (address as JSON string)
  • GET/blockchain/box/byAddress/{address}Boxes for an address, spent or unspent
  • POST/blockchain/box/unspent/byAddressUnspent boxes for an address (address as JSON string)
  • GET/blockchain/box/unspent/byAddress/{address}Unspent boxes for an address, newest first
  • GET/blockchain/box/byTemplateHash/{hash}Boxes by contract template hash
  • GET/blockchain/box/unspent/byTemplateHash/{hash}Unspent boxes by contract template hash
  • POST/blockchain/box/byErgoTreeBoxes for an ErgoTree (hex as JSON string)
  • POST/blockchain/box/unspent/byErgoTreeUnspent boxes for an ErgoTree (hex as JSON string)
  • GET/blockchain/token/byId/{tokenId}Token name, decimals, supply and minting box
  • POST/blockchain/tokensToken details for a list of ids
  • POST/blockchain/balanceConfirmed and unconfirmed balance (address as JSON string)
  • GET/blockchain/balanceForAddress/{address}Confirmed and unconfirmed balance for an address

03 / Try it

Send a request.

Requests go straight from your browser to the node. POST /transactions and /transactions/bytes broadcast for real.

Ready
Pick a route above, or press Send to call GET /info.

04 / Good to know

The small print.

Open by design

  • No API key and no sign-up.
  • CORS allows every origin for GET, POST and HEAD.
  • Request bodies are capped at 1 MB.
  • Amounts are nanoERG integers — keep them as strings or BigInt in JavaScript.

Closed on purpose

  • Wallet, scans, mining and node control.
  • Peer management and the operator dashboard (/api/v1/*, /metrics).
  • Storage-rent listings (/blockchain/storageRent/*).
  • Anything not listed above answers 403.

Fair use

  • A shared, best-effort service with no uptime guarantee.
  • For bulk indexing or heavy polling, run your own node.
  • For address history, token holders and search, use the Kadia explorer API.