REST API
The public mainnet node is https://mainnet-node.decentralchain.io. There is no API key, no account and no rate limit to negotiate. It reflects the request Origin header, so a page on any domain can read it straight from the browser, which is how the live figures elsewhere on this site are fetched.
curl -s https://mainnet-node.decentralchain.io/blocks/height
GET /blocks/height
{ height }
{"height":2325029}GET /blocks/headers/last
height, id, generator, timestamp, transactionCount, blocksize, signature, nxt-consensus.base-target, VRF
GET /blocks/last
The full last block, transactions included.
GET /node/status
{ blockchainHeight, stateHeight, updatedTimestamp, updatedDate }
{"blockchainHeight":2325029,"stateHeight":2325029,
"updatedTimestamp":1788286810695,
"updatedDate":"2026-09-01T18:20:10.695Z"}GET /node/version
{ version }
{"version":"DCC v1.3.5"}Balances are returned in dcclets. One DCC is 100,000,000 dcclets, so divide by 1e8 before showing a figure to anyone.
GET /addresses/balance/{address}
{ address, confirmations, balance } — balance in dcclets, 8 decimals
{"address":"3DhKtKgynxyh9K2YrEMLgLBM8AMuLkKdkRn",
"confirmations":0,
"balance":2003965409300000}GET /addresses
Addresses held in the node wallet, not the whole chain.
GET /assets/details
Asset metadata by id.
GET /activation/status
height, votingInterval, votingThreshold, and every feature with its blockchainStatus
GET /consensus/algo
{ consensusAlgo }
{"consensusAlgo":"Fair Proof-of-Stake (FairPoS)"}GET /peers/connected
{ peers } — who this node is talking to right now.
/activation/status is the interesting one: it is the network's own account of which protocol features are on, which are being voted on, and at what height each activated. The features page renders it live.
GET /blockchain/rewards returns error 199, not data. Block rewards are feature 14 and it has never activated, so there is no reward state to report. Treat the 400 as the answer rather than as an outage.
GET /debug/configInfo returns 403 on the public node, as it should. Debug routes are not exposed and should stay that way on any node you run.
The same API is what your own node serves, on port 6869. Nothing in this reference is specific to the hosted node, so swapping the base URL is the whole migration.
curl -s http://localhost:6869/blocks/height
On mainnet the REST API binds to 127.0.0.1 by default. Leave it that way unless you mean to publish it, and put a reverse proxy in front if you do. The node page covers running one.
Next
SDK packages
The TypeScript and JVM libraries that wrap this API, and which of them you can actually install.