/token/{tokenSlug}/holders/historytoken-holderHistoryReturns a paginated daily holder-count series for the token. Each row is one calendar day's non-zero-balance holder count plus the token's totalSupply recorded at snapshot time. Pages are ordered oldest → newest internally; cursor walks BACK in time — nextCursor is the previous page's oldest day, and the next call (with cursor=…) returns the rows older than that. limit is the page size (default 30, max 365). Returns an empty page with nextCursor: null when no snapshots have been recorded yet.
| Name | Location | Details |
|---|---|---|
BearerAuth | Authorization header · bearer | JWT issued by the Honeycluster auth service for the `indexer` audience. Present as `Authorization: Bearer <token>`. |
| Name | Type | Default | Description |
|---|---|---|---|
tokenSlugrequired | string | Natural token identifier in `currency.issuer` form. Example: `USD.rvYAfWj5gh67oV6fW32ZzP3Aw4Eubs59B`. |
| Name | Type | Default | Description |
|---|---|---|---|
cursor | string | ||
limit | integer | 30 |
| Field | Type | Description |
|---|---|---|
items | object[] | Daily holder-count snapshots ordered oldest → newest within the page. Empty when no snapshots exist yet. |
items[]. | string | Snapshot date in `YYYY-MM-DD` form (UTC day bucket). |
items[]. | integer | Number of accounts with a positive balance of the token on the bucket date. |
items[]. | object | Token's total supply at snapshot time, as a decimal string. `null` when supply was unknown for that bucket. |
nextCursor | object | Opaque cursor for the next-older page, or `null` when this page is the oldest available. Pass it back as `cursor` to walk further back in time. |
{
"items": [
{
"bucketDate": "2026-04-23",
"holderCount": 142,
"totalSupply": "5000000.000000"
},
{
"bucketDate": "2026-04-24",
"holderCount": 148,
"totalSupply": "5000000.000000"
}
],
"nextCursor": null
}| Field | Type | Description |
|---|---|---|
message | string | The error message |
code | string | The error code |
issues | object[] | An array of issues that were responsible for the error |
issues[]. | string |
{
"code": "BAD_REQUEST",
"message": "Invalid input data",
"issues": []
}| Field | Type | Description |
|---|---|---|
message | string | The error message |
code | string | The error code |
issues | object[] | An array of issues that were responsible for the error |
issues[]. | string |
{
"code": "UNAUTHORIZED",
"message": "Authorization not provided",
"issues": []
}| Field | Type | Description |
|---|---|---|
message | string | The error message |
code | string | The error code |
issues | object[] | An array of issues that were responsible for the error |
issues[]. | string |
{
"code": "FORBIDDEN",
"message": "Insufficient access",
"issues": []
}| Field | Type | Description |
|---|---|---|
message | string | The error message |
code | string | The error code |
issues | object[] | An array of issues that were responsible for the error |
issues[]. | string |
{
"code": "NOT_FOUND",
"message": "Not found",
"issues": []
}| Field | Type | Description |
|---|---|---|
message | string | The error message |
code | string | The error code |
issues | object[] | An array of issues that were responsible for the error |
issues[]. | string |
{
"code": "INTERNAL_SERVER_ERROR",
"message": "Internal server error",
"issues": []
}