Get Token Investors
Returns one page of the users currently holding a token, largest position first. Only current holders are listed: someone who bought and then sold everything is not an investor any more. A holder with several wallets is one row, with the position summed across those wallets.
Required permission: token:view
Request
GET /v2/admin/tokens/{token_id}/investors?page=1&per_page=20
Parameters
| Name | Type | In | Description |
|---|---|---|---|
token_id | string | path | Required. Token id. |
page | integer | query | Required. Page number, starting at 1. |
per_page | integer | query | Required. Page size, 1 to 100. |
search | string | query | Optional. Matches the user's name, surname or email. |
Headers
| Name | Description |
|---|---|
Authorization | Required. Bearer <access_token> |
Example
curl --request GET \
--url '{{baseUrl}}/v2/admin/tokens/67d8774e903bfcbe7eb5d93e/investors?page=1&per_page=20&search=yilmaz' \
--header 'Authorization: Bearer <access_token>'
Response
{
"data": [
{
"id": "6a2f0b7e1c9d4e3f2a1b0c9d",
"email": "investor@example.com",
"name": "Ayse",
"surname": "Yilmaz",
"has_kyc_token": true,
"created_at": "2025-02-11T14:20:05.118Z",
"holding": {
"remaining_quantity": 25,
"total_purchased": 40,
"total_purchased_amount": "384",
"wallet_count": 2
}
}
],
"total": 1,
"page": 1,
"per_page": 20
}
Response Fields
| Field | Type | Description |
|---|---|---|
data[].id | string | User id (the investor id). |
data[].email | string | Email. |
data[].name | string | First name. Absent when not on record. |
data[].surname | string | Surname. Absent when not on record. |
data[].has_kyc_token | boolean | At least one of the user's wallets holds a KYC token. KYC belongs to the wallet, not to the user record. |
data[].created_at | string | When the user registered. |
data[].holding.remaining_quantity | integer | Tokens held now, summed over the user's wallets. |
data[].holding.total_purchased | integer | Tokens ever bought. Differs from remaining_quantity once the user has sold. |
data[].holding.total_purchased_amount | string | Amount paid for total_purchased, a decimal string. |
data[].holding.wallet_count | integer | How many of the user's wallets hold the token. |
total | integer | Number of matching investors. |
page | integer | Page number sent in the request. |
per_page | integer | Page size sent in the request. |
The response carries no wallet addresses: they belong to the user's wallets.
Errors
| Status | Code | Description |
|---|---|---|
| 400 | 10015 | Validation failed (page or per_page missing or out of range) — see details |
| 400 | 10016 | token_id is not a valid id |
| 400 | 10001 | Token not found (token domain 5) |
| 403 | 10005 | The caller's node does not cover the token's node (node domain 2) |
See Errors for the error format and common codes.