Sales
Sales reads return confirmed sales ordered newest first.
GET /sales
Section titled “GET /sales”Returns a cursor-paginated feed of confirmed sales.
Query parameters
Section titled “Query parameters”| Name | Type | Required | Default | Description |
|---|---|---|---|---|
limit | integer | no | 50 | Page size. Min 1, max 100. |
cursor | string | no | Opaque cursor from pagination.nextCursor. | |
collectionSlug | string | no | Restrict to one collection. Case-insensitive. Letters, numbers, hyphens, and underscores are allowed. |
Example
Section titled “Example”curl "https://ord.net/api/v1/sales?collectionSlug=wizards&limit=25" \ -H "Authorization: Bearer $ORD_SESSION_TOKEN"Response (200)
Section titled “Response (200)”| Field | Type | Description |
|---|---|---|
sales | array | Confirmed sale rows, newest first. |
sales[].saleId | string | Sale event identifier. |
sales[].saleType | string | internal for ORD.NET-settled sales, external for off-market sales detected from chain data. |
sales[].txid | string | null | Settlement transaction id. |
sales[].inscriptionId | string | Sold inscription id. |
sales[].inscriptionNumber | string | Inscription number as a string. |
sales[].inscriptionName | string | Display name of the inscription. |
sales[].collection.slug | string | null | Collection slug, if any. |
sales[].collection.name | string | null | Collection display name. |
sales[].collection.kind | string | null | One of parent_child, gallery. |
sales[].collection.verificationStatus | string | null | One of verified, unverified. |
sales[].sellerAddress | string | null | Seller ordinals address. |
sales[].buyerAddress | string | null | Buyer ordinals address. |
sales[].priceSats | integer | Sale price in sats. |
sales[].price | number | Sale price in BTC. |
sales[].priceUsd | number | null | Sale price in USD using the block-time BTC/USD quote, when available. |
sales[].soldAt | ISO 8601 datetime | Sale confirmation time. |
sales[].blockHeight | integer | Sale block height. |
pagination.pageSize | integer | Items in this page. |
pagination.hasNext | boolean | true if more pages exist. |
pagination.nextCursor | string | null | Cursor for the next call. null on the last page. |
{ "sales": [ { "saleId": "99", "saleType": "external", "txid": "abc123...", "inscriptionId": "abc123...i0", "inscriptionNumber": "12345", "inscriptionName": "Inscription 12345", "collection": { "slug": "wizards", "name": "Wizards", "kind": "parent_child", "verificationStatus": "verified" }, "sellerAddress": "bc1p...", "buyerAddress": "bc1p...", "priceSats": 50000, "price": 0.0005, "priceUsd": 50, "soldAt": "2026-05-08T18:00:00.000Z", "blockHeight": 900101 } ], "pagination": { "pageSize": 25, "hasNext": true, "nextCursor": "<opaque-cursor>" }}Status codes
Section titled “Status codes”200: sales returned.400: invalidlimit,cursor, orcollectionSlug.401: missing or invalid bearer token.403: wallet not allowed.429: rate limited.500: internal server error.
Pagination notes
Section titled “Pagination notes”The cursor encodes the last seen sale. Changing collectionSlug between calls invalidates the cursor. Start a new pagination from the beginning.
Unknown collectionSlug filters return an empty page, not 404.