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/currenciesQuery parameters
| Name | Type | Required | Description |
|---|---|---|---|
lite | boolean | optional | When `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
| Name | Type | Description |
|---|---|---|
ticker | string | Lowercase currency code (`btc`, `eth`). |
fullName | string | Display name (camelCase). |
enabled | boolean | Currently available for swaps. |
enabledFrom | boolean | Allowed as a payin (source) currency. |
enabledTo | boolean | Allowed as a payout (destination) currency. |
fixRateEnabled | boolean | Eligible for fixed-rate swaps. (Float-rate is the default.) |
payinConfirmations | integer | On-chain confirmations required before the deposit is considered confirmed. |
blockchain | string | Underlying chain. |
blockchainPrecision | integer | Maximum decimal places allowed for amounts. |
image | string | Icon URL. |
requiresExtraId | boolean | True 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. |
extraIdName | string | null | Human 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
extraIdNamemetadata, (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-currencyrequiresExtraIdboolean so you can switch on the field rather than maintaining your own chain lookup table.
Errors
| Type | When |
|---|---|
unauthenticated | Missing/invalid Authorization header |
rate_limited | Over 30 RPS for this credential |
upstream_error | Our liquidity layer returned an error (rare on this endpoint) |
See Errors for the full envelope and recovery strategy.