Symbol Aliases
Both the FAPI and the native API normalize symbol inputs, so bots migrating from venues with different naming (Hyperliquid, TradingView, FTX-style) work without a mapping table.
Normalization
| Input | Normalized |
|---|---|
BTCUSDT | BTCUSDT |
btcusdt | BTCUSDT |
BTC-USDT | BTCUSDT |
BTC-USD | BTCUSDT |
BTC/USDT, BTC/USD | BTCUSDT |
BTC_USDT, BTC_USD | BTCUSDT |
Rules: uppercase; strip -, /, _; a …USD suffix is treated as …USDT. Responses always use the canonical BTCUSDT form, whichever alias you sent. WebSocket channel names (ticker:btc-usd) are normalized the same way, but the subscribed acknowledgement echoes what you sent.
Binance itself accepts only BTCUSDT; if you want identical behaviour across venues, send the canonical form.
Native API request bodies
Native POST /api/v1/orders and trigger-order bodies historically use the hyphenated form ("symbol": "BTC-USDT", "market_symbol": "BTC-USDT"); both forms are accepted there too and stored canonically.
Unknown symbols
A symbol that normalizes to something not present in this deployment's market configuration returns -1121 Invalid symbol on FAPI and 404 INVALID_MARKET on the native market endpoints. The tradeable list is deployment-specific — read GET /fapi/v1/exchangeInfo or GET /api/v1/markets at startup rather than hard-coding it.
Native symbol metadata
GET /api/v1/markets returns symbol, base_asset, quote_asset, 24 h stats, rank, leverage (max) and the display sort_order. Markets are added, paused, resumed and delisted dynamically by operations; status on exchangeInfo (TRADING / HALT / CLOSE) is the authoritative tradability flag.