跳转至

快速开始

本节带你完成一次最小可用调用:获取 Token、生成签名、访问受保护接口。

前置条件

  • 你已经拿到可用的 client_idclient_secret
  • 本地时间与服务端时间偏差不超过 60 秒
  • 请求工具支持自定义 Header,例如 curl、Postman、Python requests

第一步:获取 Token

请求 URL

POST /v1/api/token

请求头

Header 必填 示例
Content-Type application/json

请求体

{
  "client_id": "demo",
  "client_secret": "s3cr3t"
}

请求示例

curl -X POST "https://stock-data-api.aibot6.cn/v1/api/token" \
  -H "Content-Type: application/json" \
  -d '{"client_id":"demo","client_secret":"s3cr3t"}'

200 OK

{
  "code": 1,
  "message": "OK",
  "data": {
    "token": "<64-hex>",
    "expire_at": "2025-12-06 20:00:00",
    "enable_log": false,
    "token_bytes": 64
  }
}

第二步:生成签名

受保护接口统一要求:

  • Authorization: Bearer <token>
  • X-Timestamp: <epoch-seconds>
  • X-Nonce: <random-string>
  • X-Signature: <md5(token + timestamp + nonce + body)>

Python 示例

import hashlib
import time

token = "<your_token>"
timestamp = str(int(time.time()))
nonce = hashlib.md5(str(time.time()).encode("utf-8")).hexdigest()
body = b""

signature = hashlib.md5(
    token.encode() + timestamp.encode() + nonce.encode() + body
).hexdigest()

第三步:调用示例接口

请求 URL

GET /v1/api/kline

请求示例

ts=$(date +%s)
nonce=$(openssl rand -hex 8)
body=""

sig=$(python3 - <<PY
import hashlib
token = "$TOKEN"
ts = "$ts"
nonce = "$nonce"
body = b""
print(hashlib.md5(token.encode()+ts.encode()+nonce.encode()+body).hexdigest())
PY
)

curl "https://stock-data-api.aibot6.cn/v1/api/kline?code=000001.SZ&freq=D&start=2020-01-01&end=2020-01-02" \
  -H "Authorization: Bearer $TOKEN" \
  -H "X-Timestamp: $ts" \
  -H "X-Nonce: $nonce" \
  -H "X-Signature: $sig"

常见失败

400 Bad Request

{
  "code": 0,
  "message": "missing or invalid params"
}

401 Unauthorized

{
  "code": 0,
  "message": "unauthorized"
}

403 Forbidden

{
  "code": 0,
  "message": "forbidden"
}

404 Not Found

{
  "code": 0,
  "message": "not found"
}

下一步

推荐继续阅读:

  1. 认证与签名
  2. 错误响应与状态码
  3. API 概述