Public API
Free, read-only JSON for everything public on the GENORYN chain — plus a live event stream and CSV exports. No key, no signup, CORS enabled.
Exact numbers
All monetary values are decimal strings in gori (1 GNR = 10¹² gori). Parse them with a big-integer type, never a float.
Fair use
600 requests per minute per IP. For heavy use, run your own node with --public-rpc — it's the same data.
Privacy by design
There is no balance, history or rich-list endpoint, and there never will be. Those don't exist on chain.
GET/api/v1/statsChain summary: height, difficulty, hashrate, supply, peers, mempool, totals; stale, last_updated and error tell whether the node answered
Chain summary: height, difficulty, hashrate, supply, peers, mempool, totals; stale, last_updated and error tell whether the node answered
/api/v1/statsGET/api/v1/healthServer and indexer health: node_online, stale, last_updated (unix seconds), error, indexed height
Server and indexer health: node_online, stale, last_updated (unix seconds), error, indexed height
/api/v1/healthGET/api/v1/blocks?limit=5Latest blocks (limit ≤ 100, paginate with before=height)
Latest blocks (limit ≤ 100, paginate with before=height)
/api/v1/blocks?limit=5GET/api/v1/block/{height|hash}Block detail with header fields and transactions
Block detail with header fields and transactions
/api/v1/block/1GET/api/v1/block/{id}/rawFull raw block JSON exactly as served by the node
Full raw block JSON exactly as served by the node
/api/v1/block/1/raw DownloadGET/api/v1/txs?limit=10&kind=transferLatest transactions; kind=transfer for shielded transfers only
Latest transactions; kind=transfer for shielded transfers only
/api/v1/txs?limit=10&kind=transferGET/api/v1/tx/{txid}Transaction detail with every action (nullifier, cmx, rk, ciphertext sizes)
Transaction detail with every action (nullifier, cmx, rk, ciphertext sizes)
/api/v1/tx/{txid}GET/api/v1/tx/{txid}/rawRaw transaction JSON
Raw transaction JSON
/api/v1/tx/{txid}/rawGET/api/v1/nullifier/{hex}Has this nullifier been revealed on chain? In which transaction?
Has this nullifier been revealed on chain? In which transaction?
/api/v1/nullifier/{hex}GET/api/v1/commitment/{hex}Where was this note commitment created, and how many confirmations?
Where was this note commitment created, and how many confirmations?
/api/v1/commitment/{hex}GET/api/v1/search?q={query}Classify a height, hash, txid, nullifier, commitment, address or @name
Classify a height, hash, txid, nullifier, commitment, address or @name
/api/v1/search?q=1GET/api/v1/supplyLive issuance and reward fields from the node, including early_issued and current_early_reward (decimal strings in gori)
Live issuance and reward fields from the node, including early_issued and current_early_reward (decimal strings in gori)
/api/v1/supplyGET/api/v1/emission/{height}Exact consensus supply schedule at any height (computed)
Exact consensus supply schedule at any height (computed)
/api/v1/emission/2102901GET/api/v1/emission-curveIssued supply by protocol year, 0–40
Issued supply by protocol year, 0–40
/api/v1/emission-curveGET/api/v1/charts/{metric}?limit=240Series for difficulty, blocktime, txs, fees, size or actions
Series for difficulty, blocktime, txs, fees, size or actions
/api/v1/charts/difficulty?limit=20GET/api/v1/genesisDeterministic genesis record, canonical preimage and hash
Deterministic genesis record, canonical preimage and hash
/api/v1/genesisGET/api/v1/peersPeer summary of the genoryn.io node (addresses masked)
Peer summary of the genoryn.io node (addresses masked)
/api/v1/peersGET/api/v1/miningLive stats of the genoryn.io CPU miner plus network summary
Live stats of the genoryn.io CPU miner plus network summary
/api/v1/miningGET/api/v1/names/{name}On-chain username: registered record, pending registration, availability and burned price
On-chain username: registered record, pending registration, availability and burned price
/api/v1/names/satoshiGET/api/v1/names/owner/{owner}Names registered by one Ed25519 owner key (64 hex)
Names registered by one Ed25519 owner key (64 hex)
/api/v1/names/owner/{owner}GET/api/v1/address/{address}Offline Bech32m validation. Never returns a balance (there is none to return)
Offline Bech32m validation. Never returns a balance (there is none to return)
/api/v1/address/{address}GET/api/v1/seedThe genoryn.io seed: clearnet address and seed lists; onion address and Quick-mode source once published (null until then)
The genoryn.io seed: clearnet address and seed lists; onion address and Quick-mode source once published (null until then)
/api/v1/seedGET/api/v1/releasesGitHub releases with assets and SHA-256 checksums (cached 10 min)
GitHub releases with assets and SHA-256 checksums (cached 10 min)
/api/v1/releasesGET/api/v1/export/blocks.csv?from=1&to=1000CSV export of block headers and totals (≤ 10,000 blocks)
CSV export of block headers and totals (≤ 10,000 blocks)
/api/v1/export/blocks.csv?from=1&to=1000 DownloadGET/api/v1/export/txs.csv?from=1&to=1000CSV export of transactions (≤ 10,000 blocks)
CSV export of transactions (≤ 10,000 blocks)
/api/v1/export/txs.csv?from=1&to=1000 DownloadGET/api/v1/liveServer-Sent Events: stats, block, miner, reorg
Server-Sent Events: stats, block, miner, reorg
/api/v1/liveUse it anywhere
$ curl -s https://genoryn.io/api/v1/stats | jq .height
$ curl -s "https://genoryn.io/api/v1/blocks?limit=3" | jq '.blocks[].hash'
$ curl -N https://genoryn.io/api/v1/live # live eventsconst es = new EventSource('https://genoryn.io/api/v1/live');
es.addEventListener('block', (e) => {
const b = JSON.parse(e.data);
console.log('new block', b.height, b.hash);
});
// gori -> GNR, exactly
const gnr = (g) => (BigInt(g) / 10n ** 12n) + '.' + (BigInt(g) % 10n ** 12n).toString().padStart(12, '0');Talk to a node directly
Every genorynd exposes versioned HTTP RPC. Default Mainnet 1.0 ports: 29711 admin (loopback only, HTTP 401 without the token), 29712 optional public read-only.
| Endpoint | Access | Description |
|---|---|---|
| GET /v1/info | public | Network, chain, genesis, height, best hash, difficulty, target-implied hashrate, peers, mempool, database size |
| GET /v1/genesis | public | Height-zero record, canonical preimage and hash |
| GET /v1/supply | public | Integer issuance and reward fields as decimal strings (normal, early and treasury, plus early_blocks) |
| GET /v1/blocks?from=H&limit=1 | public | One full encrypted block starting at height H |
| GET /v1/names?name= | public | On-chain username status: registered (receiver, owner, sequence, heights, txid, burned), pending, available, price |
| GET /v1/names/owner?owner= | public | Names of one owner key plus pending registrations |
| GET /v1/usernames?username= | public | Legacy local signed receiver bundle (compatibility only) |
| GET /v1/mempool/nullifiers | public | Nullifiers spent by transactions waiting in the mempool (lets wallets avoid double-spending their own pending coins) |
| POST /v1/relay | public | Hand over a signed shielded transaction for relay — used by Quick-mode wallets over Tor |
| GET /v1/peers | admin | Connected peers |
| GET /v1/network | admin | Network mode, Tor status and onion address (never exposed on public RPC) |
| POST /v1/mine/template | admin + token | Genuine reward proof and block template for a receiving address |
| POST /v1/mine/submit | admin + token | Submit a full candidate block |
| POST /v1/transactions | admin + token | Submit a signed private transaction (success = mempool only) |
| POST /v1/usernames | admin + token | Register a signed ownership bundle |
Authorization: Bearer <admin.token>, bind to loopback only and are omitted entirely in public mode. Private keys and passwords never belong in RPC requests.