Skip to main content
Use GET /api/v1/tokens to discover the current token catalog. Each id is a Soroban contract address. XLM and Classic-issued assets participate through their Stellar Asset Contracts; short symbols such as XLM or USDC are not quote identifiers. The API tab defines the token, pool, price, and referral schemas. Keep those generated definitions as the source of field names and types.

Build a selector

Store id and decimals. Use dexes for venue context and lp to distinguish a pool share from an ordinary token. LP entries can also expose pool and the constituent assets in pool order. The catalog includes name, ticker, png_url, and svg_url from the shared XOXNO token profiles. These fields are nullable when no profile is available. Integrators can build their token selector from this endpoint without also calling xoxno-api-v2’s /stellar/tokens. For Classic-issued assets, code and issuer are verified from their on-chain Stellar Asset Contract. Map {code}-{issuer} to id when both are present. Native XLM has code: "XLM" and issuer: null; custom Soroban tokens have both fields null and use their contract id directly. Unknown identity is also represented by null fields. ticker is a display label, not a Classic asset code or unique identity. Metadata is cached and refreshed every five minutes. A failed refresh retains the last good values. The catalog remains scoped to the deployment’s network and live snapshot; tokens found only in the metadata database are not added to the list. Do not filter by degree or require kind or sacPeer: those are not fields in the token response. A catalog entry does not guarantee that a particular pair and amount can be routed; the quote endpoint decides that.

Explain liquidity positions

Use /api/v1/pools to inspect indexed pools and connect LP shares to their constituents. A quote from an LP token withdraws liquidity; a quote to an LP token deposits liquidity. A conversion between LP positions may need multiple transactions. Token LP assets use pool order; pool discovery assets are sorted identifiers. Use the quote liquidity breakdown when matching constituent amounts, rather than assuming those two lists have the same order. Never reconstruct an execution payload from pool metadata or the informational quote breakdown.

Prices and referrals

Each token’s usdPrice is the USD price of one whole token, using the same live valuation as /api/v1/prices. This includes oracle, pool-derived, and LP share prices. Unpriced tokens remain in the catalog with usdPrice: null; a missing price does not make a token unroutable and must not be displayed as a zero valuation. Use /api/v1/prices when you also need the price source, liquidity depth, or hop count. Prices can change between requests as the live state updates. For integrations that charge referral fees, inspect /api/v1/referrals/{id} before quoting with that referral. The quote’s actual fee disclosure remains the relevant amount for the transaction shown to the user.

Amounts and caching

Convert decimal user input to an atomic integer string using the selected token’s decimals. Avoid floating-point arithmetic and scientific notation. Refresh cached metadata periodically and when a previously valid token or pool stops quoting. Quickstart · Liquidity execution