API
GET /api/stats
Four protocol-wide counters in one object. No parameters, no authentication, cached for a few seconds.
Request
Request
GET /api/statsTakes no parameters. Anything in the query string is ignored.
Response
200 application/json
{
"totalNodes": 128,
"operators": 43,
"totalDistributedWei": "4183200000000000",
"distributions24hWei": "552960000000000"
}Those figures are shape, not data. For what the endpoint actually returns right now, see Live response below or call it yourself.
| Field | Type | Meaning |
|---|---|---|
totalNodes | number | Active nodes in the ledger. Retired nodes are not counted. |
operators | number | Distinct wallet addresses holding at least one active node. |
totalDistributedWei | string | Total credited across every distribution round, in wei. |
distributions24hWei | string | Credited in rounds recorded in the last 24 hours, in wei. |
Live response
Read from this endpoint right now. Each cell says "No data yet" rather than showing a zero it cannot justify.
Nodes deployed
No data yet
Operators
No data yet
Credited total
No data yet
Credited 24h
No data yet
Notes and caveats
- Distributed is not withdrawn. These figures count what has been credited to nodes, not what holders have taken out. The withdrawn total is on chain as
totalWithdrawn(). - Operators is addresses, not people. One person can hold several addresses. See Limits.
- Active only. Both counts filter to active nodes, so retiring a node lowers
totalNodeswithout any node being destroyed. - Rounds, not seconds. The 24 hour figure covers rounds recorded in that window, so it steps rather than sliding smoothly.
These are historical totals, not a forecast. Nothing here should be read as a rate of return, and Sitowise publishes no projection of what a node will earn. During the launch period the value behind these numbers is funded by Sitowise; see Risks.
Caching and limits
| Property | Value |
|---|---|
| Cache-Control | public, max-age=0, s-maxage=10, stale-while-revalidate=30 |
| Server memo | Up to 10 seconds per instance, so a spike is one query rather than thousands |
| Rate limit | 120 requests per minute per IP |
Errors
| Status | Body | When |
|---|---|---|
| 429 | { "error": "Too many requests. Slow down and try again shortly." } | Over the per-IP limit |
| 503 | { "error": "This service is not available right now." } | The service is misconfigured, for example no database is reachable |
| 500 | { "error": "Something went wrong. Try again in a moment." } | An unexpected failure. Details go to the server log, never to the client. |
Example
curl and jq
curl -s https://sitowise.xyz/api/stats | jq
# credited in the last day, in ETH, without losing precision
curl -s https://sitowise.xyz/api/stats \
| jq -r '.distributions24hWei' \
| awk '{printf "%.6f ETH\n", $1 / 1e18}'