Operator API

URnetwork API: Stats

Version 2026.9.14 · 187 operations across 14 groups.OpenAPI spec ↗

URnetwork implements the UR protocol operator spec in full. UR protocol ↗

Stats

10 operations
GET/stats/last-90PublicStats Last 90

Get network statistics for the last 90 days. The statistics are updated approximately every 60s.

1 status · show schema
200
lookback
integer
created_time
integer

Unix epoch time UTC

all_transfer_data
map

yyyy-mm-dd to count

map
integer
all_transfer_summary
integer
all_transfer_summary_rate
integer
providers_data
map

yyyy-mm-dd to count

map
integer
providers_summary
integer
countries_data
map

yyyy-mm-dd to count

map
integer
countries_summary
integer
regions_data
map

yyyy-mm-dd to count

map
integer
regions_summary
integer
cities_data
map

yyyy-mm-dd to count

map
integer
cities_summary
integer
networks_data
map

yyyy-mm-dd to count

map
integer
networks_summary
integer
devices_data
map

yyyy-mm-dd to count

map
integer
devices_summary
integer
GET/stats/providers-mapPublicStats Providers Map

The provider-density map behind the public map page: how many public providers and how many online extenders sit in each region, with a representative point to draw them at.

The body is a bare two-level map, country code -> region name -> {provider_count, extender_count, lat, lon}. The country code is the lowercase ISO 3166-1 alpha-2 code as the location table stores it, and the region name is the region's own name (for an extender located only to its country, the country location's name, whose point is the country centroid).

Providers and extenders are two independent populations over the same key, so a region with extenders and no providers appears with provider_count 0, and a region with providers and no extenders with extender_count 0. extender_count is always present, never omitted: a region without it is an old blob, and a client must not read that the same way as a present zero. A region whose centroid is unknown is left out entirely.

Like /stats/last-90 this serves a redis-exported blob rather than a live query, refreshed every 5 minutes by the ExportProvidersMap task, so it never touches the database on the request path.

2 statuses · show schema
200
map
map
provider_count
integer

Public providers in the region; 0 for a region that has only extenders.

extender_count
integer

Online extenders in the region; 0 for a region that has only providers. Always present -- a region without the field at all is an old blob, which is not the same thing as a present zero.

lat
number

wgs84 latitude of the region centroid (the country centroid as a fallback).

lon
number

wgs84 longitude.

500
No body
GET/stats/providersBearer authStats Providers

Get all providers in the caller network. Each provider includes stats from the last 24 hours.

1 status · show schema
200
created_time
string

datetime

providers
array<object>
array
client_id
string

udid

connected
boolean
connected_events_last_24h
array<object>
array
event_time
string

datetime

connected
boolean
uptime_last_24h
number

hours up

transfer_data_last_24h
number

gib

payout_last_24h
number

usdc

search_interest_last_24h
integer

matching search count

contracts_last_24h
integer
clients_last_24h
integer
POST/stats/providers-last-nBearer authStats Providers Last N hours

Get all providers in the caller network. Each provider includes stats from the last n hours.

show schema
last_n
number

n hours

1 status · show schema
200
created_time
string

datetime

providers
array<object>
array
client_id
string

udid

connected
boolean
connected_events_last_24h
array<object>
array
event_time
string

datetime

connected
boolean
uptime_last_24h
number

hours up

transfer_data_last_24h
number

gib

payout_last_24h
number

usdc

search_interest_last_24h
integer

matching search count

contracts_last_24h
integer
clients_last_24h
integer
POST/stats/provider-last-nBearer authStats Provider Last N hours

Get detailed stats on a single provider in the caller network. This is meant to give the user complete visibility over usage.

show schema
client_id
string

udid

last_n
number

n hours

lookback
integer

n days, the legacy window kept for /stats/provider-last-90. Accepted on both routes; last_n takes precedence.

1 status · show schema
200
lookback
integer
created_time
string

datetime

uptime
map

yyyy-mm-dd-hh (utc) to minutes

map
number
transfer_data
map

yyyy-mm-dd to gib

map
number
payout
map

yyyy-mm-dd to payout USDC

map
number
search_interest
map

yyyy-mm-dd to matching search count

map
integer
contracts
map

yyyy-mm-dd to count

map
integer
clients
map

yyyy-mm-dd to count

map
integer
client_details
array<object>
array
client_id
string

udid

transfer_data
map

yyyy-mm-dd to gib

map
number
POST/stats/providers-overview-last-nBearer authStats Providers Overview Last N hours

Get a network-wide time series aggregated across all providers in the caller network, over the last n hours.

show schema
last_n
number

n hours

lookback
integer

n days, the legacy window kept for /stats/providers-overview-last-90. last_n takes precedence.

1 status · show schema
200
lookback
integer
created_time
string

datetime

uptime
map

yyyy-mm-dd to avg hours up per provider

map
number
transfer_data
map

yyyy-mm-dd to gib

map
number
payout
map

yyyy-mm-dd to payout USDC

map
number
search_interest
map

yyyy-mm-dd to matching search count

map
integer
contracts
map

yyyy-mm-dd to count

map
integer
clients
map

yyyy-mm-dd to count

map
integer
GET/stats/providers-overview-last-90Bearer authStats Providers Overview Last 90

Legacy alias of /stats/providers-overview-last-n with the lookback fixed at 90 days, kept for callers that predate the route migration. New callers should use /stats/providers-overview-last-n.

1 status · show schema
200
lookback
integer
created_time
string

datetime

uptime
map

yyyy-mm-dd to avg hours up per provider

map
number
transfer_data
map

yyyy-mm-dd to gib

map
number
payout
map

yyyy-mm-dd to payout USDC

map
number
search_interest
map

yyyy-mm-dd to matching search count

map
integer
contracts
map

yyyy-mm-dd to count

map
integer
clients
map

yyyy-mm-dd to count

map
integer
POST/stats/provider-last-90Bearer authStats Provider Last 90

Legacy alias of /stats/provider-last-n, kept for callers that predate the route migration. A request that names neither last_n nor lookback is served with a 90-day lookback; otherwise it behaves exactly like /stats/provider-last-n. New callers should use /stats/provider-last-n.

show schema
client_id
string

udid

last_n
number

n hours

lookback
integer

n days, the legacy window kept for /stats/provider-last-90. Accepted on both routes; last_n takes precedence.

1 status · show schema
200
lookback
integer
created_time
string

datetime

uptime
map

yyyy-mm-dd-hh (utc) to minutes

map
number
transfer_data
map

yyyy-mm-dd to gib

map
number
payout
map

yyyy-mm-dd to payout USDC

map
number
search_interest
map

yyyy-mm-dd to matching search count

map
integer
contracts
map

yyyy-mm-dd to count

map
integer
clients
map

yyyy-mm-dd to count

map
integer
client_details
array<object>
array
client_id
string

udid

transfer_data
map

yyyy-mm-dd to gib

map
number
POST/stats/leaderboardBearer authStats Leaderboard

Fetches top 100 current leaderboard. This data is refreshed every payout.

show schema
empty object
1 status · show schema
200
earners
array<LeaderboardEarner>
array
network_id
string

uuid

network_name
string
net_mib_count
number (float)
is_public
boolean

Whether the network has opted in to being displayed on the leaderboard or not

contains_profanity
boolean

Whether the network name contains profanity

rank
integer

The caller network's leaderboard position (1 = top earner); 0 when the network has no ranked payouts.

total
integer

The number of ranked networks.

error
object
message
string
POST/stats/points-leaderboardBearer authStats Points Leaderboard

Page the all-time points leaderboard. Every network with points is ranked on three dimensions (total points, finalized epochs with points = "blocks", current streak of consecutive finalized epochs with points) with competition ranks (1, 2, 2, 4), and every ranked network is listed: the pages form one continuous list. A row carries the network name only when that network turned on /network/points-ranking-visibility (its "show my network name" switch); otherwise the row is anonymous. The emoji tag (/network/emoji) shows on every row that set one. Each sort has its own tie-break order, every key descending, then the network id ascending so the order is total: points = (points, streak, blocks), blocks = (blocks, streak, points), streak = (streak, blocks, points). The pages come in exactly that order, and a rank is shared only by networks whose three values all tie. Pages use a keyset cursor pinned to a ranking snapshot (rebuilt when an epoch finalizes, when a payout plan commits, and hourly); a cursor whose snapshot was pruned returns restart: true and the client reloads from the top. No authentication is required; with a bearer token the response also carries me, the caller's own row with its network name for the caller's own card, whether or not it opted in. In the list itself the caller's row is anonymous like everyone else's until it opts in: the caller sees what everyone sees, and the apps only highlight that row.

show schema
sort
string

The dimension to page by

enum: points, blocks, streak
cursor
string

Continues a previous page in either direction: a next_cursor opens the page after it, a prev_cursor the page before it. Omit for the first page. A cursor is opaque and pins the snapshot and the sort; restart: true means its snapshot is gone.

seek_rank
integer (int64)

Jumps to a position: the page starts at the row whose position in this sort's total order equals seek_rank (1-based, clamped to [1, totalranked]). Used without a cursor; the response then carries both `prevcursor and nextcursor so the jumped-to window pages in both directions. totalranked` from any previous response is the client's denominator when it turns a scroll position into a rank.

limit
integer

Page size, default 50, max 200

1 status · show schema
200
rows
array<PointsLeaderboardRow>
array
network_id
string
network_name
string

Present only when the network turned on pointsleaderboardpublic (/network/points-ranking-visibility)

emoji_tag
string

The network's emoji tag, absent when unset; shown whether or not the name is

anonymous
boolean

true when the network name is hidden; the row is listed either way

contains_profanity
boolean

The public name contains profanity (apps may mask it)

total_points
number (double)

All-time points

blocks_with_points
integer

Finalized epochs in which the network earned points

streak
integer

Consecutive finalized epochs with points ending at the latest finalized epoch

longest_streak
integer

The best streak ever (informational, never ranked)

rank_points
integer (int64)
rank_blocks
integer (int64)
rank_streak
integer (int64)
position
integer (int64)

The row's 1-based place in the requested sort's total order. Ranks tie (competition ranks), positions never do: this is the seek_rank coordinate and the key a client keeps its loaded window by.

next_cursor
string

Pages forward from this page's last row; absent on the last page

prev_cursor
string

Pages backward from this page's first row; ABSENT (the key is omitted, never null) when the page starts at position 1. Present on every page reached by a cursor or a seek_rank.

restart
boolean

The cursor's snapshot is gone; reload from the top

total_ranked
integer (int64)

Networks ranked in the snapshot; every one of them is listed across the pages

snapshot_time
string (date-time)
latest_epoch
integer (int64)

The latest finalized epoch the snapshot counts

epoch_metrics_available
boolean

Whether the snapshot has finalized epoch metrics. When false the blocks and streak sorts are refused with an error, so a client should not offer them.

me
PointsLeaderboardMe
network_id
string
network_name
string

Present only when the network turned on pointsleaderboardpublic (/network/points-ranking-visibility)

emoji_tag
string

The network's emoji tag, absent when unset; shown whether or not the name is

anonymous
boolean

true when the network name is hidden; the row is listed either way

contains_profanity
boolean

The public name contains profanity (apps may mask it)

total_points
number (double)

All-time points

blocks_with_points
integer

Finalized epochs in which the network earned points

streak
integer

Consecutive finalized epochs with points ending at the latest finalized epoch

longest_streak
integer

The best streak ever (informational, never ranked)

rank_points
integer (int64)
rank_blocks
integer (int64)
rank_streak
integer (int64)
position
integer (int64)

The row's 1-based place in the requested sort's total order. Ranks tie (competition ranks), positions never do: this is the seek_rank coordinate and the key a client keeps its loaded window by.

points_leaderboard_public
boolean
ranked
boolean

false when the network has no points yet

error
object
message
string