平台内测中,接口陆续接入,欢迎反馈。

接入指南

1. 获取凭证

注册后在「用户中心」可获得 Token(公开,随请求发送)与 Secret(私密,仅用于本地计算签名,切勿外传)。

注册后查看我的凭证

2. 签名规则

待签名字符串(\n 为换行):

METHOD\nPATH\ntimestamp\nnonce\nk1=v1&k2=v2

3. 请求头

Header说明
X-Api-Token你的 API Token
X-Api-Timestamp秒级时间戳
X-Api-Nonce随机串
X-Api-Signature签名值

提示:也支持把 token / timestamp / nonce / sign 作为 URL 参数传递,方便在浏览器直接调试。

4. 示例代码

cURL

curl -X GET 'http://pan.u5zpgb.cn/api/v1/demo?keyword=test' \
  -H 'X-Api-Token: ym_your_token_here' \
  -H 'X-Api-Timestamp: 1789197761' \
  -H 'X-Api-Nonce: a1b2c3d4e5f6' \
  -H 'X-Api-Signature: 6f24ecaef16add6abaadc6307f5e24328292a4dc32cf24b98010e616d797f4d0'

PHP

$token  = 'ym_your_token_here';
$secret = 'your_secret_here';
$path   = '/api/v1/demo';
$params = ['keyword' => 'test'];

$ts    = time();
$nonce = bin2hex(random_bytes(8));
ksort($params);
$canonical = http_build_query($params);
$raw = "GET\n{$path}\n{$ts}\n{$nonce}\n{$canonical}";
$sign = hash_hmac('sha256', $raw, $secret);

$ch = curl_init('https://your-domain.com' . $path . '?' . $canonical);
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        'X-Api-Token: ' . $token,
        'X-Api-Timestamp: ' . $ts,
        'X-Api-Nonce: ' . $nonce,
        'X-Api-Signature: ' . $sign,
    ],
]);
echo curl_exec($ch);

Python

import time, hmac, hashlib, urllib.parse, requests

token, secret = 'ym_your_token_here', 'your_secret_here'
path, params = '/api/v1/demo', {'keyword': 'test'}
ts, nonce = str(int(time())), 'a1b2c3d4e5f6'
canonical = '&'.join(f'{k}={urllib.parse.quote(str(params[k]))}' for k in sorted(params))
raw = f"GET\n{path}\n{ts}\n{nonce}\n{canonical}"
sign = hmac.new(secret.encode(), raw.encode(), hashlib.sha256).hexdigest()

r = requests.get('https://your-domain.com' + path, params=params, headers={
    'X-Api-Token': token,
    'X-Api-Timestamp': ts,
    'X-Api-Nonce': nonce,
    'X-Api-Signature': sign,
})
print(r.json())

5. 错误码

Code说明
1001缺少 API Token
1002Token 无效或账号已禁用
1003签名校验失败
1004时间戳超出容差范围
1005nonce 重放请求
1006接口不存在或已下线
1007缺少必填参数
1008请求过于频繁,触发限流
1009积分不足
2000上游接口返回异常
5000服务内部错误