Skip to content

Tokens

client.token is read-only. Token records are populated automatically by the indexer when it observes on-chain transfers — you don’t create them directly via the SDK.

const res = await client.token.list({
highlightId,
page: 1,
limit: 20,
sort: "mintedAt", // "tokenId" | "name" | "mintedAt" | "createdAt"
order: "desc", // "asc" | "desc"
ownerAddress: "0x...", // optional — filter by owner
search: "rare", // optional — substring match on name
});

For public (Live) collections, this works without auth. Draft collections require ownership.

const res = await client.token.get({
highlightId,
tokenId: "1", // the on-chain token ID as a string
});
{
id: "uuid",
collectionId: "uuid",
tokenId: "1",
name: "Token Name",
description: "Token description",
image: "https://...",
animationUrl: "https://...",
externalUrl: "https://...",
attributes: [
{ trait_type: "Background", value: "Gold" },
{ trait_type: "Rarity", value: "Rare" },
],
properties: { /* freeform */ },
imageMediaId: "uuid",
animationMediaId: "uuid",
mintedAt: "2026-04-01T00:00:00Z",
createdAt: "2026-04-01T00:00:00Z",
updatedAt: "2026-04-01T00:00:00Z",
}

Token metadata shape depends on the collection type:

  • Editions — every token shares the same metadata.
  • Series — each token has unique metadata, uploaded as part of the series asset bundle.
  • Generative — metadata (including captured image) is materialized from the generator at mint time.