Skip to main content

SupportedExchange

Single supported exchange entry. The full list is the single source of truth for exchanges across the platform — frontend dropdowns, the candlestick chart, the bot creation wizard, and validation of marketdata queries all read from the supportedExchanges (or backtestMetadata) query rather than maintaining their own enum.

Source of truth: api/internal/exchange/catalog.go See ADR-0066 for rationale.

type SupportedExchange {
id: String!
name: String!
color: String!
textColor: String!
description: String!
apiGuideUrl: String
requiresPassword: Boolean!
passwordLabel: String
isDex: Boolean!
capabilities: [String!]!
hasMarketData: Boolean!
connectable: Boolean!
freqtradeAlias: String
}

Fields​

SupportedExchange.id ● String! non-null scalar​

Canonical lowercase id matching freqtrade (e.g. "binance", "myokx").

SupportedExchange.name ● String! non-null scalar​

Human-readable display name (e.g. "Binance", "MyOKX (EEA)").

SupportedExchange.color ● String! non-null scalar​

Brand background colour (CSS hex).

SupportedExchange.textColor ● String! non-null scalar​

Brand foreground colour (CSS hex).

SupportedExchange.description ● String! non-null scalar​

Short marketing-friendly summary.

SupportedExchange.apiGuideUrl ● String scalar​

Docs link explaining how to create API keys for this exchange.

SupportedExchange.requiresPassword ● Boolean! non-null scalar​

Whether the exchange uses a passphrase in addition to API key + secret.

SupportedExchange.passwordLabel ● String scalar​

Display label for the passphrase field, if requiresPassword is true.

SupportedExchange.isDex ● Boolean! non-null scalar​

True for decentralized exchanges (e.g. Hyperliquid).

SupportedExchange.capabilities ● [String!]! non-null scalar​

Trading modes supported on VolatiCloud (e.g. ["spot", "futures"]).

SupportedExchange.hasMarketData ● Boolean! non-null scalar​

Whether the candlestick chart and exchangeMarkets query work for this exchange.

SupportedExchange.connectable ● Boolean! non-null scalar​

Whether this exchange can hold live-trading API credentials.

False means adding an API key WILL be refused: VolatiCloud has no way to verify, for this venue, that the key cannot withdraw, and refuses to store a key it cannot verify. Market data, backtesting and dry-run bots all still work — none of them need stored credentials.

The console must gate the exchange picker on this. It previously offered every catalog entry and only discovered the refusal at mutation submit, after the user had already created an API key on the exchange.

SupportedExchange.freqtradeAlias ● String scalar​

If set, this entry shares its freqtrade adapter with another catalog id.

Returned By​

supportedExchanges query

Member Of​

BacktestMetadata object