Trade on Phemex (USDT-M futures, Coin-M futures, Spot) — place orders, manage positions, check balances, stream real-time market data, and query historical data. Use when the user wants to (1) check crypto prices or market data on Phemex, (2) place, amend, or cancel orders, (3) view account balances or positions, (4) set leverage or switch position modes, (5) transfer funds between spot and futures wallets, (6) stream real-time tickers, trades, or order book updates, or (7) any task involving the Phemex exchange.
Trade on Phemex via the phemex-cli tool. Supports USDT-M futures, Coin-M futures, and Spot markets.
Standalone CLI release — phemex-cli is now a standalone package (previously bundled with phemex-trade-mcp). Leaner install, no MCP dependencies.
phemex-cli subscribe ticker|trade|orderbook --symbol SYMBOL for real-time market data.list_symbols tool — Discover all available trading pairs, filtered by contract type.~/.phemexrc) — Store API credentials persistently. No need to export env vars every session.--help for every tool — Run phemex-cli <tool> --help to see parameters, defaults, and usage examples inline.closeRp, fundingRateRr) are mapped to readable names (closePrice, fundingRate). Use --raw to get the original names.suggestion and tip fields with actionable guidance instead of raw API codes.Ensure you have the latest version installed:
npm install -g phemex-cli@latest
phemex-cli <tool_name> --param1 value1 --param2 value2
Or with JSON args:
phemex-cli <tool_name> '{"param1":"value1","param2":"value2"}'
Output is always JSON. Credentials are loaded from environment variables or ~/.phemexrc (see Setup).
Every tool supports --help with full parameter docs and examples:
phemex-cli place_order --help
Output:
Usage: phemex-cli place_order [options]
Place an order (Market, Limit, Stop, StopLimit)
Required Parameters:
--symbol <string> Trading pair (e.g. BTCUSDT)
--side <string> Buy or Sell
--orderQty <number> Quantity. linear: base amount (0.01 = 0.01 BTC). ...
--ordType <string> Order type: Market, Limit, Stop, StopLimit
Optional Parameters:
--price <number> Limit price (required for Limit/StopLimit)
--timeInForce <string> GoodTillCancel, PostOnly, ... [default: GoodTillCancel]
--reduceOnly <boolean> Only reduce position [default: false]
...
Examples:
phemex-cli place_order --symbol BTCUSDT --side Buy --orderQty 0.01 --ordType Market
phemex-cli place_order --symbol BTCUSDT --side Sell --orderQty 0.01 --ordType Limit --price 90000 --timeInForce PostOnly
More help examples:
phemex-cli get_ticker --help # see params for price ticker
phemex-cli get_klines --help # see resolution values for candlesticks
phemex-cli set_leverage --help # see leverage param format
phemex-cli transfer_funds --help # see direction values
phemex-cli list_symbols --help # see contractType filter
By default, output uses readable field names:
phemex-cli get_ticker --symbol BTCUSDT
{
"closePrice": "70549.9",
"openPrice": "70192.7",
"highPrice": "70750",
"lowPrice": "69160",
"markPrice": "70549.9",
"fundingRate": "-0.00003417",
"volume": "5303.525",
"turnover": "371204351.5978"
}
Use --raw to get original API field names (for scripts that depend on old format):
phemex-cli get_ticker --symbol BTCUSDT --raw
{
"closeRp": "70549.9",
"openRp": "70192.7",
"highRp": "70750",
"lowRp": "69160",
"markPriceRp": "70549.9",
"fundingRateRr": "-0.00003417",
"volumeRq": "5303.525",
"turnoverRv": "371204351.5978"
}
Field name mapping reference:
| Suffix | Meaning | Example | Mapped to |
|---|---|---|---|
Rp | Real Price | closeRp | closePrice |
Rv | Real Value | accountBalanceRv | accountBalance |
Rr | Real Rate | fundingRateRr | fundingRate |
Rq | Real Quantity | volumeRq | volume |
Every tool accepts an optional --contractType flag:
linear (default) — USDT-M perpetual futures. Symbols end in USDT (e.g. BTCUSDT).inverse — Coin-M perpetual futures. Symbols end in USD (e.g. BTCUSD).spot — Spot trading. Symbols end in USDT (e.g. BTCUSDT). The CLI auto-prefixes s for the API.get_ticker — 24hr price ticker. Example: phemex-cli get_ticker --symbol BTCUSDTget_orderbook — Order book (30 levels). Example: phemex-cli get_orderbook --symbol BTCUSDTget_klines — Candlestick data. Example: phemex-cli get_klines --symbol BTCUSDT --resolution 3600 --limit 100get_recent_trades — Recent trades. Example: phemex-cli get_recent_trades --symbol BTCUSDTget_funding_rate — Funding rate history. Example: phemex-cli get_funding_rate --symbol .BTCFR8H --limit 20get_account — Balance and margin info. Example: phemex-cli get_account --currency USDTget_spot_wallet — Spot wallet balances. Example: phemex-cli get_spot_walletget_positions — Current positions with PnL. Example: phemex-cli get_positions --currency USDTget_open_orders — Open orders. Example: phemex-cli get_open_orders --symbol BTCUSDTget_order_history — Closed/filled orders. Example: phemex-cli get_order_history --symbol BTCUSDT --limit 50get_trades — Trade execution history. Example: phemex-cli get_trades --symbol BTCUSDT --limit 50place_order — Place an order (Market, Limit, Stop, StopLimit). Key params: --symbol, --side (Buy/Sell), --orderQty, --ordType, --price (Limit/StopLimit), --stopPx (Stop/StopLimit), --timeInForce (GoodTillCancel/PostOnly/ImmediateOrCancel/FillOrKill), --reduceOnly, --posSide (Long/Short/Merged), --stopLoss, --takeProfit, --qtyType (spot only). orderQty units differ by contract type:
linear (USDT-M): orderQty = base currency amount (e.g. 0.01 = 0.01 BTC). To buy 10 USDT worth, calculate qty = 10 / current price.inverse (Coin-M): orderQty = number of contracts as integer (e.g. 10 = 10 contracts). Each contract has a fixed USD value (e.g. 1 USD/contract for BTCUSD).spot: depends on --qtyType. ByBase (default) = base currency (e.g. 0.01 = 0.01 BTC). ByQuote = quote currency (e.g. 50 = 50 USDT worth of BTC).phemex-cli place_order --symbol BTCUSDT --side Buy --orderQty 0.01 --ordType Marketamend_order — Modify an open order. Example: phemex-cli amend_order --symbol BTCUSDT --orderID xxx --price 95000cancel_order — Cancel one order. Example: phemex-cli cancel_order --symbol BTCUSDT --orderID xxxcancel_all_orders — Cancel all orders for a symbol. Example: phemex-cli cancel_all_orders --symbol BTCUSDTset_leverage — Set leverage. Example: phemex-cli set_leverage --symbol BTCUSDT --leverage 10switch_pos_mode — Switch OneWay/Hedged. Example: phemex-cli switch_pos_mode --symbol BTCUSDT --targetPosMode OneWaytransfer_funds — Move funds between spot and futures. Example: phemex-cli transfer_funds --currency USDT --amount 100 --direction spot_to_futuresget_transfer_history — Transfer history. Example: phemex-cli get_transfer_history --currency USDT --limit 20list_symbols — List all available trading symbols, grouped by contract type.# List all symbols (linear, inverse, spot)
phemex-cli list_symbols
# Only USDT-M perpetual futures
phemex-cli list_symbols --contractType linear
# Only Coin-M perpetual futures
phemex-cli list_symbols --contractType inverse
# Only spot pairs
phemex-cli list_symbols --contractType spot
Example output:
{
"linear": ["BTCUSDT", "ETHUSDT", "SOLUSDT", "BNBUSDT", ...],
"inverse": ["BTCUSD", "ETHUSD", ...],
"spot": ["BTCUSDT", "ETHUSDT", ...]
}
Use list_symbols to discover valid symbol names before trading. This avoids "invalid symbol" errors.
Subscribe to real-time market data streams. Output is JSON to stdout, logs to stderr.
# Stream price ticker
phemex-cli subscribe ticker --symbol BTCUSDT
# Stream live trades
phemex-cli subscribe trade --symbol SOLUSDT
# Stream order book updates
phemex-cli subscribe orderbook --symbol ETHUSDT
Features: auto-reconnect with exponential backoff, Ctrl+C for graceful shutdown.
Errors return structured JSON with actionable guidance. Examples:
Invalid symbol:
phemex-cli get_ticker --symbol INVALIDXXX
{
"error": "Invalid symbol: INVALIDXXX",
"code": 6001,
"suggestion": "Symbol \"INVALIDXXX\" is not recognized. Check spelling and contract type.",
"tip": "Run \"phemex-cli list_symbols\" to see all available symbols."
}
Common typo (BTCUSD instead of BTCUSDT):
phemex-cli get_ticker --symbol BTCUSD
{
"error": "Invalid symbol: BTCUSD",
"code": 6001,
"suggestion": "Did you mean BTCUSDT? For USDT perpetuals, use symbols ending in USDT (e.g. BTCUSDT).",
"tip": "Run \"phemex-cli list_symbols\" to see all available symbols."
}
Order quantity too large:
{
"error": "Order quantity too large",
"code": "TE_QTY_TOO_LARGE",
"suggestion": "The order quantity exceeds the maximum allowed for BTCUSDT.",
"tip": "Reduce --orderQty or check the symbol's max order size on Phemex."
}
Other enhanced errors: insufficient balance, invalid API key, rate limiting, invalid leverage, order not found — all include suggestion and tip fields.
place_order, show the user exactly what the order will do: symbol, side, quantity, type, price. Ask for confirmation.cancel_all_orders, list the open orders first and confirm with the user.set_leverage, explain the implications (higher leverage = higher liquidation risk).phemex-cli get_ticker --symbol BTCUSDT
phemex-cli list_symbols --contractType linear
phemex-cli place_order --symbol BTCUSDT --side Buy --orderQty 0.01 --ordType Market
phemex-cli place_order --symbol BTCUSD --side Sell --orderQty 10 --ordType Limit --price 100000 --contractType inverse
phemex-cli place_order --symbol BTCUSDT --side Buy --orderQty 10 --ordType Market --contractType spot --qtyType ByQuote
phemex-cli get_positions --currency USDT
phemex-cli subscribe ticker --symbol BTCUSDT
phemex-cli place_order --help
Create ~/.phemexrc — credentials persist across sessions without exporting env vars:
# ~/.phemexrc
PHEMEX_API_KEY=your-api-key
PHEMEX_API_SECRET=your-api-secret
PHEMEX_API_URL=https://api.phemex.com
# Optional: max order value limit (USD)
PHEMEX_MAX_ORDER_VALUE=1000
That's it. All phemex-cli commands will pick up these values automatically.
export PHEMEX_API_KEY=your-api-key
export PHEMEX_API_SECRET=your-api-secret
export PHEMEX_API_URL=https://api.phemex.com
Settings are loaded in this order (highest priority first):
~/.phemexrc config fileThis means env vars always override the config file, so you can safely keep production creds in ~/.phemexrc and temporarily override with PHEMEX_API_URL=https://testnet-api.phemex.com phemex-cli ... for testing.
~/.phemexrc or export as environment variablesphemex-cli list_symbols --contractType linear should return symbolsPHEMEX_API_URL (defaults to testnet https://testnet-api.phemex.com for safety; set to https://api.phemex.com for real trading)PHEMEX_MAX_ORDER_VALUE to limit maximum order size (USD)