Skip to content

申请 Token

api.mobiusquant.ai分档限速:

  • 匿名档(不带 Authorization 头)—— 10 req/min per IP,适合快速试用、无需注册
  • Token 档(带合法 Bearer token)—— 60 req/min per token,推荐生产接入

若你带了 Authorization 但 token 不合法(过期/撤销/拼错)→ 返回 401,不会降级到匿名档(避免误诊为"token 在工作但奇怪老超限")。

本页说明如何拿到 token、怎么用、错误怎么处理。

两种 Token 一览

模式申请入口有效期数量上限适用场景
匿名试用/apply-token7 天不限评估、临时调试、PoC
登录永久/account → 「API Tokens」永久单账号 ≤10 个活跃生产、长期接入

两种 Token 调用 API 时完全等价(同样的 60 req/min 限速,同样的接口集)。

明文只显示一次

申请成功时,引擎会回一串 mq_<43字符> 的明文 Token。这串只在创建那一刻可见,关闭页面后无法找回(我们只在 DB 里存 sha256(token))。请立即复制保存到密码管理器 / .env


一、匿名申请(7 天试用)

适合不想注册账号、只是想跑通对接的场景。

步骤

  1. 打开 https://www.mobiusquant.ai/zh/apply-token
  2. (可选)给 Token 起个名字方便日后审计
  3. 通过 Cloudflare Turnstile 人机验证
  4. 点击「申请 Token」
  5. 立即复制返回的 mq_xxx 明文

注意

  • 关闭页面后 Token 不可找回 —— 必须立即复制
  • 7 天到期后会自动失效,过期请求返回 401 invalid, expired or revoked token
  • 同一邮箱 / IP 没有数量限制,过期或丢了重新申请即可
  • 申请页有 Cloudflare 人机验证,机器化批量申请被拦

二、登录申请(永久)

适合长期生产接入。登录后 Token 永久有效,且能在「使用记录」抽屉里看到调用明细。

步骤

  1. 打开 https://www.mobiusquant.ai/zh/account
  2. 用 Telegram 登录(或邮箱 / 邮箱+Telegram 绑定)
  3. 进入「API Tokens」区块,点击「新建 Token」
  4. 给 Token 起个名字(必填,比如「production-2026」),提交
  5. 立即复制弹窗里的 mq_xxx 明文,点「我已保存」

管理

操作怎么做
查看所有 TokenAccount 页 → 「API Tokens」表格(默认隐藏已撤销,可切换显示)
查看某个 Token 的调用记录点表格行的「📊 使用记录」 → 抽屉里看最近 50 条明细 + 7 天聚合
撤销 Token点行尾「🗑 撤销」按钮 → 二次确认(撤销后约 ≤60 秒生效)

每个账号最多 10 个活跃(未撤销 & 未过期) Token,达到上限时新建会返回:

HTTP/1.1 400 Bad Request
{"detail": "未吊销 token 已达上限 10,请先吊销旧的"}

使用 Token

在任何请求里加 Authorization 头:

bash
curl -H "Authorization: Bearer mq_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \
     "https://api.mobiusquant.ai/api/markets"
python
import requests

TOKEN = "mq_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
resp = requests.get(
    "https://api.mobiusquant.ai/api/klines",
    params={"exchange": "binance", "market": "perp",
            "symbol": "BTCUSDT", "interval": "5m", "limit": 100},
    headers={"Authorization": f"Bearer {TOKEN}"},
)
resp.raise_for_status()
print(resp.json())
javascript
const TOKEN = "mq_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
const r = await fetch(
  "https://api.mobiusquant.ai/api/indicators",
  {
    method: "POST",
    headers: {
      "Content-Type":  "application/json",
      "Authorization": `Bearer ${TOKEN}`,
    },
    body: JSON.stringify({
      exchange: "binance", market: "perp", symbol: "BTCUSDT",
      interval: "5m", limit: 100,
      calc: [{ name: "ema", params: { period: 20 } }],
    }),
  },
);
const json = await r.json();

速率限制

  • 匿名档:10 req/min per IP(以 CF-Connecting-IP 为 key,Cloudflare 真实客户端 IP)
  • Token 档:60 req/min per token
  • 令牌桶算法,burst = 完整 1 分钟配额 —— 可一秒打完,然后等整一分钟从空桶补满
  • 豁免路径(不需要 token,也不计入限速):/api/health /agents.md /docs /redoc /openapi.json

超限返回:

http
HTTP/1.1 429 Too Many Requests
Retry-After: 7
X-RateLimit-Limit: 30
X-RateLimit-Remaining: 0

{"detail": "rate limit exceeded (60/min); consider batching requests."}

请遵守 Retry-After,死循环重试只会让桶永远空。


错误码速查

HTTP含义排查方向
401带了 Authorization 头但 token 不合法(拼错 / 过期 / 撤销)修正 token 后重试;不带 Authorization 头会走匿名档而非 401
429超限(匿名 10/min 或 token 60/min)Retry-After 退避;匿名可申请 token 升档(6x)
400业务参数错误detail 字段,不要盲目重试
422请求结构不对(必填缺失、类型错、未知字段)读 validation 数组修请求结构
404缓存空 / symbol 不存在 / venue 不支持先看 /api/health(starting 等),再查 /api/markets/.../symbols
502上游容器重启30 秒后重试

安全建议

  • 绝不要把 Token 写进前端代码 / 提交到公开仓库。前端调用请走自家后端中转
  • 用环境变量 / 密钥管理器存放,例如 .env 文件加入 .gitignore
  • 怀疑泄露立即在 Account 页撤销,然后新建
  • 每个环境(dev / staging / prod)用独立 Token,出问题影响面小

AI 交易的基础设施平台