Documentation / API reference / OTC
List OTC Lockup Listings
Last reviewed 2026-09-18
Returns active and historical lockup listings on the Taostats OTC desk. A lockup listing is a sell-side OTC offer where the purchased alpha is held in an escrow account and only claimable by the buyer after a defined unlock_block. Sellers commit alpha; buyers commit TAO up-front; the escrow releases on unlock.
Lockups use offset pricing (price_offset_bps) — the executed price floats with the current alpha market price plus or minus the offset in basis points, snapped at purchase time.
Try it
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
listing_id | query | string | Filter by exact lockup listing id. | |
seller | query | string | Filter by seller coldkey (SS58). | |
hotkey | query | string | Filter by the hotkey the alpha is delegated to. | |
netuid | query | integer (int32) | Subnet id. | |
status | query | string | Lifecycle state: active, filled, cancelled, expired. One of active, cancelled, filled, all. | |
price_offset_bps_min | query | integer (int32) | Minimum price offset in basis points (signed; -10000 to +10000). Negative = discount, positive = premium. | |
price_offset_bps_max | query | integer (int32) | Maximum price offset in basis points. | |
lockup_duration_min | query | integer (int32) | Minimum lockup duration in blocks. | |
lockup_duration_max | query | integer (int32) | Maximum lockup duration in blocks. | |
total_amount_min | query | string | Minimum total alpha originally listed (rao). | |
total_amount_max | query | string | Maximum total alpha originally listed (rao). | |
remaining_amount_min | query | string | Minimum alpha still available to purchase (rao). | |
remaining_amount_max | query | string | Maximum alpha still available to purchase (rao). | |
created_block_start | query | integer (int32) | Earliest creation block (inclusive). | |
created_block_end | query | integer (int32) | Latest creation block (inclusive). | |
created_timestamp_start | query | integer (int64) | Earliest creation timestamp (seconds, inclusive). | |
created_timestamp_end | query | integer (int64) | Latest creation timestamp (seconds, inclusive). | |
page | query | integer (int32) | 1-based page number. | |
limit | query | integer (int32) | Page size (max 200). | |
order | query | string | Sort order, e.g. created_block_desc. One of created_asc, created_desc, updated_asc, updated_desc, price_offset_bps_asc, price_offset_bps_desc, lockup_duration_asc, lockup_duration_desc, total_amount_asc, total_amount_desc, remaining_amount_asc, remaining_amount_desc. |
Responses
200 — Lockup listings retrieved successfully
| Field | Type | Required | Description |
|---|---|---|---|
data | array | Yes | |
data[].created_block | integer (int32) | Yes | |
data[].created_timestamp | string (date-time) | Yes | |
data[].force_cancelled | boolean | Yes | |
data[].hotkey | object | Yes | |
data[].hotkey.hex | string | Yes | The hex format of the hot key |
data[].hotkey.ss58 | string | Yes | The SS58 format of the hot key |
data[].initiated_by | string, nullable | ||
data[].listing_id | string | Yes | |
data[].lockup_duration | integer (int32) | Yes | |
data[].netuid | integer (int32) | Yes | |
data[].price_offset_bps | integer (int32) | Yes | |
data[].remaining_amount | string | Yes | |
data[].seller | object | Yes | |
data[].seller.hex | string | Yes | The hex format of the hot key |
data[].seller.ss58 | string | Yes | The SS58 format of the hot key |
data[].status | string | Yes | |
data[].total_amount | string | Yes | |
data[].updated_block | integer (int32) | Yes | |
data[].updated_timestamp | string (date-time) | Yes | |
pagination | object | Yes | |
pagination.current_page | integer (int32) | Yes | |
pagination.next_page | integer (int32), nullable | ||
pagination.per_page | integer (int32) | Yes | |
pagination.prev_page | integer (int32), nullable | ||
pagination.total_items | integer (int32) | Yes | |
pagination.total_pages | integer (int32) | Yes |
Other responses
| Status | Meaning |
|---|---|
400 | Bad request |
500 | Internal server error |
Every request needs an Authorization header holding your API key — see Getting started with the Taostats API.