Skip to main content

List User OTC Groups

Returns the user's OTC offers collapsed to one row per token, newest token first. total_quantity sums the quantity of every offer the user made on the token that is not still awaiting chain confirmation (open, accepted, canceled and rejected offers alike). For the offers themselves, use List User OTC Offers.

A user without offers gets an empty page, not a 404.

Required permission: otc:view

Request​

GET /v2/users/{user_id}/otcs

Parameters​

NameTypeInDescription
user_idstringpathRequired. User ID
pageintegerqueryRequired. Page number, starting at 1
per_pageintegerqueryRequired. Items per page, 1–100

Headers​

NameDescription
AuthorizationRequired. Bearer <access_token>

Example​

curl --request GET \
--url '{{baseUrl}}/v2/users/680c02896d91ca0145cfeb81/otcs?page=1&per_page=10' \
--header 'Authorization: Bearer <access_token>'

Response​

{
"data": [
{
"token_id": "68ae06cfcccf4e8fc19362d1",
"total_quantity": 30,
"total_amount": "0",
"overall_profit": null,
"source": "otc",
"token": {
"name": "Sample Token",
"symbol": "Sample",
"image": "https://cdn.example.com/tokens/68ae06cfcccf4e8fc19362d1/cover.png",
"address": "0x4ecde4b1b0a8f7a5d5c1e0f1a2b3c4d5e6f78387",
"diamond_address": "0x730d22ae2267fc5b40520605868ddb48c29331a7",
"status": 6,
"category_id": "667e9251ca818a2138ed4885",
"price_symbol": "VUSD",
"is_external": false,
"is_open_to_secondary_market": true,
"is_open_to_otc": true,
"secondary_market": null,
"rate_changes": {
"hourly": null,
"daily": null,
"weekly": null,
"monthly": null,
"quarterly": null
}
}
}
],
"total": 1,
"page": 1,
"per_page": 10
}

Response Fields​

The row has the same shape as List User Holdings; on this endpoint:

FieldTypeDescription
data[].token_idstringToken the offers are on
data[].total_quantityintegerSum of quantity over the user's offers on the token (pending offers excluded)
data[].total_amountstringNot computed for OTC groups: always "0"
data[].overall_profitstring | nullNot computed for OTC groups: always null
data[].sourcestringAlways otc
data[].tokenobjectThe token: name, symbol (the token's on-chain name), image, address, diamond_address, status, category_id, price_symbol, is_external, is_open_to_secondary_market, is_open_to_otc. secondary_market is null and every rate_changes window is null on this endpoint
totalintegerNumber of tokens the user has offers on
pageintegerRequested page
per_pageintegerRequested page size

Errors​

StatusCodeDescription
40010015Validation failed (page, per_page) — see details
50010000Unexpected server-side failure

See Errors for the error format and common codes.