Sitowise
API

GET /api/distributions

The public run of distribution rounds. Each row carries what it credited, to how many nodes, when, and where the money came from.

Request

Request
GET /api/distributions
GET /api/distributions?limit=200
ParameterInRules
limitQueryRows to return. Default 50, maximum 200. Out of range is a 400.

Response

200 application/json
[
  {
    "id": 613,
    "mode": "treasury",
    "totalWei": "768000000000000",
    "nodeCount": 128,
    "createdAt": "2026-08-24T11:02:41.008Z"
  },
  {
    "id": 612,
    "mode": "treasury",
    "totalWei": "742000000000000",
    "nodeCount": 128,
    "createdAt": "2026-08-24T11:00:12.771Z"
  }
]
FieldTypeMeaning
idnumberRound id. Matches distributionId on a credit from GET /api/node/:id.
modestring or nulltreasury means Sitowise funded this round. swaps means it came from hook revenue. The hook is not deployed, so no round carries swaps today.
totalWeistringCredited across the whole round, in wei
nodeCountnumberNodes included in the round
createdAtstring or nullISO 8601 UTC, when the round was recorded

Plotted

The chart below calls this endpoint and buckets the rounds it gets back, hourly across a day or daily across a week.

Credited value over time

No data yetNo distribution rounds have been recorded in the last 24 hours.

Last 24 hours0.000000 ETH0 rounds
Live from GET /api/distributions. An empty window says so rather than drawing a line at zero.

Ordering and paging

Newest first, ordered by creation time then id. There is no cursor and no offset parameter: raise limit to widen the window, up to 200. A client that needs the complete history should keep its own copy and poll for rows newer than the highest id it has seen.

The response is an array, not an envelope, so there is no total count in the payload. The protocol-wide totals live on GET /api/stats.

Caching and limits

PropertyValue
Cache-Controlpublic, max-age=0, s-maxage=10, stale-while-revalidate=30
Rate limit60 requests per minute per IP

Errors

StatusBodyWhen
400{ "error": "…" }limit is not a whole number between 1 and 200
429{ "error": "Too many requests…" }Over the per-IP limit
503{ "error": "This service is not available right now." }The service is misconfigured

Example

curl and jq
# how many recent rounds were funded by Sitowise rather than by swaps
curl -s "https://sitowise.xyz/api/distributions?limit=200" \
  | jq 'group_by(.mode) | map({mode: .[0].mode, rounds: length})'

# total credited across the rounds returned
curl -s "https://sitowise.xyz/api/distributions?limit=200" \
  | jq '[.[].totalWei | tonumber] | add'

As everywhere, tonumber is fine for a glance and wrong for accounting. Use a big-integer type when the figure matters.