Executed OTC trades
Endpoint
Section titled “Endpoint”GET /api/otc/trade/v2Description
Section titled “Description”Returns settled OTC trades — the matches between listings and offers (or direct buys). Each row records the alpha amount, TAO amount, executed price (the absolute price that was snapped from the market when the trade settled, in rao per alpha), price_offset_bps (the offset the listing or offer was authored with), fee, buyer/seller, and the extrinsic that settled the trade on-chain. Use this for volume analytics, price-time series, and trade reconstruction.
Parameters
Section titled “Parameters”| Name | In | Type | Required | Description |
|---|---|---|---|---|
trade_type | query | — | How the trade was matched: listing_filled, offer_filled, or direct. | |
seller | query | string | Filter by seller coldkey (SS58). | |
buyer | query | string | Filter by buyer coldkey (SS58). | |
netuid | query | integer | Subnet id. | |
listing_id | query | string | Filter to trades that filled a specific listing. | |
offer_id | query | string | Filter to trades that filled a specific offer. | |
block_start | query | integer | Earliest block height (inclusive). | |
block_end | query | integer | Latest block height (inclusive). | |
timestamp_start | query | integer | Earliest Unix timestamp in seconds (inclusive). | |
timestamp_end | query | integer | Latest Unix timestamp in seconds (inclusive). | |
page | query | integer | 1-based page number. | |
limit | query | integer | Page size (max 200). | |
order | query | — | Sort order, e.g. block_number_desc. |
Responses
Section titled “Responses”200 — OTC trades retrieved successfully
Section titled “200 — OTC trades retrieved successfully”Media: application/json
Schema
{ "type": "object", "required": [ "pagination", "data" ], "properties": { "data": { "type": "array", "items": { "type": "object", "required": [ "id", "trade_type", "seller", "buyer", "netuid", "alpha_amount", "tao_amount", "price_offset_bps", "executed_price", "fee", "block_number", "timestamp", "extrinsic_id" ], "properties": { "alpha_amount": { "type": "string" }, "block_number": { "type": "integer", "format": "int32" }, "buyer": { "type": "object", "required": [ "ss58", "hex" ], "properties": { "hex": { "type": "string", "description": "The hex format of the hot key" }, "ss58": { "type": "string", "description": "The SS58 format of the hot key" } } }, "executed_price": { "type": "string" }, "extrinsic_id": { "type": "string" }, "fee": { "type": "string" }, "id": { "type": "string" }, "listing_id": { "type": "string", "nullable": true }, "netuid": { "type": "integer", "format": "int32" }, "offer_id": { "type": "string", "nullable": true }, "price_offset_bps": { "type": "integer", "format": "int32" }, "seller": { "type": "object", "required": [ "ss58", "hex" ], "properties": { "hex": { "type": "string", "description": "The hex format of the hot key" }, "ss58": { "type": "string", "description": "The SS58 format of the hot key" } } }, "tao_amount": { "type": "string" }, "timestamp": { "type": "string", "format": "date-time" }, "trade_type": { "type": "string" } } } }, "pagination": { "type": "object", "required": [ "current_page", "per_page", "total_items", "total_pages" ], "properties": { "current_page": { "type": "integer", "format": "int32" }, "next_page": { "type": "integer", "format": "int32", "nullable": true }, "per_page": { "type": "integer", "format": "int32" }, "prev_page": { "type": "integer", "format": "int32", "nullable": true }, "total_items": { "type": "integer", "format": "int32" }, "total_pages": { "type": "integer", "format": "int32" } } } }}400 — Bad request
Section titled “400 — Bad request”500 — Internal server error
Section titled “500 — Internal server error”Try it
Section titled “Try it”Interactive request console coming soon. In the meantime you can use the OpenAPI spec with any client (Insomnia, Bruno, Scalar, curl).
Authentication
Section titled “Authentication”All Taostats API requests require an Authorization header containing your API key. See Getting Started.