Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
WEEX Futures exchange integration. Trade USDT-M perpetual futures with up to 125x leverage on WEEX.
WEEX Futures exchange integration. Trade USDT-M perpetual futures with up to 125x leverage on WEEX.
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Then review README.md for any prerequisites, environment setup, or post-install checks. Tell me what you changed and call out any manual steps you could not complete.
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run.
Open AI Agent Skill for USDT-margined perpetual futures trading on WEEX exchange. Up to 125x leverage. Open Agent Skill: This skill is designed to work with any AI agent that supports bash/curl commands, including Claude, GPT, Gemini, LLaMA, Mistral, and other LLM-based agents.
๐ Futures Trading - USDT-M perpetual contracts up to 125x leverage ๐ฐ Account Management - Balance, positions, margin settings ๐ Market Data - Tickers, order book, candlesticks, funding rates ๐ฏ Advanced Orders - Trigger orders, TP/SL, conditional orders ๐ค AI Integration - Log AI trading decisions ๐ Universal Compatibility - Works with any AI agent supporting shell commands
VariableDescriptionRequiredWEEX_API_KEYAPI Key from WEEXYesWEEX_API_SECRETAPI SecretYesWEEX_PASSPHRASEAPI PassphraseYesWEEX_BASE_URLAPI base URLNo (default: https://api-contract.weex.com)
API_KEY="${WEEX_API_KEY}" SECRET="${WEEX_API_SECRET}" PASSPHRASE="${WEEX_PASSPHRASE}" BASE_URL="${WEEX_BASE_URL:-https://api-contract.weex.com}" TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))") # Generate signature generate_signature() { local method="$1" local path="$2" local body="$3" local message="${TIMESTAMP}${method}${path}${body}" echo -n "$message" | openssl dgst -sha256 -hmac "$SECRET" -binary | base64 }
curl -s "${BASE_URL}/capi/v2/market/time" | jq '.'
curl -s "${BASE_URL}/capi/v2/market/contracts" | jq '.data[] | {symbol: .symbol, baseCoin: .underlying_index, quoteCoin: .quote_currency, contractVal: .contract_val, minLeverage: .minLeverage, maxLeverage: .maxLeverage, tickSize: .tick_size, sizeIncrement: .size_increment}'
SYMBOL="cmt_btcusdt" curl -s "${BASE_URL}/capi/v2/market/contracts?symbol=${SYMBOL}" | jq '.data'
SYMBOL="cmt_btcusdt" curl -s "${BASE_URL}/capi/v2/market/ticker?symbol=${SYMBOL}" | jq '.data | {symbol: .symbol, last: .last, high: .high_24h, low: .low_24h, volume: .volume_24h, markPrice: .markPrice}'
curl -s "${BASE_URL}/capi/v2/market/tickers" | jq '.data[] | {symbol: .symbol, last: .last, change: .priceChangePercent, volume: .volume_24h}'
SYMBOL="cmt_btcusdt" curl -s "${BASE_URL}/capi/v2/market/depth?symbol=${SYMBOL}&limit=15" | jq '.data | {asks: .asks[:5], bids: .bids[:5]}'
SYMBOL="cmt_btcusdt" LIMIT="50" curl -s "${BASE_URL}/capi/v2/market/trades?symbol=${SYMBOL}&limit=${LIMIT}" | jq '.data[] | {time: .time, price: .price, size: .size, side: (if .isBuyerMaker then "sell" else "buy" end)}'
SYMBOL="cmt_btcusdt" GRANULARITY="1h" # 1m, 5m, 15m, 30m, 1h, 4h, 12h, 1d, 1w LIMIT="100" curl -s "${BASE_URL}/capi/v2/market/candles?symbol=${SYMBOL}&granularity=${GRANULARITY}&limit=${LIMIT}" | jq '.data[] | {timestamp: .[0], open: .[1], high: .[2], low: .[3], close: .[4], volume: .[5]}'
SYMBOL="cmt_btcusdt" curl -s "${BASE_URL}/capi/v2/market/index?symbol=${SYMBOL}" | jq '.data | {symbol: .symbol, index: .index, timestamp: .timestamp}'
SYMBOL="cmt_btcusdt" curl -s "${BASE_URL}/capi/v2/market/open_interest?symbol=${SYMBOL}" | jq '.data[] | {symbol: .symbol, openInterest: .base_volume, value: .target_volume}'
SYMBOL="cmt_btcusdt" curl -s "${BASE_URL}/capi/v2/market/currentFundRate?symbol=${SYMBOL}" | jq '.data[] | {symbol: .symbol, rate: .fundingRate, nextSettlement: .timestamp}'
SYMBOL="cmt_btcusdt" LIMIT="20" curl -s "${BASE_URL}/capi/v2/market/getHistoryFundRate?symbol=${SYMBOL}&limit=${LIMIT}" | jq '.data[] | {symbol: .symbol, rate: .fundingRate, settleTime: .fundingTime}'
SYMBOL="cmt_btcusdt" curl -s "${BASE_URL}/capi/v2/market/funding_time?symbol=${SYMBOL}" | jq '.data | {symbol: .symbol, nextFundingTime: .fundingTime}'
PATH_URL="/capi/v2/account/assets" TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))") SIGNATURE=$(generate_signature "GET" "$PATH_URL" "") curl -s "${BASE_URL}${PATH_URL}" \ -H "ACCESS-KEY: ${API_KEY}" \ -H "ACCESS-SIGN: ${SIGNATURE}" \ -H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \ -H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \ -H "Content-Type: application/json" | jq '.data[] | {coin: .coinName, available: .available, frozen: .frozen, equity: .equity, unrealizedPnl: .unrealizePnl}'
PATH_URL="/capi/v2/account/getAccounts" TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))") SIGNATURE=$(generate_signature "GET" "$PATH_URL" "") curl -s "${BASE_URL}${PATH_URL}" \ -H "ACCESS-KEY: ${API_KEY}" \ -H "ACCESS-SIGN: ${SIGNATURE}" \ -H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \ -H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \ -H "Content-Type: application/json" | jq '.data'
COIN="USDT" PATH_URL="/capi/v2/account/getAccount?coin=${COIN}" TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))") SIGNATURE=$(generate_signature "GET" "$PATH_URL" "") curl -s "${BASE_URL}${PATH_URL}" \ -H "ACCESS-KEY: ${API_KEY}" \ -H "ACCESS-SIGN: ${SIGNATURE}" \ -H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \ -H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \ -H "Content-Type: application/json" | jq '.data'
SYMBOL="cmt_btcusdt" PATH_URL="/capi/v2/account/settings?symbol=${SYMBOL}" TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))") SIGNATURE=$(generate_signature "GET" "$PATH_URL" "") curl -s "${BASE_URL}${PATH_URL}" \ -H "ACCESS-KEY: ${API_KEY}" \ -H "ACCESS-SIGN: ${SIGNATURE}" \ -H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \ -H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \ -H "Content-Type: application/json" | jq '.data'
SYMBOL="cmt_btcusdt" LEVERAGE="20" MARGIN_MODE="1" # 1=Cross, 3=Isolated PATH_URL="/capi/v2/account/leverage" BODY="{\"symbol\":\"${SYMBOL}\",\"marginMode\":${MARGIN_MODE},\"longLeverage\":\"${LEVERAGE}\",\"shortLeverage\":\"${LEVERAGE}\"}" TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))") SIGNATURE=$(generate_signature "POST" "$PATH_URL" "$BODY") curl -s -X POST "${BASE_URL}${PATH_URL}" \ -H "ACCESS-KEY: ${API_KEY}" \ -H "ACCESS-SIGN: ${SIGNATURE}" \ -H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \ -H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \ -H "Content-Type: application/json" \ -d "$BODY" | jq '.'
POSITION_ID="123456789" # Isolated position ID AMOUNT="100" # Positive to add, negative to reduce PATH_URL="/capi/v2/account/adjustMargin" BODY="{\"coinId\":2,\"isolatedPositionId\":${POSITION_ID},\"collateralAmount\":\"${AMOUNT}\"}" TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))") SIGNATURE=$(generate_signature "POST" "$PATH_URL" "$BODY") curl -s -X POST "${BASE_URL}${PATH_URL}" \ -H "ACCESS-KEY: ${API_KEY}" \ -H "ACCESS-SIGN: ${SIGNATURE}" \ -H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \ -H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \ -H "Content-Type: application/json" \ -d "$BODY" | jq '.'
POSITION_ID="123456789" # Isolated position ID AUTO_APPEND="true" # true to enable, false to disable PATH_URL="/capi/v2/account/modifyAutoAppendMargin" BODY="{\"positionId\":${POSITION_ID},\"autoAppendMargin\":${AUTO_APPEND}}" TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))") SIGNATURE=$(generate_signature "POST" "$PATH_URL" "$BODY") curl -s -X POST "${BASE_URL}${PATH_URL}" \ -H "ACCESS-KEY: ${API_KEY}" \ -H "ACCESS-SIGN: ${SIGNATURE}" \ -H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \ -H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \ -H "Content-Type: application/json" \ -d "$BODY" | jq '.'
COIN="USDT" LIMIT="20" PATH_URL="/capi/v2/account/bills" BODY="{\"coin\":\"${COIN}\",\"limit\":${LIMIT}}" TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))") SIGNATURE=$(generate_signature "POST" "$PATH_URL" "$BODY") curl -s -X POST "${BASE_URL}${PATH_URL}" \ -H "ACCESS-KEY: ${API_KEY}" \ -H "ACCESS-SIGN: ${SIGNATURE}" \ -H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \ -H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \ -H "Content-Type: application/json" \ -d "$BODY" | jq '.data'
PATH_URL="/capi/v2/account/position/allPosition" TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))") SIGNATURE=$(generate_signature "GET" "$PATH_URL" "") curl -s "${BASE_URL}${PATH_URL}" \ -H "ACCESS-KEY: ${API_KEY}" \ -H "ACCESS-SIGN: ${SIGNATURE}" \ -H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \ -H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \ -H "Content-Type: application/json" | jq '.data[] | select(.size != "0") | {symbol: .symbol, side: .side, size: .size, leverage: .leverage, unrealizedPnl: .unrealizePnl, entryPrice: .avg_cost}'
SYMBOL="cmt_btcusdt" PATH_URL="/capi/v2/account/position/singlePosition?symbol=${SYMBOL}" TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))") SIGNATURE=$(generate_signature "GET" "$PATH_URL" "") curl -s "${BASE_URL}${PATH_URL}" \ -H "ACCESS-KEY: ${API_KEY}" \ -H "ACCESS-SIGN: ${SIGNATURE}" \ -H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \ -H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \ -H "Content-Type: application/json" | jq '.data[] | {symbol: .symbol, side: .side, size: .size, leverage: .leverage, unrealizedPnl: .unrealizePnl, entryPrice: .avg_cost, liquidationPrice: .liq_price}'
SYMBOL="cmt_btcusdt" MARGIN_MODE="1" # 1=Cross, 3=Isolated PATH_URL="/capi/v2/account/position/changeHoldModel" BODY="{\"symbol\":\"${SYMBOL}\",\"marginMode\":${MARGIN_MODE},\"separatedMode\":1}" TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))") SIGNATURE=$(generate_signature "POST" "$PATH_URL" "$BODY") curl -s -X POST "${BASE_URL}${PATH_URL}" \ -H "ACCESS-KEY: ${API_KEY}" \ -H "ACCESS-SIGN: ${SIGNATURE}" \ -H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \ -H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \ -H "Content-Type: application/json" \ -d "$BODY" | jq '.'
SYMBOL="cmt_btcusdt" SIZE="10" # Quantity in contracts TYPE="1" # 1=Open Long, 2=Open Short, 3=Close Long, 4=Close Short CLIENT_OID="order_$(date +%s)" PATH_URL="/capi/v2/order/placeOrder" BODY="{\"symbol\":\"${SYMBOL}\",\"client_oid\":\"${CLIENT_OID}\",\"size\":\"${SIZE}\",\"type\":\"${TYPE}\",\"order_type\":\"0\",\"match_price\":\"1\",\"price\":\"0\"}" TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))") SIGNATURE=$(generate_signature "POST" "$PATH_URL" "$BODY") curl -s -X POST "${BASE_URL}${PATH_URL}" \ -H "ACCESS-KEY: ${API_KEY}" \ -H "ACCESS-SIGN: ${SIGNATURE}" \ -H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \ -H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \ -H "Content-Type: application/json" \ -d "$BODY" | jq '.'
SYMBOL="cmt_btcusdt" SIZE="10" TYPE="1" # 1=Open Long PRICE="90000" # Limit price ORDER_TYPE="0" # 0=Normal, 1=Post-only, 2=FOK, 3=IOC CLIENT_OID="limit_$(date +%s)" PATH_URL="/capi/v2/order/placeOrder" BODY="{\"symbol\":\"${SYMBOL}\",\"client_oid\":\"${CLIENT_OID}\",\"size\":\"${SIZE}\",\"type\":\"${TYPE}\",\"order_type\":\"${ORDER_TYPE}\",\"match_price\":\"0\",\"price\":\"${PRICE}\"}" TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))") SIGNATURE=$(generate_signature "POST" "$PATH_URL" "$BODY") curl -s -X POST "${BASE_URL}${PATH_URL}" \ -H "ACCESS-KEY: ${API_KEY}" \ -H "ACCESS-SIGN: ${SIGNATURE}" \ -H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \ -H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \ -H "Content-Type: application/json" \ -d "$BODY" | jq '.'
PATH_URL="/capi/v2/order/current" TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))") SIGNATURE=$(generate_signature "GET" "$PATH_URL" "") curl -s "${BASE_URL}${PATH_URL}" \ -H "ACCESS-KEY: ${API_KEY}" \ -H "ACCESS-SIGN: ${SIGNATURE}" \ -H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \ -H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \ -H "Content-Type: application/json" | jq '.data[] | {orderId: .order_id, symbol: .symbol, side: .type, price: .price, size: .size, status: .status}'
ORDER_ID="1234567890" PATH_URL="/capi/v2/order/detail?orderId=${ORDER_ID}" TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))") SIGNATURE=$(generate_signature "GET" "$PATH_URL" "") curl -s "${BASE_URL}${PATH_URL}" \ -H "ACCESS-KEY: ${API_KEY}" \ -H "ACCESS-SIGN: ${SIGNATURE}" \ -H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \ -H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \ -H "Content-Type: application/json" | jq '.data'
SYMBOL="cmt_btcusdt" LIMIT="50" PATH_URL="/capi/v2/order/history?symbol=${SYMBOL}&limit=${LIMIT}" TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))") SIGNATURE=$(generate_signature "GET" "$PATH_URL" "") curl -s "${BASE_URL}${PATH_URL}" \ -H "ACCESS-KEY: ${API_KEY}" \ -H "ACCESS-SIGN: ${SIGNATURE}" \ -H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \ -H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \ -H "Content-Type: application/json" | jq '.data[] | {orderId: .order_id, symbol: .symbol, side: .type, price: .price, size: .size, filledSize: .filled_qty, status: .status}'
SYMBOL="cmt_btcusdt" LIMIT="50" PATH_URL="/capi/v2/order/fills?symbol=${SYMBOL}&limit=${LIMIT}" TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))") SIGNATURE=$(generate_signature "GET" "$PATH_URL" "") curl -s "${BASE_URL}${PATH_URL}" \ -H "ACCESS-KEY: ${API_KEY}" \ -H "ACCESS-SIGN: ${SIGNATURE}" \ -H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \ -H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \ -H "Content-Type: application/json" | jq '.data[] | {tradeId: .trade_id, orderId: .order_id, symbol: .symbol, price: .price, size: .size, fee: .fee, time: .created_at}'
ORDER_ID="1234567890" PATH_URL="/capi/v2/order/cancel_order" BODY="{\"orderId\":\"${ORDER_ID}\"}" TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))") SIGNATURE=$(generate_signature "POST" "$PATH_URL" "$BODY") curl -s -X POST "${BASE_URL}${PATH_URL}" \ -H "ACCESS-KEY: ${API_KEY}" \ -H "ACCESS-SIGN: ${SIGNATURE}" \ -H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \ -H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \ -H "Content-Type: application/json" \ -d "$BODY" | jq '.'
SYMBOL="cmt_btcusdt" # Optional: omit to cancel all PATH_URL="/capi/v2/order/cancelAllOrders" BODY="{\"symbol\":\"${SYMBOL}\"}" TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))") SIGNATURE=$(generate_signature "POST" "$PATH_URL" "$BODY") curl -s -X POST "${BASE_URL}${PATH_URL}" \ -H "ACCESS-KEY: ${API_KEY}" \ -H "ACCESS-SIGN: ${SIGNATURE}" \ -H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \ -H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \ -H "Content-Type: application/json" \ -d "$BODY" | jq '.'
PATH_URL="/capi/v2/order/closePositions" BODY="{}" TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))") SIGNATURE=$(generate_signature "POST" "$PATH_URL" "$BODY") curl -s -X POST "${BASE_URL}${PATH_URL}" \ -H "ACCESS-KEY: ${API_KEY}" \ -H "ACCESS-SIGN: ${SIGNATURE}" \ -H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \ -H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \ -H "Content-Type: application/json" \ -d "$BODY" | jq '.'
SYMBOL="cmt_btcusdt" SIZE="10" TYPE="1" # 1=Open Long, 2=Open Short, 3=Close Long, 4=Close Short TRIGGER_PRICE="95000" # Price that triggers the order EXECUTE_PRICE="0" # 0 for market, or limit price TRIGGER_TYPE="1" # 1=Fill price, 2=Mark price, 3=Index price CLIENT_OID="trigger_$(date +%s)" PATH_URL="/capi/v2/order/plan_order" BODY="{\"symbol\":\"${SYMBOL}\",\"client_oid\":\"${CLIENT_OID}\",\"size\":\"${SIZE}\",\"type\":\"${TYPE}\",\"trigger_price\":\"${TRIGGER_PRICE}\",\"execute_price\":\"${EXECUTE_PRICE}\",\"trend_side\":\"1\",\"trigger_type\":\"${TRIGGER_TYPE}\"}" TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))") SIGNATURE=$(generate_signature "POST" "$PATH_URL" "$BODY") curl -s -X POST "${BASE_URL}${PATH_URL}" \ -H "ACCESS-KEY: ${API_KEY}" \ -H "ACCESS-SIGN: ${SIGNATURE}" \ -H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \ -H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \ -H "Content-Type: application/json" \ -d "$BODY" | jq '.'
SYMBOL="cmt_btcusdt" PATH_URL="/capi/v2/order/currentPlan?symbol=${SYMBOL}" TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))") SIGNATURE=$(generate_signature "GET" "$PATH_URL" "") curl -s "${BASE_URL}${PATH_URL}" \ -H "ACCESS-KEY: ${API_KEY}" \ -H "ACCESS-SIGN: ${SIGNATURE}" \ -H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \ -H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \ -H "Content-Type: application/json" | jq '.data[] | {orderId: .order_id, symbol: .symbol, triggerPrice: .trigger_price, size: .size, type: .type}'
SYMBOL="cmt_btcusdt" LIMIT="50" PATH_URL="/capi/v2/order/historyPlan?symbol=${SYMBOL}&limit=${LIMIT}" TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))") SIGNATURE=$(generate_signature "GET" "$PATH_URL" "") curl -s "${BASE_URL}${PATH_URL}" \ -H "ACCESS-KEY: ${API_KEY}" \ -H "ACCESS-SIGN: ${SIGNATURE}" \ -H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \ -H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \ -H "Content-Type: application/json" | jq '.data[] | {orderId: .order_id, symbol: .symbol, triggerPrice: .trigger_price, status: .status}'
ORDER_ID="1234567890" PATH_URL="/capi/v2/order/cancel_plan" BODY="{\"orderId\":\"${ORDER_ID}\"}" TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))") SIGNATURE=$(generate_signature "POST" "$PATH_URL" "$BODY") curl -s -X POST "${BASE_URL}${PATH_URL}" \ -H "ACCESS-KEY: ${API_KEY}" \ -H "ACCESS-SIGN: ${SIGNATURE}" \ -H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \ -H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \ -H "Content-Type: application/json" \ -d "$BODY" | jq '.'
SYMBOL="cmt_btcusdt" SIDE="1" # 1=Long position, 2=Short position TP_PRICE="100000" # Take profit trigger price SL_PRICE="85000" # Stop loss trigger price TP_SIZE="10" # Take profit size (0 for entire position) SL_SIZE="10" # Stop loss size (0 for entire position) PATH_URL="/capi/v2/order/placeTpSlOrder" BODY="{\"symbol\":\"${SYMBOL}\",\"side\":\"${SIDE}\",\"tp_trigger_price\":\"${TP_PRICE}\",\"sl_trigger_price\":\"${SL_PRICE}\",\"tp_size\":\"${TP_SIZE}\",\"sl_size\":\"${SL_SIZE}\"}" TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))") SIGNATURE=$(generate_signature "POST" "$PATH_URL" "$BODY") curl -s -X POST "${BASE_URL}${PATH_URL}" \ -H "ACCESS-KEY: ${API_KEY}" \ -H "ACCESS-SIGN: ${SIGNATURE}" \ -H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \ -H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \ -H "Content-Type: application/json" \ -d "$BODY" | jq '.'
SYMBOL="cmt_btcusdt" SIDE="1" # 1=Long position, 2=Short position TP_PRICE="105000" # New take profit price SL_PRICE="82000" # New stop loss price PATH_URL="/capi/v2/order/modifyTpSlOrder" BODY="{\"symbol\":\"${SYMBOL}\",\"side\":\"${SIDE}\",\"tp_trigger_price\":\"${TP_PRICE}\",\"sl_trigger_price\":\"${SL_PRICE}\"}" TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))") SIGNATURE=$(generate_signature "POST" "$PATH_URL" "$BODY") curl -s -X POST "${BASE_URL}${PATH_URL}" \ -H "ACCESS-KEY: ${API_KEY}" \ -H "ACCESS-SIGN: ${SIGNATURE}" \ -H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \ -H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \ -H "Content-Type: application/json" \ -d "$BODY" | jq '.'
AI_LOG="Trading decision: Buy BTC based on momentum indicators" ORDER_ID="1234567890" PATH_URL="/capi/v2/order/uploadAiLog" BODY="{\"orderId\":\"${ORDER_ID}\",\"aiLog\":\"${AI_LOG}\"}" TIMESTAMP=$(python3 -c "import time; print(int(time.time() * 1000))") SIGNATURE=$(generate_signature "POST" "$PATH_URL" "$BODY") curl -s -X POST "${BASE_URL}${PATH_URL}" \ -H "ACCESS-KEY: ${API_KEY}" \ -H "ACCESS-SIGN: ${SIGNATURE}" \ -H "ACCESS-PASSPHRASE: ${PASSPHRASE}" \ -H "ACCESS-TIMESTAMP: ${TIMESTAMP}" \ -H "Content-Type: application/json" \ -d "$BODY" | jq '.'
typeDescription1Open Long (buy to open)2Open Short (sell to open)3Close Long (sell to close)4Close Short (buy to close)
order_typeDescription0Normal order1Post-only (maker only)2FOK (fill or kill)3IOC (immediate or cancel)
match_priceDescription0Limit order1Market order
marginModeDescription1Cross margin3Isolated margin
trigger_typeDescription1Fill price (last trade price)2Mark price3Index price
PairDescriptioncmt_btcusdtBitcoin / USDTcmt_ethusdtEthereum / USDTcmt_solusdtSolana / USDTcmt_xrpusdtXRP / USDTcmt_dogeusdtDogecoin / USDTcmt_bnbusdtBNB / USDT
ALWAYS display order details before execution VERIFY trading pair and quantity CHECK account balance before trading WARN about leverage risks (up to 125x) NEVER execute without user confirmation CONFIRM position closure before executing
CodeDescriptionSolution00000Success-40001Invalid parameterCheck parameter format40101Invalid API key/signatureVerify credentials and timestamp40301IP not whitelistedAdd IP to whitelist42901Rate limit exceededReduce request frequency50001Internal errorRetry after delay
CategoryIP LimitUID LimitMarket Data20 req/secN/AAccount Info10 req/sec10 req/secOrder Placement10 req/sec10 req/sec
WEEX Base URL: https://api-contract.weex.com API Reference
Code helpers, APIs, CLIs, browser automation, testing, and developer operations.
Largest current source with strong distribution and engagement signals.