Toobit Trading
by @xuxizhen
Trade crypto on Toobit exchange via natural language. Spot & USDT-M futures trading, market data queries, wallet management. Use when user mentions Toobit, o...
clawhub install toobitπ About This Skill
name: toobit description: Trade crypto on Toobit exchange via natural language. Spot & USDT-M futures trading, market data queries, wallet management. Use when user mentions Toobit, or wants to trade/query crypto on Toobit.
Toobit Exchange API Skill
You are a Toobit exchange trading assistant. Execute API calls via curl in Bash based on user intent.
Setup
Before any signed request, check environment variables:
echo "API_KEY=${TOOBIT_API_KEY:+set}" && echo "API_SECRET=${TOOBIT_API_SECRET:+set}"
If not set, instruct user:
export TOOBIT_API_KEY="your_api_key"
export TOOBIT_API_SECRET="your_api_secret"
Base Configuration
https://api.toobit.comX-BB-APIKEYSigning Template
For all SIGNED endpoints, use this pattern:
TIMESTAMP=$(($(date +%s) * 1000))
PARAMS="×tamp=$TIMESTAMP"
SIGNATURE=$(echo -n "$PARAMS" | openssl dgst -sha256 -hmac "$TOOBIT_API_SECRET" | awk '{print $2}')
curl -s -H "X-BB-APIKEY: $TOOBIT_API_KEY" "https://api.toobit.com?${PARAMS}&signature=${SIGNATURE}"
For POST/DELETE with signed params, use the same query string signing approach.
Safety Rules
| Level | Operations | Action | |-------|-----------|--------| | Read-only | Market data, balances, order queries | Execute directly, show results | | Write | Place/cancel orders, change leverage/margin | Show parameters first, ask user to confirm before executing | | High-risk | Withdraw funds | Show parameters + warn about risks + require explicit confirmation |
Always parse the JSON response and present results in a readable format (tables, lists).
SPOT TRADING
Market Data (Public, no signature required)
#### Ping
GET /api/v1/ping
Test API connectivity. No parameters.#### Server Time
GET /api/v1/time
Returns serverTime in milliseconds.#### Exchange Info
GET /api/v1/exchangeInfo
Trading rules and symbol information.#### Order Book (Depth)
GET /quote/v1/depth
| Param | Required | Description |
|-------|----------|-------------|
| symbol | Yes | e.g. BTCUSDT |
| limit | No | Default 100, max 100 |#### Recent Trades
GET /quote/v1/trades
| Param | Required | Description |
|-------|----------|-------------|
| symbol | Yes | e.g. BTCUSDT |
| limit | No | Default 60, max 60 |#### Klines (Candlesticks)
GET /quote/v1/klines
| Param | Required | Description |
|-------|----------|-------------|
| symbol | Yes | e.g. BTCUSDT |
| interval | Yes | 1m,3m,5m,15m,30m,1h,2h,4h,6h,8h,12h,1d,3d,1w,1M |
| startTime | No | ms timestamp |
| endTime | No | ms timestamp |
| limit | No | Default 500, max 1000 |#### 24hr Ticker
GET /quote/v1/ticker/24hr
| Param | Required | Description |
|-------|----------|-------------|
| symbol | No | Omit for all symbols |#### Price Ticker
GET /quote/v1/ticker/price
| Param | Required | Description |
|-------|----------|-------------|
| symbol | No | Omit for all symbols |#### Book Ticker
GET /quote/v1/ticker/bookTicker
| Param | Required | Description |
|-------|----------|-------------|
| symbol | No | Omit for all symbols |#### Merged Depth
GET /quote/v1/depth/merged
| Param | Required | Description |
|-------|----------|-------------|
| symbol | Yes | e.g. BTCUSDT |
| scale | No | Price precision scale |
| limit | No | Default 40, max 100 |Wallet Endpoints (SIGNED)
#### Submit Withdrawal
POST /api/v1/account/withdraw
HIGH-RISK: Requires explicit user confirmation + risk warning| Param | Required | Description | |-------|----------|-------------| | coin | Yes | e.g. USDT | | clientOrderId | No | Custom order ID | | address | Yes | Withdrawal address | | quantity | Yes | Amount | | chainType | Yes | e.g. ERC20, TRC20 |
#### Withdrawal History
GET /api/v1/account/withdrawOrders
| Param | Required | Description |
|-------|----------|-------------|
| coin | No | Filter by coin |
| startTime | No | ms timestamp |
| endTime | No | ms timestamp |
| fromId | No | Pagination |
| withdrawOrderId | No | Specific order |
| limit | No | Default 500 |#### Deposit Address
GET /api/v1/account/deposit/address
| Param | Required | Description |
|-------|----------|-------------|
| coin | Yes | e.g. USDT |
| chainType | Yes | e.g. ERC20 |#### Deposit History
GET /api/v1/account/depositOrders
| Param | Required | Description |
|-------|----------|-------------|
| coin | No | Filter by coin |
| startTime | No | ms timestamp |
| endTime | No | ms timestamp |
| fromId | No | Pagination |
| limit | No | Default 500 |Spot Trading Endpoints (SIGNED)
#### Test New Order
POST /api/v1/spot/orderTest
Same params as Place Order but does not execute. Use for validation.#### Place Order
POST /api/v1/spot/order
WRITE: Show params and confirm before executing| Param | Required | Description | |-------|----------|-------------| | symbol | Yes | e.g. BTCUSDT | | side | Yes | BUY or SELL | | type | Yes | LIMIT, MARKET, LIMIT_MAKER | | quantity | Yes | Order quantity | | price | Conditional | Required for LIMIT orders | | newClientOrderId | No | Custom order ID | | timeInForce | No | GTC (default), IOC, FOK |
#### Batch Orders
POST /api/v1/spot/batchOrders
WRITE: Show all orders and confirm| Param | Required | Description | |-------|----------|-------------| | list | Yes | JSON array of order objects (max 20) |
#### Cancel Order
DELETE /api/v1/spot/order
WRITE: Confirm before executing| Param | Required | Description | |-------|----------|-------------| | orderId | Conditional | Order ID (or use clientOrderId) | | clientOrderId | Conditional | Custom order ID |
#### Cancel All Open Orders
DELETE /api/v1/spot/openOrders
WRITE: Confirm before executing| Param | Required | Description | |-------|----------|-------------| | symbol | No | Filter by symbol | | side | No | BUY or SELL |
#### Cancel Orders by IDs
DELETE /api/v1/spot/cancelOrderByIds
WRITE: Confirm before executing| Param | Required | Description | |-------|----------|-------------| | ids | Yes | Comma-separated order IDs |
#### Query Order
GET /api/v1/spot/order
| Param | Required | Description |
|-------|----------|-------------|
| orderId | Conditional | Order ID |
| origClientOrderId | Conditional | Custom order ID |#### Open Orders
GET /api/v1/spot/openOrders
| Param | Required | Description |
|-------|----------|-------------|
| symbol | No | Filter by symbol |
| orderId | No | Start from order ID |
| limit | No | Default 500 |#### History Orders
GET /api/v1/spot/tradeOrders
| Param | Required | Description |
|-------|----------|-------------|
| symbol | No | Filter by symbol |
| startTime | No | ms timestamp |
| endTime | No | ms timestamp |
| limit | No | Default 500 |Account Endpoints (SIGNED)
#### Account Balance
GET /api/v1/account
No parameters. Returns all asset balances.#### Trade History
GET /api/v1/account/trades
| Param | Required | Description |
|-------|----------|-------------|
| symbol | Yes | e.g. BTCUSDT |
| startTime | No | ms timestamp |
| endTime | No | ms timestamp |
| fromId | No | Start trade ID |
| toId | No | End trade ID |
| limit | No | Default 500 |#### Sub-Account Info
GET /api/v1/account/subAccount
No parameters.#### Sub-Account Transfer
POST /api/v1/subAccount/transfer
WRITE: Confirm before executing| Param | Required | Description | |-------|----------|-------------| | fromUid | Yes | Source account UID | | toUid | Yes | Target account UID | | fromAccountType | Yes | 1=spot, 3=contract | | toAccountType | Yes | 1=spot, 3=contract | | asset | Yes | e.g. USDT | | quantity | Yes | Transfer amount |
#### Balance Flow
GET /api/v1/account/balanceFlow
| Param | Required | Description |
|-------|----------|-------------|
| accountType | No | 1=spot, 3=contract |
| coin | No | Filter by coin |
| flowType | No | Transaction type |
| startTime | No | ms timestamp |
| endTime | No | ms timestamp |
| limit | No | Default 500 |#### Check API Key
GET /api/v1/account/checkApiKey
No parameters. Returns API key permissions.Spot User Data Stream
#### Create Listen Key
POST /api/v1/userDataStream
No parameters. Returns listenKey.#### Extend Listen Key
PUT /api/v1/userDataStream
| Param | Required | Description |
|-------|----------|-------------|
| listenKey | Yes | The listen key to extend |#### Close Listen Key
DELETE /api/v1/userDataStream
| Param | Required | Description |
|-------|----------|-------------|
| listenKey | Yes | The listen key to close |WebSocket URL: wss://stream.toobit.com/quote/ws/v1 (market) or wss://stream.toobit.com/api/v1/ws/ (user data)
USDT-M FUTURES
Futures Market Data (Public, no signature required)
All spot market data endpoints above also apply to futures. Additional futures-specific endpoints:
#### Index Klines
GET /quote/v1/index/klines
| Param | Required | Description |
|-------|----------|-------------|
| symbol | Yes | e.g. BTCUSDT |
| interval | Yes | Same as spot klines |
| from | No | Start time |
| to | No | End time |
| limit | No | Default 500 |#### Mark Price Klines
GET /quote/v1/markPrice/klines
| Param | Required | Description |
|-------|----------|-------------|
| symbol | Yes | e.g. BTCUSDT |
| interval | Yes | Same as spot klines |
| from | No | Start time |
| to | No | End time |
| limit | No | Default 500 |#### Mark Price
GET /quote/v1/markPrice
| Param | Required | Description |
|-------|----------|-------------|
| symbol | Yes | e.g. BTCUSDT |#### Funding Rate
GET /api/v1/futures/fundingRate
| Param | Required | Description |
|-------|----------|-------------|
| symbol | No | Omit for all symbols |#### Funding Rate History
GET /api/v1/futures/historyFundingRate
| Param | Required | Description |
|-------|----------|-------------|
| symbol | Yes | e.g. BTCUSDT |
| fromId | No | Pagination |
| endId | No | Pagination |
| limit | No | Default 100 |#### Contract 24hr Ticker
GET /quote/v1/contract/ticker/24hr
| Param | Required | Description |
|-------|----------|-------------|
| symbol | No | Omit for all symbols |#### Contract Price Ticker
GET /quote/v1/contract/ticker/price
| Param | Required | Description |
|-------|----------|-------------|
| symbol | No | Omit for all symbols |#### Index Price
GET /quote/v1/index
| Param | Required | Description |
|-------|----------|-------------|
| symbol | No | Omit for all symbols |#### Contract Book Ticker
GET /quote/v1/contract/ticker/bookTicker
| Param | Required | Description |
|-------|----------|-------------|
| symbol | No | Omit for all symbols |Futures Account & Trading (SIGNED)
#### Change Margin Type
POST /api/v1/futures/marginType
WRITE: Confirm before executing| Param | Required | Description | |-------|----------|-------------| | symbol | Yes | e.g. BTCUSDT | | marginType | Yes | ISOLATED or CROSSED | | category | No | Default 0 |
#### Set Leverage
POST /api/v1/futures/leverage
WRITE: Confirm before executing| Param | Required | Description | |-------|----------|-------------| | symbol | Yes | e.g. BTCUSDT | | leverage | Yes | 1-125 | | category | No | Default 0 |
#### Query Leverage & Position Mode
GET /api/v1/futures/accountLeverage
| Param | Required | Description |
|-------|----------|-------------|
| symbol | Yes | e.g. BTCUSDT |
| category | No | Default 0 |#### Place Futures Order
POST /api/v1/futures/order
WRITE: Show all params and confirm before executing| Param | Required | Description | |-------|----------|-------------| | symbol | Yes | e.g. BTCUSDT | | side | Yes | BUY_OPEN, SELL_OPEN, BUY_CLOSE, SELL_CLOSE | | type | Yes | LIMIT, MARKET, STOP, TAKE_PROFIT | | quantity | Conditional | Order qty (contracts) | | valueQuantity | Conditional | Order qty (value in USDT) | | price | Conditional | Required for LIMIT | | priceType | No | INPUT, OPPONENT, QUEUE, OVER, MARKET | | stopPrice | Conditional | Trigger price for STOP/TP orders | | timeInForce | No | GTC, IOC, FOK, GTX | | newClientOrderId | No | Custom order ID | | takeProfit | No | TP trigger price | | tpTriggerBy | No | market_price or index_price | | tpLimitPrice | No | TP limit price | | tpOrderType | No | LIMIT or MARKET | | stopLoss | No | SL trigger price | | slTriggerBy | No | market_price or index_price | | slLimitPrice | No | SL limit price | | slOrderType | No | LIMIT or MARKET |
#### Batch Futures Orders
POST /api/v1/futures/batchOrders
WRITE: Show all orders and confirm| Param | Required | Description | |-------|----------|-------------| | list | Yes | JSON array of order objects (max 10) |
#### Query Futures Order
GET /api/v1/futures/order
| Param | Required | Description |
|-------|----------|-------------|
| orderId | Conditional | Order ID |
| origClientOrderId | Conditional | Custom order ID |
| type | No | Order type filter |
| category | No | Default 0 |#### Cancel Futures Order
DELETE /api/v1/futures/order
WRITE: Confirm before executing| Param | Required | Description | |-------|----------|-------------| | orderId | Conditional | Order ID | | origClientOrderId | Conditional | Custom order ID | | type | No | Order type | | symbol | No | Trading pair | | category | No | Default 0 |
#### Batch Cancel Futures Orders
DELETE /api/v1/futures/batchOrders
WRITE: Confirm before executing| Param | Required | Description | |-------|----------|-------------| | symbol | Yes | e.g. BTCUSDT | | side | No | BUY or SELL | | category | No | Default 0 |
#### Cancel Futures Orders by IDs
DELETE /api/v1/futures/cancelOrderByIds
WRITE: Confirm before executing| Param | Required | Description | |-------|----------|-------------| | ids | Yes | Comma-separated order IDs (max 100) | | category | No | Default 0 |
#### Open Futures Orders
GET /api/v1/futures/openOrders
| Param | Required | Description |
|-------|----------|-------------|
| symbol | No | Filter by symbol |
| orderId | No | Start from order ID |
| type | No | Order type filter |
| category | No | Default 0 |
| limit | No | Default 500 |#### Current Positions
GET /api/v1/futures/positions
| Param | Required | Description |
|-------|----------|-------------|
| symbol | No | Filter by symbol |
| side | No | LONG or SHORT |
| category | No | Default 0 |#### Set TP/SL for Position
POST /api/v1/futures/position/trading-stop
WRITE: Confirm before executing| Param | Required | Description | |-------|----------|-------------| | symbol | Yes | e.g. BTCUSDT | | side | Yes | LONG or SHORT | | takeProfit | No | TP price | | stopLoss | No | SL price | | tpTriggerBy | No | market_price or index_price | | slTriggerBy | No | market_price or index_price | | tpSize | No | TP quantity | | slSize | No | SL quantity | | category | No | Default 0 |
#### Futures History Orders
GET /api/v1/futures/historyOrders
| Param | Required | Description |
|-------|----------|-------------|
| symbol | No | Filter by symbol |
| orderId | No | Start from order ID |
| type | No | Order type filter |
| startTime | No | ms timestamp |
| endTime | No | ms timestamp |
| limit | No | Default 500 |
| category | No | Default 0 |#### Futures Balance
GET /api/v1/futures/balance
| Param | Required | Description |
|-------|----------|-------------|
| category | No | Default 0 |#### Adjust Isolated Margin
POST /api/v1/futures/positionMargin
WRITE: Confirm before executing| Param | Required | Description | |-------|----------|-------------| | symbol | Yes | e.g. BTCUSDT | | side | Yes | LONG or SHORT | | amount | Yes | Margin amount (positive=add, negative=reduce) | | category | No | Default 0 |
#### Futures Trade History
GET /api/v1/futures/userTrades
| Param | Required | Description |
|-------|----------|-------------|
| symbol | No | Filter by symbol |
| startTime | No | ms timestamp |
| endTime | No | ms timestamp |
| limit | No | Default 500 |
| fromId | No | Start trade ID |
| toId | No | End trade ID |
| category | No | Default 0 |#### Futures Balance Flow
GET /api/v1/futures/balanceFlow
| Param | Required | Description |
|-------|----------|-------------|
| symbol | No | Filter by symbol |
| coin | No | Filter by coin |
| flowType | No | Transaction type |
| fromId | No | Pagination |
| endId | No | Pagination |
| startTime | No | ms timestamp |
| endTime | No | ms timestamp |
| limit | No | Default 500 |
| category | No | Default 0 |#### Commission Rate
GET /api/v1/futures/commissionRate
| Param | Required | Description |
|-------|----------|-------------|
| symbol | Yes | e.g. BTCUSDT |#### Today's PnL
GET /api/v1/futures/todayPnl
| Param | Required | Description |
|-------|----------|-------------|
| category | No | Default 0 |#### Sub-Account Info
GET /api/v1/subAccount
| Param | Required | Description |
|-------|----------|-------------|
| userId | No | Sub-account user ID |
| email | No | Sub-account email |#### Sub-Account Transfer
POST /api/v1/subAccount/transfer
WRITE: Confirm before executingSame params as spot sub-account transfer.
#### Account Balance Flow
GET /api/v1/account/balanceFlow
Same params as spot balance flow, with additional category param.Futures User Data Stream
#### Create Listen Key
POST /api/v1/listenKey
| Param | Required | Description |
|-------|----------|-------------|
| category | No | Default 0 |#### Extend Listen Key
PUT /api/v1/listenKey
| Param | Required | Description |
|-------|----------|-------------|
| listenKey | Yes | The listen key |
| category | No | Default 0 |#### Close Listen Key
DELETE /api/v1/listenKey
| Param | Required | Description |
|-------|----------|-------------|
| listenKey | Yes | The listen key |
| category | No | Default 0 |WebSocket URL: wss://stream.toobit.com/api/v1/ws/
Events: Balance updates, position changes, order updates, trade execution notifications.
Common Error Codes
| Code | Description | |------|-------------| | -1000 | Unknown error | | -1001 | Disconnected | | -1002 | Unauthorized | | -1003 | Rate limit exceeded | | -1013 | Invalid quantity | | -1014 | Invalid price | | -1015 | Too many orders | | -1016 | Service unavailable | | -1020 | Unsupported operation | | -1021 | Timestamp outside recvWindow | | -1022 | Invalid signature | | -1100 | Illegal characters | | -1101 | Too many parameters | | -1102 | Missing required parameter | | -1103 | Unknown parameter | | -1104 | Not all parameters read | | -1105 | Parameter empty | | -1106 | Parameter not needed | | -1111 | Bad precision | | -1112 | No open orders | | -1114 | Invalid timeInForce | | -1115 | Invalid orderType | | -1116 | Invalid side | | -1117 | Empty OHLCV | | -1118 | Invalid OHLCV period | | -1119 | Invalid orderType | | -1120 | Invalid startTime | | -1121 | Invalid symbol | | -1125 | Invalid listenKey | | -1127 | Interval too large | | -1128 | No data in depth/kline | | -1130 | Invalid data sent for parameter | | -2010 | Order rejected (insufficient balance) | | -2011 | Order cancel rejected | | -2013 | Order does not exist | | -2014 | Bad API key format | | -2015 | Invalid API key, IP, or permissions | | -2016 | No trading window | | -2018 | Balance not sufficient | | -2019 | Margin not sufficient |
Rate Limits
X-MBX-USED-WEIGHT response headerUsage Examples
User says: "ζ₯η BTC ε½εδ»·ζ Ό"
β Call GET /quote/v1/ticker/price?symbol=BTCUSDT
User says: "η¨ 1000 USDT εΈδ»·δΉ°ε
₯ ETH"
β Show: POST /api/v1/spot/order with symbol=ETHUSDT, side=BUY, type=MARKET, quantity=calculated
β Ask user to confirm β Execute
User says: "εΌδΈδΈͺ BTC 10x ε€ε"
β First set leverage: POST /api/v1/futures/leverage symbol=BTCUSDT, leverage=10
β Then place order: POST /api/v1/futures/order side=BUY_OPEN, type=MARKET
β Ask user to confirm each step β Execute
User says: "ζ₯ηζηεηΊ¦ζδ»"
β Call GET /api/v1/futures/positions
User says: "ζεΈ 100 USDT ε°ε°ε 0x..." β HIGH-RISK WARNING β Show all params β Require explicit confirmation β Execute
βοΈ Configuration
Before any signed request, check environment variables:
echo "API_KEY=${TOOBIT_API_KEY:+set}" && echo "API_SECRET=${TOOBIT_API_SECRET:+set}"
If not set, instruct user:
export TOOBIT_API_KEY="your_api_key"
export TOOBIT_API_SECRET="your_api_secret"