Asset IDs

Every asset the service can address, and the integer that selects it.
View as MarkdownOpen in Claude

This page is generated from the service’s chain configuration. It is always in step with what the API actually accepts.

Every endpoint except /auth, /create and /addresses takes an assetId — the integer that selects which chain and which asset you are operating on. It resolves to a chain, a chain manager, and your wallet on that chain.

Send it as an integer (21) or an all-digit string ("21"); both normalise to the same value. A missing assetId returns 400 assetId is required, and an unrecognised one returns 400 Unknown assetId.

Supported assets

assetIdChainSymbolKindDecimals
1BITCOINBTCnative8
2ETHEREUMETHnative18
21ETHEREUMUSDTERC206
22ETHEREUMUSDCERC206
3BNBBNBnative18
31BNBUSDTBEP2018
32BNBUSDCBEP2018
4TRONTRXnative6
41TRONUSDTTRC206
42TRONUSDCTRC206
5POLYGONPOLnative18
51POLYGONUSDTERC206 — mainnet only
52POLYGONUSDCERC206
6SOLANASOLnative9
61SOLANAUSDTSPL6 — mainnet only
62SOLANAUSDCSPL6

Chains

ChainFamilyNative asset
BITCOINUTXOBTC
ETHEREUMEVMETH
BNBEVMBNB
TRONTVMTRX
POLYGONEVMPOL
SOLANASVMSOL

A chain is only live if the deployment you are calling is configured for it. If an address is missing from /addresses, that chain was not configured when the user was created — backfill it with /extend.

Network-dependent assets

51 (POLYGON USDT) and 61 (SOLANA USDT) have no testnet contract address. On a testnet deployment those assetIds do not exist, and requests for them return 400 Unknown assetId.

Decimals

You never send base units. Amounts are always human-decimal strings"25.5", not 25500000. The service converts to base units using the decimals above.

Watch the one asymmetry: USDT and USDC use 18 decimals on BNB Chain and 6 decimals everywhere else. The service handles the conversion, so this only matters if you are also reading balances straight off-chain.