跳轉至

API 概覽

Sera API 是一個 RESTful API,用於程式化存取 Sera 的交易和帳戶管理功能。

基礎 URL

https://api.sera.cx/api/v1

內容類型

所有請求和回應使用 JSON:

Content-Type: application/json

身份驗證

API 支援兩種身份驗證方法:

方法 使用場景 Header
API Key 帳戶讀取端點與交易建構輔助端點 Authorization: Bearer {key}:{secret}
EIP-712 簽名 交易寫入、取消、提取與 API Key 管理 包含在請求主體或查詢參數中

詳情請參閱身份驗證

速率限制

匿名流量限速由邊緣代理/CDN 處理。攜帶 API Key 的請求會在應用內按錢包地址再做限速:

分組 典型端點 限制
read GET /ordersGET /balancesGET /fills 10 req/s
trade POST /ordersPOST /swap 5 req/s
cancel POST /orders/cancelDELETE /orders/cancel-all 2 req/s
transfer 充值、授權、提現、轉帳與交易廣播輔助端點 2 req/s

端點

系統

方法 路徑 驗證 說明
GET /health 服務健康、executor_id 與簽名就緒狀態
GET /system/time 伺服器時間戳
GET /tokens 代幣註冊表
GET /markets 活躍市場中繼資料
GET /fx/rate ISO 貨幣對的聚合匯率與 24 小時漲跌幅
GET /permit/metadata API Key EIP-2612 permit domain、nonce 與額度探測
GET /config 公共鏈上與合約啟動配置
POST /verify-signature 驗證 EIP-712 訂單簽名

交易

方法 路徑 驗證 說明
POST /swap/quote 取得兌換報價
POST /swap EIP-712 執行已簽署的兌換
POST /orders EIP-712 掛限價單
POST /orders/cancel EIP-712 取消訂單
DELETE /orders/cancel-all API Key 取消所有未完成訂單
POST /orders/vl/batch EIP-712 提交虛擬流動性批次訂單
POST /orders/vl/cancel EIP-712 取消虛擬流動性批次

帳戶

方法 路徑 驗證 說明
GET /orders/{id} API Key 取得訂單狀態
GET /orders API Key 列出訂單
GET /fills/{order_id} API Key 取得單筆訂單成交明細
GET /fills API Key 取得帳戶範圍成交明細
GET /balances API Key 取得帳戶餘額
POST /approve API Key 建構未簽名的 ERC-20 approve(spender, amount) 交易
POST /deposit API Key 建構未簽名的 depositFunddepositFundWithPermit 交易
POST /tx/send API Key 廣播已簽名的授權/存款交易
POST /withdraw 可選 取得提取共簽名
POST /withdraw/build 可選 建構未簽名的提取交易
POST /withdraw/send 可選 廣播已簽名的提取交易
POST /transfer API Key 建構未簽名的 ERC-20 轉帳
POST /transfer/send API Key 廣播已簽名的轉帳

API Key 管理

方法 路徑 驗證 說明
POST /api-keys EIP-712 建立唯讀 API key
GET /api-keys EIP-712 列出 API key(帶簽章的查詢參數)
POST /api-keys/list EIP-712 列出 API key(帶簽章的 JSON 主體)
DELETE /api-keys EIP-712 撤銷 API key(帶簽章的查詢參數)
POST /api-keys/revoke EIP-712 撤銷 API key(帶簽章的 JSON 主體)
POST /api-keys/revoke-all EIP-712 以單一簽章批次撤銷該錢包下所有有效 API key
POST /api-keys/self-revoke API Key 以目前憑證撤銷該 API key 自身
POST /api-keys/verify 驗證 API key/secret 對,且不消耗速率限制

錯誤回應

所有錯誤回傳包含 detail 欄位的 JSON 主體:

{
  "detail": "Human-readable error message"
}

伺服器端故障(原 5xx)會統一對應為 503 且回應主體改寫為通用文案 —— 客戶端看到的是 {"detail": "Service temporarily unavailable; please retry"}Retry-After: 1 回應標頭;具體原因僅記錄在伺服器端日誌,不會回傳給整合方。

狀態碼

代碼 含義
200 成功
201 資源已建立
400 請求無效(參數錯誤、簽章不符)
401 身份驗證失敗
403 禁止存取(存取其他使用者的資料)
404 資源未找到
409 衝突(重複簽章、自成交拒絕等)
410 已過期(報價過期、已消費或不存在)
422 驗證失敗
429 觸發限速或取消冷卻
503 服務暫時不可用;請依 Retry-After 重試

程式碼範例

// Public endpoint (no auth)
const tokens = await fetch('https://api.sera.cx/api/v1/tokens')
  .then(r => r.json());

// Authenticated endpoint (API key)
const orders = await fetch('https://api.sera.cx/api/v1/orders?owner_address=0x...', {
  headers: { 'Authorization': 'Bearer sera_abc123:secret456' }
}).then(r => r.json());
import requests

# Public endpoint
tokens = requests.get("https://api.sera.cx/api/v1/tokens").json()

# Authenticated endpoint
headers = {"Authorization": "Bearer sera_abc123:secret456"}
orders = requests.get(
    "https://api.sera.cx/api/v1/orders",
    params={"owner_address": "0x..."},
    headers=headers
).json()
# Public endpoint
curl https://api.sera.cx/api/v1/tokens

# Authenticated endpoint
curl -H "Authorization: Bearer sera_abc123:secret456" \
  "https://api.sera.cx/api/v1/orders?owner_address=0x..."