assets
get/v1/assets/{id}

Request

  • The document declares no server URL.
  • Auth: one of:
    • API key in header x-api-key
    • HTTP bearer

Path parameters

idstring required

Contract StrKey (C…, 56 chars), CODE-ISSUER composite (e.g. USDC-GA…), or the reserved native token for XLM.

Response

Asset detail

asset_codestring nullable
asset_typeinteger required

Raw SMALLINT (0=native, 1=classic_credit, 3=soroban). 2 (sac) is retired.

asset_type_namestring nullable

native | classic_credit | soroban (ADR 0051 — sac retired). null only on schema drift.

contract_idstring nullable

Soroban contract StrKey (C…) — set ONLY for soroban (type=3), where the contract IS the asset. null for native / classic_credit (a wrapping SAC's address rides in sac_contract_id).

decimalsinteger nullable

Display decimals — 7 for native and classic (Stellar precision), a Soroban token's on-chain metadata. Load-bearing for amount rendering. null when the token publishes none we could read: its amounts then have no known scale, and a guessed 7 would be off by 10^11 for an 18-decimal token.

holder_countinteger nullable

Active-holder count (amount > 0) from balance_aggregates (all asset types — accounts, contracts and liquidity pools; a claimable balance is not a holder). null = no data.

icon_urlstring nullable
idstring required

Canonical identifier — the single token usable as /assets/{id}: the reserved native token for native XLM, the contract StrKey (C…) for contract-backed assets (SAC / Soroban), otherwise the CODE-ISSUER composite (classic credit, e.g. USDC-GA…). Replaces the dropped numeric surrogate (PR #175): assets are keyed on (asset_type, asset_code, issuer_id, contract_id), with no surrogate.

issuerstring nullable
issuer_home_domainstring nullable

The issuer account's on-chain home_domain (SEP-1 anchor domain), e.g. centre.io. Read from the same accounts key-seek that resolves issuer, so it costs no extra query (task 0450). null for native / Soroban-native assets (no issuer) and for issuers that never set one — most do not.

NOT a verified identity: the account holder sets this field itself and nothing checks it. Render it as a claim, never as a badge implying we confirmed the domain owns the asset.

Distinct from the detail response's home_page, which is fetched from the issuer's stellar.toml at request time.

namestring nullable
sac_contract_idstring nullable

SAC facet (ADR 0051): the wrapping Stellar Asset Contract's C… StrKey for a native / classic_credit asset that has one, re-derived on read from code:issuer (never stored). null when the asset has no observed SAC.

sac_deployedboolean nullable

Whether sac_contract_id's SAC is deployed on-chain (ADR 0051). null when the asset has no SAC; false = reserved-but-un-deployed address (render the contract link non-clickable).

symbolstring nullable

On-chain SEP-41 token symbol (the token's own symbol()). null for classic (use asset_code) and native.

total_supplystring nullable

Total supply as a RAW integer string (Int128) — scale by decimals for display (task 0331 Option C: one convention for ALL asset types; classic decimals is 7). E.g. "63836094715548". null = no balance data (a token/asset with no holders). Sourced from balance_aggregates: account and contract balances, plus claimable balances and classic liquidity pool reserves.

deployed_at_ledgerinteger nullable

soroban_contracts.deployed_at_ledger — null for classic / native.

descriptionstring nullable
home_pagestring nullable

Changes

    • breaking

      the response property / became nullable for the status

    • breaking

      the response property / became optional for the status

    • info

      the response property / became required for the status