Currencies

List currencies that are currently enabled for swap. Use this to populate your "from" / "to" pickers and to read per-currency metadata like icon URLs and required confirmations.

GET/v1/currencies

Query parameters

NameTypeRequiredDescription
litebooleanoptionalWhen `true`, returns just the ticker array. Default returns full metadata objects.

Example

// Full metadata
const res = await fetch(`${BASE}/v1/currencies`, { headers: { 'Authorization': AUTH } });
const { currencies } = await res.json();
 
// Lite (ticker array only)
const liteRes = await fetch(`${BASE}/v1/currencies?lite=true`, { headers: { 'Authorization': AUTH } });
const { currencies: tickers } = await liteRes.json();

Response (default)

{
  "currencies": [
    {
      "ticker": "btc",
      "fullName": "Bitcoin",
      "enabled": true,
      "enabledFrom": true,
      "enabledTo": true,
      "fixRateEnabled": true,
      "payinConfirmations": 2,
      "blockchain": "bitcoin",
      "blockchainPrecision": 8,
      "image": "https://.../btc.svg",
      "requiresExtraId": false,
      "extraIdName": null
    }
  ]
}

Response (?lite=true)

{ "currencies": ["btc", "eth", "ltc", "..."] }

Response fields

NameTypeDescription
tickerstringLowercase currency code (`btc`, `eth`).
fullNamestringDisplay name (camelCase).
enabledbooleanCurrently available for swaps.
enabledFrombooleanAllowed as a payin (source) currency.
enabledTobooleanAllowed as a payout (destination) currency.
fixRateEnabledbooleanEligible for fixed-rate swaps. (Float-rate is the default.)
payinConfirmationsintegerOn-chain confirmations required before the deposit is considered confirmed.
blockchainstringUnderlying chain.
blockchainPrecisionintegerMaximum decimal places allowed for amounts.
imagestringIcon URL.
requiresExtraIdbooleanTrue iff this currency requires a memo / destination tag / extra-id alongside the payout address. Today this is always `false` for currencies returned by /v1/currencies — the v1 safety filter excludes tag-requiring currencies until extraId pass-through ships. Switch on this field rather than maintaining your own chain lookup table; once partners can opt in to extraId, this field will start to be `true` for the relevant rows.
extraIdNamestring | nullHuman label for the tag/memo/destination-id field on this chain (e.g. "Memo", "Destination Tag"). `null` when no tag is required.

Notes

  • The list reflects currencies enabled today. Cache for no longer than ~10 minutes; tickers can be temporarily disabled for maintenance.
  • Currencies that require a destination tag (XRP, XLM, EOS, IOST, STEEM, STX, BNB Beacon, Cosmos, Hedera, TON, etc.) are filtered out until extraId support lands. The filter checks two layers: (1) upstream extraIdName metadata, (2) an explicit denylist of tag-requiring chains as a safety net for cases where upstream metadata is incomplete. The response always includes a per-currency requiresExtraId boolean so you can switch on the field rather than maintaining your own chain lookup table.

Errors

TypeWhen
unauthenticatedMissing/invalid Authorization header
rate_limitedOver 30 RPS for this credential
upstream_errorOur liquidity layer returned an error (rare on this endpoint)

See Errors for the full envelope and recovery strategy.