WEEX官方API開發者文檔v2版-現貨|API接口,配置指南與技術支援

API 域名

您可以自行使用 Rest API 存取方式進行操作。

域名API描述
現貨 rest 域名https://api-spot.weex.com主域名
合約 rest 域名https://api-contract.weex.com主域名

簽名

ACCESS-SIGN 的請求頭是對 timestamp + method.toUpperCase() + requestPath + “?” + queryString + body 字串 (+表示字串連接) 使用 HMAC SHA256 方法加密,透過 BASE64 編碼輸出而得到的。

簽名各欄位說明

  • timestamp:與 ACCESS-TIMESTAMP 請求頭相同。
  • method:請求方法 (POST/GET),字母全部大寫。
  • requestPath:請求接口路徑。
  • queryString:請求 URL中 (?後的請求參數) 的查詢字串。
  • body:請求主體對應的字串,如果請求沒有主體(通常為 GET 請求)則 body 可省略。

queryString 為空時,簽名格式

  • timestamp + method.toUpperCase() + requestPath + body

queryString 不為空時,簽名格式

  • timestamp + method.toUpperCase() + requestPath + “?” + queryString + body

舉例說明

取得深度訊息,以 btcusdt 為例:

  • Timestamp = 1591089508404
  • Method = “GET”
  • requestPath = “/api/v2/market/depth”
  • queryString= “?symbol=btcusdt_spbl&limit=20”

產生待簽章的字串:

  • ‘1591089508404GET/api/v2/market/depth?symbol=btcusdt_spbl&limit=20’

下單,以 btcusdt 為例:

  • Timestamp = 1561022985382
  • Method = “POST”
  • requestPath = “/api/v2/order/order”
  • body =
{"symbol":"btcusdt_spbl","quantity":"8","side":"buy","price":"1","orderType":"limit","clientOrderId":"ww#123456"}

產生待簽章的字串:

'1561022985382POST/api/spotPro/v3/order/order{"symbol":"btcusdt_spbl","size":"8","side":"buy","price":"1","orderType":"limit","clientOrderId":"ww#123456"}'

產生最終簽名的步驟**

  1. 將待簽章字串使用私鑰 secretkey 進行 hmac sha256 加密
    • Signature = hmac_sha256(secretkey, Message)
  2. 對於 Signature 進行 base64 編碼
    • Signature = base64.encode(Signature)

请求交互

package com.weex.lcp.utils;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import javax.crypto.Mac;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;
import java.util.Base64;

public class ApiClient {
// API信息
private static final String API_KEY = ""; // 替换为实际的 API Key
private static final String SECRET_KEY = ""; // 替换为实际的 Secret Key
private static final String ACCESS_PASSPHRASE = ""; // 替换为实际的 Access Passphrase
private static final String BASE_URL = ""; // 替换为实际的 API 地址
// 生成签名(POST请求)
public static String generateSignature(String secretKey, String timestamp, String method, String requestPath, String queryString, String body) throws Exception {
String message = timestamp + method.toUpperCase() + requestPath + queryString + body;
return generateHmacSha256Signature(secretKey, message);
}
// 生成签名(GET请求)
public static String generateSignatureGet(String secretKey, String timestamp, String method, String requestPath, String queryString) throws Exception {
String message = timestamp + method.toUpperCase() + requestPath + queryString;
return generateHmacSha256Signature(secretKey, message);
}
// 生成 HMAC SHA256 签名
private static String generateHmacSha256Signature(String secretKey, String message) throws Exception {
SecretKeySpec secretKeySpec = new SecretKeySpec(secretKey.getBytes(StandardCharsets.UTF_8), "HmacSHA256");
Mac mac = Mac.getInstance("HmacSHA256");
mac.init(secretKeySpec);
byte[] signatureBytes = mac.doFinal(message.getBytes(StandardCharsets.UTF_8));
return Base64.getEncoder().encodeToString(signatureBytes);
}
// 发送 POST 请求
public static String sendRequestPost(String apiKey, String secretKey, String accessPassphrase, String method, String requestPath, String queryString, String body) throws Exception {
String timestamp = String.valueOf(System.currentTimeMillis());
String signature = generateSignature(secretKey, timestamp, method, requestPath, queryString, body);
HttpPost postRequest = new HttpPost(BASE_URL + requestPath);
postRequest.setHeader("ACCESS-KEY", apiKey);
postRequest.setHeader("ACCESS-SIGN", signature);
postRequest.setHeader("ACCESS-TIMESTAMP", timestamp);
postRequest.setHeader("ACCESS-PASSPHRASE", accessPassphrase);
postRequest.setHeader("Content-Type", "application/json");
postRequest.setHeader("locale", "zh-CN");
StringEntity entity = new StringEntity(body, StandardCharsets.UTF_8);
postRequest.setEntity(entity);
try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
CloseableHttpResponse response = httpClient.execute(postRequest);
return EntityUtils.toString(response.getEntity(), StandardCharsets.UTF_8);
}
}
// 发送 GET 请求
public static String sendRequestGet(String apiKey, String secretKey, String accessPassphrase, String method, String requestPath, String queryString) throws Exception {
String timestamp = String.valueOf(System.currentTimeMillis());
String signature = generateSignatureGet(secretKey, timestamp, method, requestPath, queryString);
HttpGet getRequest = new HttpGet(BASE_URL + requestPath+queryString);
getRequest.setHeader("ACCESS-KEY", apiKey);
getRequest.setHeader("ACCESS-SIGN", signature);
getRequest.setHeader("ACCESS-TIMESTAMP", timestamp);
getRequest.setHeader("ACCESS-PASSPHRASE", accessPassphrase);
getRequest.setHeader("Content-Type", "application/json");
getRequest.setHeader("locale", "zh-CN");
try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
CloseableHttpResponse response = httpClient.execute(getRequest);
return EntityUtils.toString(response.getEntity(), StandardCharsets.UTF_8);
}
}
// 示例调用
public static void main(String[] args) {
try {
// GET 请求示例
String requestPath = "/api/uni/v3/order/currentPlan";
String queryString = "?symbol=cmt_bchusdt&delegateType=0&startTime=1742213127794&endTime=1742213506548";
String response = sendRequestGet(API_KEY, SECRET_KEY, ACCESS_PASSPHRASE, "GET", requestPath, queryString);
System.out.println("GET Response: " + response);
// POST 请求示例
String body = "{\"symbol\": \"ETHUSDT_SPBL\", \"limit\": \"2\"}";
response = sendRequestPost(API_KEY, SECRET_KEY, ACCESS_PASSPHRASE, "POST", requestPath, "", body);
System.out.println("POST Response: " + response);
} catch (Exception e) {
e.printStackTrace();
}
}
}
import time
import hmac
import hashlib
import base64
import requests
import json

api_key = ""
secret_key = ""
access_passphrase = ""

def generate_signature(secret_key, timestamp, method, request_path, query_string, body): message = timestamp + method.upper() + request_path + query_string + str(body)
signature = hmac.new(secret_key.encode(), message.encode(), hashlib.sha256).digest()
print(base64.b64encode(signature).decode())
return base64.b64encode(signature).decode()

def generate_signature_get(secret_key, timestamp, method, request_path, query_string):
message = timestamp + method.upper() + request_path + query_string
signature = hmac.new(secret_key.encode(), message.encode(), hashlib.sha256).digest()
# print(base64.b64encode(signature).decode())
return base64.b64encode(signature).decode()

def send_request_post(api_key, secret_key, access_passphrase, method, request_path, query_string, body):
timestamp = str(int(time.time() * 1000))
# print(timestamp)

body = json.dumps(body)
signature = generate_signature(secret_key, timestamp, method, request_path, query_string, body)

headers = {
    "ACCESS-KEY": api_key,
    "ACCESS-SIGN": signature,
    "ACCESS-TIMESTAMP": timestamp,
    "ACCESS-PASSPHRASE": access_passphrase,
    "Content-Type": "application/json",
    "locale": "zh-CN"
}

url = "https://contract-openapi.weex.com"  # 请替换为实际的API地址
if method == "GET":
    response = requests.get(url + request_path, headers=headers)
elif method == "POST":
    response = requests.post(url + request_path, headers=headers, data=body)
return response

def send_request_get(api_key, secret_key, access_passphrase, method, request_path, query_string):
timestamp = str(int(time.time() * 1000))
# print(timestamp)

signature = generate_signature_get(secret_key, timestamp, method, request_path, query_string)

headers = {
    "ACCESS-KEY": api_key,
    "ACCESS-SIGN": signature,
    "ACCESS-TIMESTAMP": timestamp,
    "ACCESS-PASSPHRASE": access_passphrase,
    "Content-Type": "application/json",
    "locale": "zh-CN"
}

url = "https://contract-openapi.weex.com"  # 请替换为实际的API地址
if method == "GET":
    response = requests.get(url + request_path, headers=headers)
return response

# 示例调用 GET 请求

request_path = "/api/spot/v1/account/assets"

# request_path = "/api/spot/v1/public/currencies" # 查看币对列表

query_string = ''
body = ''
response = send_request_get(api_key, secret_key, access_passphrase, "GET", request_path, query_string)

# 示例调用 POST 请求
# request_path = "/api/spot/v1/trade/fills"
# body = {"symbol": "ETHUSDT_SPBL", "limit": "2"}
# query_string = ""
# response = send_request_post(api_key, secret_key, access_passphrase, "POST", request_path, query_string, body)

print(response.status_code)
print(response.text)

所有請求基於Https協議,請求頭資訊中 Content-Type 需要統一設定為: ‘application/json’。

請求互動說明

  • 請求參數:根據接口請求參數規定進行參數封裝。
  • 提交請求參數:將封裝好的請求參數透過GET/POST方式提交至伺服器。
  • 伺服器回應:伺服器首先對使用者請求資料進行參數安全校驗,透過校驗後根據業務邏輯將回應資料以JSON格式傳回給使用者。
  • 資料處理:對伺服器回應資料進行處理。

成功

HTTP 狀態碼 200 表示成功回應,並可能包含內容。如果回應含有內容,則會顯示在對應的回傳內容裡面。

常見錯誤碼

  • 400 Bad Request – Invalid request format 請求格式無效
  • 401 Unauthorized – Invalid API Key 無效的API Key
  • 403 Forbidden – You do not have access to the requested resource 請求無權
  • 404 Not Found 沒有找到請求
  • 429 Too Many Requests 請求太頻繁被系統限流
  • 500 Internal Server Error – We had a problem with our server 伺服器內部錯誤
  • 如果失敗body帶有錯誤描述訊息

標準規範

時間戳

請求簽名中的 ACCESS-TIMESTAMP 的單位是毫秒。請求的時間戳記必須在 API 服務時間的 30 秒內,否則請求將被視為過期並被拒絕。 如果本地伺服器時間和API伺服器時間之間存在較大的偏差,那麼我們建議您使用透過查詢API伺服器時間來更新 http header。

限頻規則

如果請求過於頻繁系統將自動限制請求,並在 http header 中傳回 429 too many requests 狀態碼。

  • 公共接口:如行情接口,統一限頻為 2 秒最多 20 個請求。
  • 授權接口:透過 apikey 限制授權接口的調用,參考每個接口的限頻規則限頻。

請求格式

目前只有兩種格式的請求方法:GET 和 POST

  • GET: 參數透過 queryString 在路徑中傳輸到伺服器。
  • POST: 參數依照 json 格式傳送 body 傳送到伺服器。

WEEX唯客官網:www.weex.com

你也可以在 CMCCoingecko非小號X(Twitter)YoutubeFacebookLinkedin微博 上關注我们,第一时间获取更多投資導航和福利活動!了解平台幣 WXT 最新資訊請訪問 WXT專區

在線諮詢:

WEEX唯客中文交流群:https://t.me/weex_group

WEEX唯客英文交流群:https://t.me/Weex_Global

讚! (2)
Previous 2025年 5月 7日 下午2:37
Next 2025年 5月 13日 下午1:42

相關推薦

  • WEEX Space回顧|巨頭入場不等於多頭市場:掌握現金、理解聯準會,或是2026最大的勝率

    近期加密產業再次迎來「巨頭回歸」式的討論,包括 Meta、Amazon、富達甚至部分美資投行,都開始以更明確的動作參與數位資產與區塊鏈場景,這在社群內部重新點燃了「機構牛市即將拉開序幕」的想像。但在 WEEX唯客12月4日最新一期「聰明交易員 · 巨頭對決:誰在抄底,誰在逃頂?合約交易,如何躺賺 $WXT ?」Twitter Space 現場,來自機構側和交易側的嘉賓都表達了相當一致的觀點:巨頭入場本身並不等於牛市,真正影響市場方向的變數依舊有現金、市場與宏觀流動性的分配方式。 來賓在討論中一再回到當下宏觀背景,聯準會在過去一個季度持續傳遞降息預期但節奏並未完全明確。雖然資金面並非極度緊張,但「謹慎現金」「延後風險資產配置」成為機構普遍的決策模式,尤其是在 BTC 已從 2024 高位有明顯回調後,市場情緒仍然處在「方向未明」的灰色區間裡。換句話說,即使部分巨頭動作引發增量關注,但流動性是否真正回到 Crypto 尚未形成可以驗證的趨勢,這也是為何「有人買入,但所有人都還在猶豫」會成為 2025 年市場的底色。 值得注意的是,在這場 Space 中,多位嘉賓提到一般交易者最容易忽略的變數不是技術指標,而是「現金位置與利率週期」。如果沒有外部資金進入,即便有產業敘事、生態亮點或新平台啟動,也難以形成真正的結構性行情。因此,與其盯著巨頭動作,不如回到真實的風險承受能力,理解「手裡能否留現金」和「什麼時候能補充現金」這件事,對散戶來說甚至比預測行情方向更重要。在這一點上,聰明交易員給的經驗幾乎一致:你能活下來的那部分現金,就是你下一輪牛市的最大勝率。 另外,本期WEEX Space 中也對「機構牛」和「散戶牛」做了區分。嘉賓認為,這一輪如果出現上漲,其驅動邏輯可能不會完全來自散戶湧入,而更可能來自機構配置端緩慢回歸,這意味著市場可能是一種「慢漲慢回撤」的結構。如果散戶仍以高槓桿、短週期、追波動的方式參與,反而更容易在低波階段出現連續虧損。尤其在「黑天鵝不再兩個月一次,而是隨時隨地可能發生」的產業環境裡,理解部位風險、理解流動性變化、理解時間週期,都比追熱點更重要。 值得補充的是,在安全與資產週期的討論裡,WEEX唯客聯合創始人兼首席安全官 Ethan 曾多次提到一個長期觀點:加密交易者真正需要警惕的,並不是單次市場下跌,而是「在波動中失去參與資格」。換句話說,真正重要的不是漲跌判斷,而是讓資產在任何階段都維持安全與流動性,以便擁有繼續決策的能力。這一觀點與本次 Space 反覆出現的「現金能力」「風險承受度」高度契合,也為當下震盪行情提供了另一個更長期的解釋框架。 從應用和產品角度,本次 Space 也有討論新的交易型產品是否能在「高不確定性」環境中給投資者多一種勝率。在這部分,我們也介紹了 WEEX唯客 的部分交易產品策略,包括圍繞資金效率、風控邊界與更透明的價格執行方式等方向進行升級,希望讓交易者更容易理解風險、管理倉位,並在波動環境中獲得相對穩定的體驗。目前平台在全球營運佈局持續推進,也在不同市場持續加強合規建設與技術風控,這部分內容也會在接下來的社群交流中持續展開。 最終,無論機構或散戶,都無法簡單透過「巨頭入場」判斷趨勢,也無法直接把「歷史牛市模板」複製到 2025–2026。真正值得關注的是現金是否回到 Crypto,利率曲線是否接近拐點,聯準會的貨幣政策是否開始真正釋放流動性,而不是僅僅傳遞預期。在宏觀仍偏謹慎的周期裡,理解現金、理解週期、理解聯準會,可能比預測價格本身更有意義。 在互動中,也有用戶提到近期「WEEX維客合約交易賺 WXT」活動,我們也藉此做了一次現場說明:時間為11月26日至12月15日,交易量越高返還比例越高,同時更適合震盪策略搭配倉位管理使用。本次 Space 的抽獎、互動入口也同步開啟。 同時,本期 Space 也做了提醒:合約交易有極端風險,槓桿擴大可能出現非線性損失,特別是在假日波動加劇階段,容易出現「假消息砸盤」等異常情況。投資仍需基於個人風險承受能力,建議避開盲目追漲與高頻換倉最終,我們更希望藉由這場 Space 給大家提供「怎麼活下來」的底層思考,無論巨頭入場還是行情反彈,真正的確定性依然來自理解現金、理解美聯儲與理解時間週期,對於普通交易者而言,學會等待、保有現金能力,可能就是2026年最大的勝率

    3天前
    47
  • WEEX Labs:預測市場的超級牛市週期來了嗎?

    在目前悲觀偏熊的行情下,預測市場(Prediction Markets)成了「資訊避風港」──交易者厭倦拋售帶來的波動,更渴求押注事件驅動的確定性。預測市場正在接棒 Meme 成為注意力經濟變現的熱門領域。 預測市場:低迷行情下的注意力風暴 加密行情正處低迷,預測市場與 ZK、Perp DEX 構成了僅有的亮點,而它們的共同特徵則是押注加密敘事的未來。 尤其是預測市場正在點燃萬億級敘事:過去一周全市場名目交易量飆升至 $3.5B,週活躍用戶數破 29 萬,持倉量更是逼近去年押注美國大選時的 $900M 峰值。 圖 1 來源:https://dune.com/datadashboards/prediction-markets 這並非巧合。 2024 美國大選時,Polymarket 預測準確率碾壓民調,交易金額從當年 5 月的 $62M 暴增至 10 月的 $2.1B——增長超 32 倍。選舉後,熱度不減:諾貝爾和平獎公佈日,單市場交易超 $21.40M。 合規+資本,催動敘事升級 預測市場再度爆火,是監管鬆動之下,資本湧入帶動的敘事升級。 圖 2 來源:https://news.kalshi.com/p/nationwide-poll-shows-broad-support-for-prediction-markets 值得關注的頭部玩家 版圖已經開始劃分,限於篇幅,WEEX Labs 在這裡討論幾個頭部平台。 圖 3 資料來源:https://x.com/dylangbane/status/1969129269940142528 小結 預測市場,不是賭運氣或炒 Meme,而是集體大腦對事件定價的預判與博弈。隨著 Polymarket 暗示將於明年推出代幣,預測市場或將迎來一波資訊不佳和洞察力變現的造富效應,我們拭目以待。

    2025年 12月 4日
    77
  • SUNDOG、GLMR、SWELL、RAD、RSS3 U本位永續合約下架通知

    WEEX將於2025年11月27日15:00(UTC 8)正式下架 SUNDOG、GLMR、SWELL、RAD、RSS3 U本位永續合約。 2025年11月27日13:00(UTC 8)起,SUNDOG、GLMR、SWELL、RAD、RSS3 U本位永續合約將暫停開倉功能,平倉功能不受影響; 幣對下架後,所有未成交委託單將自動撤銷,未平倉倉位將自動平倉,您的賬戶資產不會受到任何影響; 為避免潛在波動風險,建議您提前手動平倉,避免不必要虧損。 WEEX將持續評估並優化合約產品,為您提供更優質的交易服務。如有任何疑問,請聯繫官方客服。 – 感謝您對WEEX 的支持! – 聯絡我們: X | YouTube | Telegram | Medium | Facebook | LinkedIn | Blog 立即註冊WEEX賬戶: https://www.weex.com/register CoinMarketCap | Cryptowisser.com | Coingecko | Coincarp

    2025年 11月 27日
    106
  • WEEX合約將上線JU U本位合約- 11/27 13:00(UTC 8)

    我們很高興的宣布,WEEX合約將於2025年11月27日13:00(UTC 8)上線JU U本位合約。 合約以美元穩定幣為計價單位,支持多種槓桿,以滿足不同投資者的需求。您可以通過網頁、APP進行交易,歡迎您體驗! 新增加的幣對包括: JU/USDT 其他信息: WEEX 手續費 風險提示: 數字資產合約交易是高風險的創新產品,需要專業知識。請您理性判斷,審慎做出交易決策。 WEEX唯客團隊 註冊WEEX唯客 >>> 在Twitter上關注WEEX >>> 加入WEEX唯客社群 >>> 更多交易機會 >>> 【收錄平台】: CoinMarketCap | CryptoWisser.com | Coingecko | Coincarp – 感謝您對WEEX 的支持! – 聯絡我們: X | YouTube | Telegram | Medium | Facebook | LinkedIn | Blog 立即註冊WEEX賬戶: https://www.weex.com/register CoinMarketCap | Cryptowisser.com | Coingecko | Coincarp

    2025年 11月 27日
    86
  • WEEX合約將上線IRYS U本位合約- 11/27 14:40(UTC 8)

    我們很高興的宣布,WEEX合約將於2025年11月27日14:40(UTC 8)上線IRYS U本位合約。 合約以美元穩定幣為計價單位,支持多種槓桿,以滿足不同投資者的需求。您可以通過網頁、APP進行交易,歡迎您體驗! 新增加的幣對包括: IRYS/USDT 其他信息: WEEX 手續費 風險提示: 數字資產合約交易是高風險的創新產品,需要專業知識。請您理性判斷,審慎做出交易決策。 WEEX唯客團隊 註冊WEEX唯客 >>> 在Twitter上關注WEEX >>> 加入WEEX唯客社群 >>> 更多交易機會 >>> 【收錄平台】: CoinMarketCap | CryptoWisser.com | Coingecko | Coincarp – 感謝您對WEEX 的支持! – 聯絡我們: X | YouTube | Telegram | Medium | Facebook | LinkedIn | Blog 立即註冊WEEX賬戶: https://www.weex.com/register CoinMarketCap | Cryptowisser.com | Coingecko | Coincarp

    2025年 11月 27日
    74
  • CHOG (CHOG) 現已上線WEEX!

    尊敬的WEEX用戶: 充值:即將開放 交易:2025年11月27日12:00(UTC 8)正式開放 提現:即將開放 立即交易:CHOG/USDT CHOG (CHOG) 更多信息: Monad 的吉祥物| 由社區提供支持。 官網 X賬號 交易手續費

    2025年 11月 27日
    81
內容目錄