Get OTC Offer Detail
Returns one OTC offer, keyed by its deal ID within the token (the same key Accept and Cancel use), together with the user who made it and the latest accept or cancel acting on it. The token's node must be inside your API key's node subtree. To read the same offer by its own ID use Get OTC Offer by ID.
Required permission: otc:view
Request
GET /v2/admin/otcs/tokens/{token_id}/deals/{deal_id}
Parameters
| Name | Type | In | Description |
|---|---|---|---|
token_id | string | path | Required. Token the offer is on (24-character hex) |
deal_id | integer | path | Required. On-chain deal ID of the offer, greater than 0 |
Headers
| Name | Description |
|---|---|
Authorization | Required. Bearer <access_token> |
Example
curl --request GET \
--url '{{baseUrl}}/v2/admin/otcs/tokens/68ae06cfcccf4e8fc19362d1/deals/2' \
--header 'Authorization: Bearer <access_token>'
Response
{
"id": "6a8b5d02f9129816a6cc79f4",
"token_id": "68ae06cfcccf4e8fc19362d1",
"node_id": "6810a8e5b45680e7d2f95bad",
"user_id": "680c02896d91ca0145cfeb81",
"deal_id": 2,
"price": {
"amount": "5",
"decimal": 6,
"symbol": "USDT",
"address": "0x78fccec69e21dc0b331b59f283d4d5b41ff36654"
},
"quantity": 1,
"status": 1,
"created_at": "2026-08-23T17:41:22.913Z",
"updated_at": "2026-08-23T17:44:01.220Z",
"user": {
"id": "680c02896d91ca0145cfeb81",
"name": "Ada",
"surname": "Yılmaz",
"email": "ada@example.com"
},
"transaction": {
"id": "6a8b5e13f9129816a6cc7a12",
"type": 1,
"status": 3,
"hash": "0x9f2c1b7e4a0d3c5b6e8f1a2b3c4d5e6f708192a3b4c5d6e7f8091a2b3c4d5e6f",
"error": null,
"message": null,
"created_at": "2026-08-23T17:43:31.004Z",
"updated_at": "2026-08-23T17:44:01.220Z"
}
}
Response Fields
| Field | Type | Description |
|---|---|---|
id | string | The offer's own ID |
token_id | string | Token ID |
node_id | string | Node of the offer |
user_id | string | User who made the offer |
deal_id | integer | On-chain deal ID, unique within the token contract |
price | object | Unit price: amount (decimal string), decimal, symbol, address of the currency |
quantity | integer | Number of tokens offered |
status | integer | 0 open, 1 accepted, 2 cancelled, 3 rejected, 4 waiting for its on-chain creation to confirm |
created_at | string | When the offer was created |
updated_at | string | When the offer last changed |
user | object | The user who made the offer: id, email, and name / surname when set. Omitted when the user cannot be read |
transaction | object | The latest accept or cancel on the offer. Omitted while none has been started |
transaction.id | string | OTC transaction ID |
transaction.type | integer | 1 accept, 2 cancel |
transaction.status | integer | 1 Started, 2 InProgress, 3 Done, 4 Error, 5 PendingReceipt |
transaction.hash | string or null | On-chain transaction hash, once known |
transaction.error | string or null | Failure reason when status is 4 |
transaction.message | string or null | Reason given with a cancel, when there was one |
transaction.created_at | string | When the transaction was started |
transaction.updated_at | string | Last status change |
transaction shows only the latest attempt; a failed accept can be retried. The full history is at List OTC Transactions.
Errors
| Status | Code | Description |
|---|---|---|
| 400 | 10015 | Validation failed — see details. Includes a deal_id that is not a positive integer |
| 400 | 10016 | token_id is not a 24-character hex ID |
| 400 | 11001 (domain 11) | No offer with this deal ID on this token |
| 400 | 10001 (domain 5) | The offer's token was not found |
| 400 | 10001 (domain 2) | The token's node was not found |
| 403 | 10005 (domain 2) | The token's node is outside your API key's node subtree |
| 500 | 10000 | Unexpected server error |
See Errors for the error format and common codes.