api.genoryn.dev

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.

// Base URL: https://genoryn.io/api/v1

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/stats
GET/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/health
GET/api/v1/blocks?limit=5Latest blocks (limit ≤ 100, paginate with before=height)

Latest blocks (limit ≤ 100, paginate with before=height)

/api/v1/blocks?limit=5
GET/api/v1/block/{height|hash}Block detail with header fields and transactions

Block detail with header fields and transactions

/api/v1/block/1
GET/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 Download
GET/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=transfer
GET/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}/raw
GET/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=1
GET/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/supply
GET/api/v1/emission/{height}Exact consensus supply schedule at any height (computed)

Exact consensus supply schedule at any height (computed)

/api/v1/emission/2102901
GET/api/v1/emission-curveIssued supply by protocol year, 0–40

Issued supply by protocol year, 0–40

/api/v1/emission-curve
GET/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=20
GET/api/v1/genesisDeterministic genesis record, canonical preimage and hash

Deterministic genesis record, canonical preimage and hash

/api/v1/genesis
GET/api/v1/peersPeer summary of the genoryn.io node (addresses masked)

Peer summary of the genoryn.io node (addresses masked)

/api/v1/peers
GET/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/mining
GET/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/satoshi
GET/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/seed
GET/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/releases
GET/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 Download
GET/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 Download
GET/api/v1/liveServer-Sent Events: stats, block, miner, reorg

Server-Sent Events: stats, block, miner, reorg

/api/v1/live
Examples

Use it anywhere

curl
$ 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 events
JavaScript
const 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');
Node RPC v1

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.

EndpointAccessDescription
GET /v1/infopublicNetwork, chain, genesis, height, best hash, difficulty, target-implied hashrate, peers, mempool, database size
GET /v1/genesispublicHeight-zero record, canonical preimage and hash
GET /v1/supplypublicInteger issuance and reward fields as decimal strings (normal, early and treasury, plus early_blocks)
GET /v1/blocks?from=H&limit=1publicOne full encrypted block starting at height H
GET /v1/names?name=publicOn-chain username status: registered (receiver, owner, sequence, heights, txid, burned), pending, available, price
GET /v1/names/owner?owner=publicNames of one owner key plus pending registrations
GET /v1/usernames?username=publicLegacy local signed receiver bundle (compatibility only)
GET /v1/mempool/nullifierspublicNullifiers spent by transactions waiting in the mempool (lets wallets avoid double-spending their own pending coins)
POST /v1/relaypublicHand over a signed shielded transaction for relay — used by Quick-mode wallets over Tor
GET /v1/peersadminConnected peers
GET /v1/networkadminNetwork mode, Tor status and onion address (never exposed on public RPC)
POST /v1/mine/templateadmin + tokenGenuine reward proof and block template for a receiving address
POST /v1/mine/submitadmin + tokenSubmit a full candidate block
POST /v1/transactionsadmin + tokenSubmit a signed private transaction (success = mempool only)
POST /v1/usernamesadmin + tokenRegister a signed ownership bundle
Admin routes require Authorization: Bearer <admin.token>, bind to loopback only and are omitted entirely in public mode. Private keys and passwords never belong in RPC requests.