Skip to content

Executed OTC trades

GET /api/otc/trade/v2

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.

NameInTypeRequiredDescription
trade_typequeryHow the trade was matched: listing_filled, offer_filled, or direct.
sellerquerystringFilter by seller coldkey (SS58).
buyerquerystringFilter by buyer coldkey (SS58).
netuidqueryintegerSubnet id.
listing_idquerystringFilter to trades that filled a specific listing.
offer_idquerystringFilter to trades that filled a specific offer.
block_startqueryintegerEarliest block height (inclusive).
block_endqueryintegerLatest block height (inclusive).
timestamp_startqueryintegerEarliest Unix timestamp in seconds (inclusive).
timestamp_endqueryintegerLatest Unix timestamp in seconds (inclusive).
pagequeryinteger1-based page number.
limitqueryintegerPage size (max 200).
orderquerySort order, e.g. block_number_desc.

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"
}
}
}
}
}

Interactive request console coming soon. In the meantime you can use the OpenAPI spec with any client (Insomnia, Bruno, Scalar, curl).

All Taostats API requests require an Authorization header containing your API key. See Getting Started.