Skip to main content

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​

NameTypeInDescription
token_idstringpathRequired. Token id.
pageintegerqueryRequired. Page number, starting at 1.
per_pageintegerqueryRequired. Page size, 1 to 100.
searchstringqueryOptional. Matches the user's name, surname or email.

Headers​

NameDescription
AuthorizationRequired. 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​

FieldTypeDescription
data[].idstringUser id (the investor id).
data[].emailstringEmail.
data[].namestringFirst name. Absent when not on record.
data[].surnamestringSurname. Absent when not on record.
data[].has_kyc_tokenbooleanAt least one of the user's wallets holds a KYC token. KYC belongs to the wallet, not to the user record.
data[].created_atstringWhen the user registered.
data[].holding.remaining_quantityintegerTokens held now, summed over the user's wallets.
data[].holding.total_purchasedintegerTokens ever bought. Differs from remaining_quantity once the user has sold.
data[].holding.total_purchased_amountstringAmount paid for total_purchased, a decimal string.
data[].holding.wallet_countintegerHow many of the user's wallets hold the token.
totalintegerNumber of matching investors.
pageintegerPage number sent in the request.
per_pageintegerPage size sent in the request.

The response carries no wallet addresses: they belong to the user's wallets.

Errors​

StatusCodeDescription
40010015Validation failed (page or per_page missing or out of range) — see details
40010016token_id is not a valid id
40010001Token not found (token domain 5)
40310005The caller's node does not cover the token's node (node domain 2)

See Errors for the error format and common codes.