TriportRPC

searchAssets

POSThttps://api.triport.io/sol

Full-text and filter search across the Solana Digital Asset Standard (DAS) asset index.

Solanasol_das**basic+** (RPS published with the api.2.2 spec)

searchAssets queries Triport's Digital Asset Standard (DAS) index, returning a paginated list of assets that match a combination of filters — owner, creator, authority, collection grouping, compression state, royalty configuration, interface type, and more. Unlike point lookups such as getAsset (single asset by id) or getAssetsByOwner (assets for one wallet), searchAssets lets you compose several criteria in one request, making it the right tool for building marketplace listings, portfolio views, and collection explorers.

Use it when you need to filter the asset universe by attributes rather than fetch a known id. Results are returned in pages; iterate with the page parameter (or cursor parameters) until fewer than limit items are returned.

Because this method requires the basic tier or higher, free-tier API keys will receive an authorization error. The method shares the sol_das scope with the other Digital Asset Standard methods.

Parameters

JSON-RPC params is a single named object (not a positional array). All fields are optional, but at least one filter should be supplied to avoid scanning the entire index.

ownerAddressstringoptional
Base58 owner wallet to filter by.
creatorAddressstringoptional
Base58 address of a creator on the asset.
authorityAddressstringoptional
Base58 update-authority address.
grouping[string, string]optional
Collection grouping as ["collection", "<mint>"].
compressedbooleanoptional
true to return only compressed (cNFT) assets.
burntbooleanoptional
Filter by burn state.
frozenbooleanoptional
Filter by frozen state.
interfacestringoptional
DAS interface, e.g. "V1_NFT", "ProgrammableNFT".
royaltyTargetTypestringoptional
"creators", "fanout", or "single".
royaltyTargetstringoptional
Address royalties are paid to.
royaltyAmountintegeroptional
Royalty basis points to match.
tokenTypestringoptional
"fungible", "nonFungible", "compressedNft", "regularNft", or "all".
pageintegeroptional
1-based page number. Defaults to 1.
limitintegeroptional
Page size, max 1000. Defaults to 1000.
sortByobjectoptional
{ "sortBy": "created" | "updated" | "recentAction" | "id", "sortDirection": "asc" | "desc" }.
beforestringoptional
Cursor — return assets before this id (cursor pagination).
afterstringoptional
Cursor — return assets after this id (cursor pagination).

Response

Response fields

FieldTypeDescription
result.totalintegerNumber of items in this page.
result.limitintegerPage size that was applied.
result.pageintegerPage number echoed back.
result.itemsarrayMatched assets.
items[].idstringAsset id (mint / cNFT leaf id).
items[].interfacestringDAS interface type.
items[].contentobjectMetadata: json_uri, metadata.name, metadata.symbol, files, attributes.
items[].compressionobjectCompression state — compressed, tree, leaf_id.
items[].groupingarrayCollection grouping entries (group_key/group_value).
items[].ownershipobjectowner, ownership_model, frozen, delegated.
items[].royaltyobjectroyalty_model, basis_points, primary_sale_happened.
items[].burntbooleanWhether the asset has been burned.

The result envelope follows the DAS asset shape and is provisional pending api.2.2.

Errors

Errors use the standard JSON-RPC error envelope. The cases most relevant to this method:

CodeMeaningWhen it happens
-32002tier_insufficient (HTTP 403)Called with a free-tier key — searchAssets requires basic tier or higher.
-32003rate_limited (HTTP 429)Sustained RPS for the sol_das category exceeded; honor the Retry-After header.
-32601method_unknown (HTTP 403)Method name misspelled or not part of the Solana product.
-32602Invalid paramsMalformed filter object, bad address, or limit out of range.

Example tier_insufficient response (a free-tier key calling a DAS method):

{
  "jsonrpc": "2.0",
  "id": "1",
  "error": {
    "code": -32002,
    "message": "Method 'searchAssets' requires basic tier or higher",
    "data": {
      "current_tier": "free",
      "required_tier": "basic",
      "method": "searchAssets",
      "category": "sol_das",
      "upgrade_url": "https://triport.io/upgrade/basic"
    }
  }
}

See the shared errors reference for the full error envelope and the typed error schemas. Rate limiting is RPS-per-tier with burst — there is no daily quota.

Examples

JavaScript (fetch)

const res = await fetch("https://api.triport.io/sol", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${process.env.TRIPORT_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    jsonrpc: "2.0",
    id: "1",
    method: "searchAssets",
    params: {
      ownerAddress: "N4f6zftYsuu4yT7icsjLwh4i6pB1zvvKbseHj2NmSQw",
      compressed: true,
      page: 1,
      limit: 100,
    },
  }),
});


const { result } = await res.json();
console.log(`${result.total} assets on page ${result.page}`);

TypeScript SDK (@triport/sdk)

import { Triport } from "@triport/sdk";


const triport = new Triport({ apiKey: process.env.TRIPORT_API_KEY! });


const result = await triport.solana.searchAssets({
  ownerAddress: "N4f6zftYsuu4yT7icsjLwh4i6pB1zvvKbseHj2NmSQw",
  compressed: true,
  page: 1,
  limit: 100,
});


for (const asset of result.items) {
  console.log(asset.id, asset.content?.metadata?.name);
}

Python (triport-sdk)

import os
from triport import Triport


triport = Triport(api_key=os.environ["TRIPORT_API_KEY"])


result = triport.solana.search_assets(
    owner_address="N4f6zftYsuu4yT7icsjLwh4i6pB1zvvKbseHj2NmSQw",
    compressed=True,
    page=1,
    limit=100,
)


for asset in result["items"]:
    print(asset["id"], asset["content"]["metadata"]["name"])

Notes

  • Pagination: start at page: 1 and increment until a page returns fewer than limit items. For deep result sets, prefer the before/after cursor parameters over page numbers for stable iteration.
  • Combine filters narrowly. Supplying several criteria (owner + grouping + tokenType) keeps responses small and fast; an unfiltered search scans a large index and is more likely to hit rate limits.
  • Related methods: getAsset (single asset by id), getAssetsByOwner, getAssetsByGroup, getAssetsByCreator, and getAssetsByAuthority — all in the sol_das scope, all basic+.
  • Tier: free-tier keys cannot call any sol_das method; upgrade to basic or higher.
  • Stability: finalized parameter and result schemas, plus the published per-tier RPS limits, arrive with spec version api.2.2.