Your wallet statistics

How many wallets belong to your organization. Ask for `include=breakdown` to split it by one dimension, and `include=series` to get it over time; both are extra work, so the plain total is what you get by default. You have to be a member of the organization in the path. The figures never quietly widen to the whole network if a token is missing or expired — the request fails instead, so a dashboard cannot show network numbers under your own name. For network-wide figures, use the matching endpoint under `/public/stats/`. Requires the `stats.wallets.read` permission.

GET
/organizations/{organizationId}/stats/wallets
AuthorizationBearer <token>

The access token returned after a successful sign-in, sent as Authorization: Bearer <access_token>.

It identifies the person and the organization they are working in, and it lasts about fifteen minutes. When it runs out, use their refresh token at POST /auth/refresh-token instead of asking them to sign in again.

In: header

Path Parameters

organizationId*string

Identifier of the organization. Each endpoint states whether it must be the caller's active organization or may be used without authentication.

Query Parameters

from?string

Start of the window, inclusive. Omit for "since the beginning". Replaces the when_created[$gt] and when_created[$gte] pair: an aggregate has no use for both an open and a closed lower bound.

Formatdate-time
to?string

End of the window, exclusive. Omit for "up to now". Half-open with from, so adjacent windows tile without double-counting the boundary record.

Formatdate-time
include?array<>

Which optional parts of the aggregate to compute. The total is always returned; a breakdown and a series each cost a grouping pass, so a caller that only needs the headline number does not pay for them.

interval?string

Bucket size for a time series. It fixes how many points the series has over the requested window, so a long window with a small interval is an expensive request.

Default"week"
Value in"hour" | "day" | "week" | "month" | "year"
top?integer

How many groups to keep in a breakdown, largest first. Bounds the response for a high-cardinality dimension such as template, where an organization may have thousands.

It does not bound a series. The number of buckets in a series is already fixed by from, to and interval; capping it separately would silently truncate the window a caller explicitly asked for.

Default10
Formatint64
group_by?string

Group the breakdown by activation state. It shapes the breakdown only; this aggregate cannot split its series. Only the dimensions listed here are accepted; anything else is rejected rather than passed through to the aggregation.

Value in"activated"

Response Body

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://api.dual.network/organizations/665f1c2d4b1a2c3d4e5f6aa0/stats/wallets"

{
  "total": 128401
}

{
  "code": 3,
  "message": "Key: 'limit' Error:Field validation for 'limit' failed on the 'lte' tag"
}

{
  "code": 16,
  "message": "no auth provided"
}

{
  "code": 5,
  "message": "object not found"
}
{
  "code": 13,
  "message": "internal error"
}