網域名稱: https://max-api.maicoin.com/api/v2


為豐富使用者的交易體驗,MAX 交易所發佈了與平台相關的 RESTful API 接口,提供開發者去程式化及自動化操作交易的途徑。發佈的 API 包含了公開及私人兩種類型,下表列出中兩者的主要區別:


類別身份驗證流量限制使用須知
公開 API不需驗證每個 IP 地址 1 分鐘內最多 1200 個請求立即可用
私人 API需要驗證每人 1 分鐘內最多 1200 個請求需要申請 API 密鑰

所有透過 API 的請求及回覆,需透過 JSON 格式表示。關於不同 API 間可以發送的請求內容,請參考 API 列表;而關於回覆的內容,請參考 回覆內容

在使用私人 API 前,需要先準備好您的 API 密鑰,請在註冊並通過認證後,訪問 API 密鑰 頁面申請您的密鑰並妥善保管,當完成申請後,您將會得到對應的 Access Key 及 Secret Key。

當您的 API 密鑰準備好後,在取用私人 API 時,將所需資訊依循下述指示填入封包的標頭檔,便可通過驗證:


標頭名稱內容
X-MAX-ACCESSKEY您的 Access Key
X-MAX-PAYLOAD根據您的請求內容生成的負載 (payload)
X-MAX-SIGNATURE依據您的 Secret Key 跟負載內容生成的簽名 (signature)

負載是根據請求內容產生的字串,簽名則是根據負載所產生的雜湊值,以 JavaScript 為例

const request = require('request')const crypto = require('crypto')let access_key = <Your Access Key>
let secret_key = <Your Secret Key>
// path 是請求路徑,例如/api/v2/members/me.json
// nonce 是以正整數表示的時間戳記,代表了從 Unix epoch 到當前時間所經過的毫秒數(ms)。
// nonce 與伺服器的時間差不得超過正負30秒,每個 nonce 只能使用一次。
// body 中其餘的參數請依據您的請求內容自行調整
let body = {
  path: '/api/v2/members/me.json',
  nonce: Date.now(),
  <Other parameters if needed...>
};
let payload = new Buffer(JSON.stringify(body)).toString('base64');
let signature = crypto.createHmac('sha256', secret_key).update(payload).digest('hex');
let options = {
  method: 'GET',
  headers: {
    'X-MAX-ACCESSKEY': access_key,
    'X-MAX-PAYLOAD': payload,
    'X-MAX-SIGNATURE': signature
  },
  uri: 'https://max-api.maicoin.com/api/v2/members/me.json',
  json: true,
  body: body
};
request(options, function(error, response, body) { ... });

當 API 調用失敗,會回覆對應的 HTTP 狀態碼,同時回傳包含詳細錯誤訊息的 JSON 數據,例如:

{"error":{"code":1001,"message":"market does not have a valid value"}}

所有錯誤都遵循上例的格式,只是引用的錯誤碼和錯誤訊息有所不同。錯誤是由 MAX 交易所自行定義,錯誤訊息則是具體的出錯內容。


對於成功的 API 請求,MAX 交易所會回傳 200 做為 HTTP 狀態碼,同時回傳請求的 JSON 數據,詳細的回傳內容可參考 API 列表

由於 RESTful API 是一個非同步的操作,因此在接收到回傳訊息時,只保證請求已被成功接收及創建,並不保證特定操作已全數完成。特別是在進行"取消掛單"的操作時,待取消的掛單可能有尚未處理完成的成交,或取消掛單的隊列有較多等待中的請求,此時,回傳結果中的訂單並不一定處於"取消"狀態,必須通過"/api/v2/order"或是 WebSocket 來得到最新的資訊。