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
- Base URL:
https://api.toobit.com
- Signature: HMAC SHA256
- Header:
X-BB-APIKEY
- Timestamps: milliseconds
Signing Template
For all SIGNED endpoints, use this pattern:
TIMESTAMP=$(($(date +%s) * 1000))
PARAMS="<query_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<path>?${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/<listenKey> (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 executing
Same 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/<listenKey>
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
- Request weight: 3000 per minute
- Orders: 60 per 60 seconds
- Respect
X-MBX-USED-WEIGHT response header
Usage 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
Comments (0)
No comments yet. Be the first to share your thoughts!