Assets (collection)
Search, curated lists, mint resolution, snapshots, and aggregate risk.
All endpoints on this page are Platform API endpoints unless noted otherwise.
GET /v1/assets/search
Search assets by text query (canonical assets plus singleton Solana tokens when available).
- Auth:
x-api-key - Scope:
assets:read
Query params
q(required): search stringlimit(optional): integer (1–50), default20category(optional): must be one of the supported asset categories
Response
interface AssetsSearchResponse {
query: string;
category: string | null;
results: Array<{
assetId: string;
name?: string;
symbol?: string;
category: string;
imageUrl: string | null;
stats: null | {
price: number | null;
liquidity: number | null;
volume24hUSD: number | null;
marketCap: number | null;
priceChange24hPercent: number | null;
priceChange1hPercent: number | null;
};
primaryVariant: null | {
variantId: string;
mint: string;
kind: string;
liquidityTier: string;
trustTier: string;
tags: string[];
issuer?: string;
issuerUrl?: string;
label?: string;
symbol?: string;
name?: string;
market: null | {
price: number | null;
liquidity: number | null;
volume24hUSD: number | null;
marketCap: number | null;
priceChange24hPercent: number | null;
priceChange1hPercent: number | null;
decimals: number | null;
logoURI: string | null;
lastFetchedAt: number | null;
};
};
}>;
}Notes
stats.liquidityandstats.volume24hUSDare canonical aggregates across the asset’s spot-like variants (native,wrapped,bridged,stablecoin,lst,tokenized_equity,basket). If an asset has no spot-like variants, the API falls back to aggregating across all variants.primaryVariantis chosen deterministically from the asset’s spot-like variants by highest liquidity, then trust tier, then 24h volume, then curated mint rank.stats.price,stats.marketCap, and price change fields come from the asset’s primary variant.- Tokens that are not part of any canonical asset may appear as singleton assets with deterministic IDs of the form
solana-<mint>(with a single Solana variant).
Example
curl -sS "$API_BASE_URL/v1/assets/search?q=bitcoin&limit=10" \
-H "x-api-key: $API_KEY"GET /v1/assets/resolve
Resolve a Solana mint (or an asset reference) to its canonical assetId + variant details.
-
If the mint is part of a canonical asset, the returned
assetIdis the canonical slug (for example:usdc,jitosol,apple). Otherwise the API returns a deterministic singleton ID of the formsolana-<mint>. -
Auth:
x-api-key -
Scope:
assets:read
Query params
mint(optional): Solana mint address (base58)ref(optional): asset reference string (anassetId, alias, mint, orsolana-<mint>)
One of mint or ref is required. If both are provided, mint takes precedence.
Response
interface AssetsResolveResponse {
assetId: string;
asset: {
assetId: string;
name: string | null;
symbol: string | null;
category: string;
aliases: string[];
};
variant: {
mint: string;
chain: string;
kind: string;
liquidityTier: string;
trustTier: string;
tags: string[];
issuer?: string;
issuerUrl?: string;
label?: string;
} | null;
}{
"assetId": "solana",
"asset": {
"assetId": "solana",
"name": "Solana",
"symbol": "SOL",
"category": "crypto",
"aliases": []
},
"variant": {
"mint": "So11111111111111111111111111111111111111112",
"chain": "solana",
"kind": "native",
"liquidityTier": "tier3",
"trustTier": "tier3",
"tags": []
}
}Example
curl -sS "$API_BASE_URL/v1/assets/resolve?ref=$MINT" \
-H "x-api-key: $API_KEY"curl -sS "$API_BASE_URL/v1/assets/resolve?ref=usdc" \
-H "x-api-key: $API_KEY"GET /v1/assets/curated
Get curated assets from a list.
- Auth:
x-api-key - Scope:
assets:read
Query params
list(optional): curated list id, orall(defaultall)groupBy(optional):asset(default) ormint
Notes
- Results are sorted by
stats.volume24hUSDdescending when available. groupBy=mintexpands the response to one row per variant mint.imageUrlis curated canonical imagery (including storage-backed URLs when configured).primaryVariant.market.logoURIis a best-effort per-token icon from indexed/cache sources and may benull(the server may fall back toimageUrlwhen missing).stats.liquidityandstats.volume24hUSDare canonical aggregates across the asset’s spot-like variants (fallback to all variants if none exist). IngroupBy=mint,primaryVariant.marketis mint-specific butstatsremains canonical for the asset.
Response
interface AssetsCuratedResponse {
listId: string;
assets: Array<{
assetId: string;
name?: string;
symbol?: string;
category: string;
imageUrl: string | null;
stats: null | {
price: number | null;
liquidity: number | null;
volume24hUSD: number | null;
marketCap: number | null;
priceChange24hPercent: number | null;
priceChange1hPercent: number | null;
};
primaryVariant: null | {
variantId: string;
mint: string;
kind: string;
liquidityTier: string;
trustTier: string;
tags: string[];
issuer?: string;
issuerUrl?: string;
label?: string;
symbol?: string;
name?: string;
market: null | {
price: number | null;
liquidity: number | null;
volume24hUSD: number | null;
marketCap: number | null;
priceChange24hPercent: number | null;
priceChange1hPercent: number | null;
decimals: number | null;
logoURI: string | null;
lastFetchedAt: number | null;
};
};
}>;
}Notes:
- If
groupBy=mint,assets[]becomes “one row per mint” andprimaryVariantis always present for returned rows.
Example
curl -sS "$API_BASE_URL/v1/assets/curated?list=all&groupBy=asset" \
-H "x-api-key: $API_KEY"POST /v1/assets/market-snapshots
Batch lookup cached market snapshots for up to 250 mints.
- Auth:
x-api-key - Scope:
assets:read - Body: JSON
Body
Either mints or addresses (both treated the same).
{ "mints": ["So11111111111111111111111111111111111111112"] }Notes
- Input is de-duped and capped at 250 addresses.
- Returns an array (Convex-backed) of token search rows for those addresses.
Response
This endpoint returns an array of token rows. The exact row shape can evolve, but it is safe to treat each entry as “token metadata + market snapshot data” keyed by the requested address.
type AssetsMarketSnapshotsResponse = Array<unknown>;Example
curl -sS "$API_BASE_URL/v1/assets/market-snapshots" \
-H "x-api-key: $API_KEY" \
-H "content-type: application/json" \
-d '{"mints":["So11111111111111111111111111111111111111112"]}'GET /v1/assets/variant-markets
Batch lookup per-mint variant market snapshots (best-effort; may be null if not cached).
- Auth:
x-api-key - Scope:
assets:read
Query params
mintsoraddresses: comma-separated list (max 50)
Response shape (high level)
variants[]where each entry contains:mintassetId(when variant is known)chain(when variant is known)market(market snapshot, ornullif missing)
Response
interface AssetsVariantMarketsResponse {
variants: Array<{
mint: string;
assetId: string | null;
chain: string | null;
market: Record<string, unknown> | null;
}>;
}{
"variants": [
{
"mint": "So11111111111111111111111111111111111111112",
"assetId": "solana",
"chain": "solana",
"market": {
"symbol": "SOL",
"name": "Solana",
"decimals": 9,
"price": 0,
"liquidity": 0,
"volume24hUSD": 0,
"marketCap": 0,
"priceChange24hPercent": 0,
"lastFetchedAt": 0
}
}
]
}Example
curl -sS "$API_BASE_URL/v1/assets/variant-markets?mints=$MINT1,$MINT2" \
-H "x-api-key: $API_KEY"GET /v1/assets/risk-summary
Compute a quick market-based “risk summary” for a mint.
- Auth:
x-api-key - Scope: requires either
assets:readorassets:risk:read
Query params
mint(required) oraddress(alias): Solana mint
Notes
- This endpoint requires a cached market snapshot; if missing you’ll get an “Insufficient Data” response.
Response
interface AssetsRiskSummaryResponse {
score: number;
grade: string;
label: string;
tone: "info" | "success" | "warning" | "danger";
isTrustedLaunch: boolean;
caps: Array<unknown>;
hasInsufficientData: boolean;
insufficientDataReason?: string;
}{
"score": 0,
"grade": "C",
"label": "Insufficient Data",
"tone": "info",
"isTrustedLaunch": false,
"caps": [],
"hasInsufficientData": true,
"insufficientDataReason": "Market snapshot not available in cache"
}Example
curl -sS "$API_BASE_URL/v1/assets/risk-summary?mint=$MINT" \
-H "x-api-key: $API_KEY"