/nft/searchnft-searchCursor-paginated free-text search scoped to the NFT domain. Returns both matched NFTs (in nfts[]) and matched collections (in collections[]) so a single query can drive a unified result page. NFT match: token_id, issuer, owner, and asset name (from nft_metadata). Collection match: issuer, curated name, and description on nft_collections. Use includeNfts=false / includeCollections=false to scope to one half. Distinct from the cross-domain /search endpoint (which mixes tokens / NFTs / collections / accounts) — this is the NFT-focused variant for marketplace UIs. Pagination state is encoded across both kinds inside nextCursor; null when neither kind has more rows.
| Name | Location | Details |
|---|---|---|
BearerAuth | Authorization header · bearer | JWT issued by the Honeycluster auth service for the `indexer` audience. Present as `Authorization: Bearer <token>`. |
| Name | Type | Default | Description |
|---|---|---|---|
cursor | string | ||
limit | integer | 20 | |
queryrequired | string | Free-text search applied across NFT identity / metadata (`token_id`, `issuer`, `owner`, asset `name`) and collection identity / metadata (`issuer`, `name`, `description`). | |
includeNfts | boolean | ||
includeCollections | boolean | ||
metadata | boolean | ||
metrics | boolean |
| Field | Type | Description |
|---|---|---|
nfts | object[] | Matched NFT rows, ordered by `created_at DESC` (newest mints first). Empty when `includeNfts=false` or no matches. |
nfts[]. | string | Internal UUID primary key for the NFT record. |
nfts[]. | string | XRPL NFTokenID (64-char hex). |
nfts[]. | string | Minter XRPL address. |
nfts[]. | string | Current owner XRPL address. |
nfts[]. | integer | Collection-grouping identifier assigned at mint. |
nfts[]. | integer | Sequential number within (issuer, taxon). |
nfts[]. | object | On-chain URI — `ipfs://…` or `https://…`. |
nfts[]. | integer | Royalty in basis points (0–50000; 50000 = 50%). |
nfts[]. | object | Decoded XLS-20 flag bits. |
nfts[]. | boolean | Flag bit 0x01 — issuer can burn the NFT. |
nfts[]. | boolean | Flag bit 0x02 — sale offers must be XRP-denominated. |
nfts[]. | boolean | Flag bit 0x04 — issuer trust line created on mint. |
nfts[]. | boolean | Flag bit 0x08 — NFT can be transferred by non-issuers. |
nfts[]. | boolean | Flag bit 0x10 — URI is mutable (XLS-46). |
nfts[]. | boolean | True when the NFT has been burned. |
nfts[]. | object | Timestamp of the burn as Unix-seconds, if any. |
nfts[]. | integer | Ledger sequence where the NFT was minted. |
nfts[]. | object | Hash of the NFTokenMint transaction that created this NFT. |
nfts[]. | object | Asset metadata and (optional) collection context. Present when `metadata=true` (the default); omitted entirely when the caller passes `metadata=false`. |
nfts[]. | object | |
nfts[]. | object | Display name from resolved metadata. |
nfts[]. | object | Project / artwork description. |
nfts[]. | object | CDN URL of the resolved metadata JSON (backed by S3). |
nfts[]. | object | CDN URL of the primary media asset (backed by S3). |
nfts[]. | object | External project or marketplace link. |
nfts[]. | object | Launchpad that minted this NFT (e.g. "xrp.cafe", "OnXRP", "XPMarket"). Resolved by minter address with fallback to attribution from upstream metadata. |
nfts[]. | object | |
nfts[]. | object | Per-NFT market state — sales count, lifetime volume, last sale, and the current lowest open XRP sell offer for this specific NFT. Present when `metrics=true`; omitted when the caller leaves it at the default `false`. Collection-scope metrics live on `/nft/collections` and `/nft/collection`. |
nfts[]. | integer | Lifetime count of sale transfers for this NFT (transfers with non-null amount). |
nfts[]. | string | Sum of XRP-denominated sale amounts across the NFT's lifetime, as a decimal XRP string. Excludes IOU sales. |
nfts[]. | object | XRP-denominated price of the most recent sale, decimal string. `null` when the most recent sale was IOU-denominated or no sales have been recorded. |
nfts[]. | object | Unix-seconds timestamp of the most recent sale (any currency). `null` when no sales recorded. |
nfts[]. | object | Lowest open XRP sell offer for **this specific NFT**, decimal XRP. `null` when no open XRP sell offer exists. Distinct from the collection-level floor returned by `/nft/collections`. |
collections | object[] | Matched collection rows, ranked by `total_volume` DESC (most-traded first). Empty when `includeCollections=false` or no matches. |
collections[]. | string | Internal UUID primary key for the collection. |
collections[]. | string | XRPL address that minted the collection. |
collections[]. | string | Canonical collection slug — `<issuer>:<taxon>`. Use the per-collection sub-routes (`/nft/collection/...`) keyed by this slug to drill into traits, holders, traders, etc. |
collections[]. | integer | NFToken taxon grouping identifier. |
collections[]. | integer | Record creation timestamp, Unix-seconds. |
collections[]. | integer | Record update timestamp, Unix-seconds. |
collections[]. | object | Curated / slow-changing metadata about the collection. Present when `metadata=true` (the default); omitted when the caller passes `metadata=false`. |
collections[]. | object | Collection display name. |
collections[]. | object | Collection description text. |
collections[]. | object | Collection cover / banner image URL. |
collections[]. | object | Live / rolling sales and floor metrics, plus lifetime totals. Present when `metrics=true`; omitted when the caller leaves it at the default `false`. |
collections[]. | integer | Number of NFTs minted in this collection. |
collections[]. | object | Current lowest active sell offer across the collection, decimal XRP. NULL when no open sell offers exist. (Floor as a live state, not a window.) |
collections[]. | string | Cumulative lifetime trade volume, decimal XRP. |
collections[]. | object | Minimum observed sale price per window. `value` is the window minimum; `change_*` compares to the prior same-length window. |
collections[]. | object | |
collections[]. | object | |
collections[]. | object | Summed XRP-denominated sale volume per window. |
collections[]. | object | |
collections[]. | object | |
collections[]. | object | Count of sales per window. |
collections[]. | object | |
collections[]. | object | |
nextCursor | object | Opaque cursor for the next page across both kinds. `null` when neither kind has more rows. |
{
"nfts": [
{
"id": "00000000-0000-0000-0000-000000000000",
"token_id": "string",
"issuer": "string",
"owner": "string",
"taxon": 0,
"serial_number": 0,
"uri": "string",
"transfer_fee": 0,
"flags": {
"burnable": false,
"only_xrp": false,
"trust_line": false,
"transferable": false,
"mutable": false
},
"burned": false,
"burned_at": 1745798400,
"minted_at_ledger": 0,
"mint_tx_hash": "string",
"metadata": {
"asset": {
"name": "string",
"description": "string",
"meta_url": "string",
"media_url": "string",
"external_url": "string",
"marketplace": "string"
},
"collection": {
"issuer": "string",
"taxon": 0,
"name": "string",
"description": "string",
"image_url": "string"
}
},
"metrics": {
"total_sales": 0,
"total_volume_xrp": "string",
"last_sale_price_xrp": "string",
"last_sale_at": 1745798400,
"current_floor_offer_xrp": "string"
}
}
],
"collections": [
{
"id": "00000000-0000-0000-0000-000000000000",
"issuer": "string",
"slug": "string",
"taxon": 0,
"createdAt": 1745798400,
"updatedAt": 1745798400,
"metadata": {
"name": "string",
"description": "string",
"image_url": "string"
},
"metrics": {
"token_count": 0,
"current_floor": "string",
"total_volume": "string",
"floor": {
"last_24h": {
"value": "string",
"change_absolute": "string",
"change_percent": "string"
},
"last_7d": {
"value": "string",
"change_absolute": "string",
"change_percent": "string"
}
},
"volume": {
"last_24h": {
"value": "string",
"change_absolute": "string",
"change_percent": "string"
},
"last_7d": {
"value": "string",
"change_absolute": "string",
"change_percent": "string"
}
},
"sales": {
"last_24h": {
"value": 0,
"change_absolute": 0,
"change_percent": "string"
},
"last_7d": {
"value": 0,
"change_absolute": 0,
"change_percent": "string"
}
}
}
}
],
"nextCursor": "string"
}| Field | Type | Description |
|---|---|---|
message | string | The error message |
code | string | The error code |
issues | object[] | An array of issues that were responsible for the error |
issues[]. | string |
{
"code": "BAD_REQUEST",
"message": "Invalid input data",
"issues": []
}| Field | Type | Description |
|---|---|---|
message | string | The error message |
code | string | The error code |
issues | object[] | An array of issues that were responsible for the error |
issues[]. | string |
{
"code": "UNAUTHORIZED",
"message": "Authorization not provided",
"issues": []
}| Field | Type | Description |
|---|---|---|
message | string | The error message |
code | string | The error code |
issues | object[] | An array of issues that were responsible for the error |
issues[]. | string |
{
"code": "FORBIDDEN",
"message": "Insufficient access",
"issues": []
}| Field | Type | Description |
|---|---|---|
message | string | The error message |
code | string | The error code |
issues | object[] | An array of issues that were responsible for the error |
issues[]. | string |
{
"code": "NOT_FOUND",
"message": "Not found",
"issues": []
}| Field | Type | Description |
|---|---|---|
message | string | The error message |
code | string | The error code |
issues | object[] | An array of issues that were responsible for the error |
issues[]. | string |
{
"code": "INTERNAL_SERVER_ERROR",
"message": "Internal server error",
"issues": []
}