API

JSON API

The representatives of the Nano network as JSON, for wallets and other services. You need no key. Browsers can call the API from any site. The monitor reads the representatives once per minute. Each IP can send 30 requests per minute, up to 10 of them at once. A service with many users should cache the answers for 60 seconds.

The OpenAPI description lists the endpoints and fields for client generators.

All representatives

GET /api/v1/representatives

Try it →

All representatives with 1,000 XNO or more, by voting weight from high to low.

show
Keeps only the online or the principal representatives.
verdict
Keeps only the representatives with this verdict: good, couldBeBetter or offline.
{
  "takenAt": 1793370628,
  "latestRelease": "28.2",
  "onlineStakeRaw": "87343480278173981825737344018516580523",
  "quorumRaw": "58520131786376567823244020492406108950",
  "nakamotoCoefficient": 11,
  "representatives": [
    {
      "account": "nano_34zuxqdsucurhjrmpc4aixzbgaa4wjzz6bn5ryn56emc9tmd3pnxjoxfzyb6",
      "name": "Nano Germany 🇩🇪",
      "rank": 41,
      "weightRaw": "581277156683235738761807800437556804",
      "weight": 581277.1566832357,
      "share": 0.0066550720767247626,
      "online": true,
      "principal": true,
      "node": {
        "implementation": "nano-node",
        "version": "28.2",
        "cementedBlocks": 225839460,
        "uptimeSeconds": 372433,
        "inSync": true
      },
      "verdict": "good",
      "outdated": false,
      "crowded": false
    }
  ]
}

One representative

GET /api/v1/representatives/{address}

Try it with nanonode.de →

One representative with its voting weight, rank, uptime and node health per UTC day, oldest first.

address
A nano_ or xrb_ address.
{
  "takenAt": 1793370628,
  "latestRelease": "28.2",
  …,
  "representative": { "account": "nano_34zuxqdsucurhjrmpc4aixzbgaa4wjzz6bn5ryn56emc9tmd3pnxjoxfzyb6", … },
  "history": [
    {
      "date": "2026-10-30",
      "weight": 581277,
      "rank": 41,
      "uptime": 1.0,
      "polls": 874,
      "inSyncRate": 1.0,
      "telemetryPolls": 874,
      "implementation": "nano-node",
      "version": "28.2"
    }
  ]
}

Fields

Both endpoints

takenAt
The time of the reading in Unix seconds.
latestRelease
The latest nano-node release that is out for 4 weeks or longer, such as 28.2. null until the monitor has read the releases.
onlineStakeRaw
The online voting weight of the network in raw, as a string.
quorumRaw
The online voting weight in raw that confirms a block, as a string.
nakamotoCoefficient
The fewest online representatives that together reach the quorum. null while the online representatives do not reach it.

A representative

account
The address of the representative.
name
Its name from a list of known accounts, or null.
rank
Its rank by voting weight among all representatives, from 1.
weightRaw
Its voting weight in raw, as a string.
weight
Its voting weight in XNO.
share
Its share of the online voting weight, from 0 to 1. 0.0225 is 2.25%.
online
The node of the monitor has seen votes from it recently.
principal
It is online and holds at least 0.1% of the online voting weight.
node
Implementation (nano-node or rsnano), version, cemented blocks, uptime and sync state of its node, from telemetry. null if the node of the monitor is not connected to it.
verdict
Whether accounts should delegate to it, the same check as on the account page. good if it is principal, not outdated and not crowded. offline if it is offline. couldBeBetter otherwise. It does not check the health of its node, such as inSync. outdated: null counts as not outdated.
outdated
Its node runs a nano-node version older than latestRelease. null if the monitor cannot compare: node or latestRelease is null, or the node runs rsnano.
crowded
It holds 3% or more of the online voting weight.

A day of history

date
The UTC day.
weight
Its voting weight in whole XNO.
rank
Its rank by voting weight on this day, from 1.
uptime
The share of the polls of the day that found it online, from 0 to 1. null if polls is 0.
polls
How often the monitor read the representatives on this day: once per minute, but not while its node is syncing. Today has the polls so far. 0 for the days before the monitor counted them.
inSyncRate
The share of the telemetryPolls that found its node in sync, as in node.inSync, from 0 to 1. null if telemetryPolls is 0 or null.
telemetryPolls
How many of the polls had telemetry of its node. The monitor only gets telemetry from the nodes that its node is connected to, mostly principal representatives. null for the days before the monitor counted them.
implementation
The implementation of its node at the last poll of the day with telemetry. null if no poll of the day had telemetry.
version
The version of its node at the last poll of the day with telemetry, such as 28.2. null if no poll of the day had telemetry.

Errors

{"error": "…"} with status 400 for a wrong request, 404 for an account without voting weight, and 503 until the monitor has read the representatives.