API接口文档
本文档用于第三方系统通过令牌调用账号池,完成随机提取、批量提取、渠道查询和额度消耗上报。
https://api.qch1.cn/api.php
application/json; charset=utf-8
Authorization: Bearer access_token
https://api.qch1.cn/user/
https://api.qch1.cn/buy.html
按调用提取次数扣减
鉴权方式
开放 API 请求需要携带调用令牌。管理员后台创建的令牌按后台规则限制;用户中心生成的个人令牌会按购买余额扣减调用提取次数。推荐使用 Bearer 方式,兼容性最好。
Authorization: Bearer 你的access_token
也兼容 access_token 请求头或请求参数,但部分 Nginx/PHP-FPM 环境可能不转发带下划线的请求头。
用户中心与调用余额
前台用户注册后会自动生成个人 API Token,Token 明文只展示一次;后续可在用户中心重置,重置后旧 Token 自动停用。
| 功能 | 地址 | 说明 |
|---|---|---|
| 注册 | /user/register.php | 创建前台用户并自动生成个人 API Token |
| 登录 | /user/login.php | 登录后可购买调用次数、查看订单和余额 |
| 用户中心 | /user/index.php | 查看剩余额度、累计购买次数、最近订单和额度流水 |
| Token 管理 | /user/tokens.php | 查看 Token 前缀、调用统计,支持生成/重置 Token |
| 购买调用次数 | /buy.html | 按调用提取次数计费,支付成功后自动加入当前用户余额 |
用户个人 Token 调用 random 扣 1 次;调用 batch 按实际返回条数扣减;调用 channel 按当前页实际返回条数扣减。购买分产品额度后,接口可传 product_code 指定扣减产品余额;产品如绑定渠道,会自动限定到该渠道。余额不足时返回 403。
统一返回与错误码
{
"code": 200,
"msg": "成功",
"data": {}
}
| code | 含义 | 处理建议 |
|---|---|---|
| 200 | 成功 | 读取 data 字段 |
| 401 | 令牌无效 | 检查 access_token 是否正确、是否已停用 |
| 403 | 调用超限、IP不在白名单、无权限或用户余额不足 | 检查每日上限、全局限流、IP白名单、渠道权限和用户中心余额 |
| 404 | 无可用账号或接口不存在 | 检查渠道、额度、状态、到期时间和 action 参数 |
| 500 | 服务器错误 | 联系管理员查看操作日志 |
接口1:随机获取一条可用API密钥
| 参数 | 必填 | 说明 |
|---|---|---|
product_code | 否 | 指定产品标识,扣减对应产品余额;产品绑定渠道时会自动限定渠道 |
channel | 否 | 指定渠道;令牌绑定渠道时只能请求绑定渠道 |
min_quota | 否 | 最低剩余额度,默认 1 |
curl "https://api.qch1.cn/api.php?action=random&product_code=default&min_quota=1" \
-H "Authorization: Bearer 你的access_token"
{
"code": 200,
"msg": "成功",
"data": {
"id": 1,
"api_key": "完整API密钥",
"channel": "default",
"quota_remaining": 100,
"expire_at": "2030-12-31 23:59:59"
}
}
接口2:批量提取N条有效密钥
| 参数 | 必填 | 说明 |
|---|---|---|
num | 否 | 提取数量,默认 10,最大 100 |
product_code | 否 | 指定产品标识,扣减对应产品余额;产品绑定渠道时会自动限定渠道 |
channel | 否 | 指定渠道 |
min_quota | 否 | 最低剩余额度,默认 1 |
curl "https://api.qch1.cn/api.php?action=batch&num=20&product_code=default&min_quota=1" \
-H "Authorization: Bearer 你的access_token"
{
"code": 200,
"msg": "成功",
"data": {
"items": [
{
"id": 1,
"api_key": "完整API密钥",
"channel": "default",
"quota_remaining": 100,
"expire_at": "2030-12-31 23:59:59"
}
],
"count": 1
}
}
接口3:查询指定渠道全部正常账号
| 参数 | 必填 | 说明 |
|---|---|---|
product_code | 条件必填 | 可用产品标识代替渠道;产品绑定渠道时会自动查询该渠道 |
channel | 条件必填 | 指定渠道;如果令牌已绑定渠道,可省略 |
page | 否 | 页码,默认 1 |
page_size | 否 | 每页数量,默认 50,最大 100 |
curl "https://api.qch1.cn/api.php?action=channel&product_code=default&page=1&page_size=50" \
-H "Authorization: Bearer 你的access_token"
{
"code": 200,
"msg": "成功",
"data": {
"items": [],
"pagination": {
"page": 1,
"page_size": 50,
"total": 0
}
}
}
接口4:上报密钥消耗额度
| 参数 | 必填 | 说明 |
|---|---|---|
id | 二选一 | 密钥ID |
api_key | 二选一 | 完整API密钥 |
amount | 否 | 扣减额度,默认 1 |
curl -X POST "https://api.qch1.cn/api.php?action=consume" \
-H "Authorization: Bearer 你的access_token" \
-H "Content-Type: application/json" \
-d "{\"id\":1,\"amount\":5}"
{
"code": 200,
"msg": "成功",
"data": {
"id": 1,
"quota_remaining": 95,
"status": "valid"
}
}
当剩余额度扣至 0 时,系统会自动将该密钥标记为 invalid。
支付接口:创建 pay.qch1.cn 支付订单
支付接口需要先登录用户中心,不使用第三方调用令牌,签名密钥只保存在服务端。创建订单后返回 pay_url,前端跳转该地址完成支付;支付成功后,订单里的调用次数会自动加入当前用户余额。
| 参数 | 必填 | 说明 |
|---|---|---|
amount | 否 | 普通订单金额;调用次数订单会由服务端按产品单价和次数重算 |
name / subject | 否 | 订单名称,默认 API服务订单 |
type | 否 | alipay / wxpay,默认读取后台设置 |
out_trade_no | 否 | 自定义订单号,不传则系统自动生成 |
business_type | 否 | 业务类型,调用次数购买建议传 api_calls |
product_code | 是 | 后台“产品调用价格”里配置的产品标识 |
count / business_id | 是 | 购买调用次数,例如 1000 |
business_return_url | 否 | 支付成功后业务跳转地址 |
redirect | 否 | 传 1 时直接302跳转到支付页 |
# 推荐登录用户中心后通过 https://api.qch1.cn/buy.html 创建订单
# 如需接口创建订单,需携带当前用户登录 Cookie
curl -X POST "https://api.qch1.cn/payment.php?action=create" \
-b cookies.txt \
-d "name=API调用提取 1000次调用额度" \
-d "type=alipay" \
-d "business_type=api_calls" \
-d "product_code=default" \
-d "count=1000" \
-d "business_id=1000"
{
"code": 200,
"msg": "成功",
"data": {
"order_no": "PAY20260707123456ABCDEF12",
"amount": "10.00",
"type": "alipay",
"pay_url": "https://pay.qch1.cn/submit.php?...",
"notify_url": "https://api.qch1.cn/payment_notify.php",
"return_url": "https://api.qch1.cn/payment_return.php"
}
}
公开读取后台启用的产品调用价格,购买页会自动使用该接口渲染产品和单价。
curl "https://api.qch1.cn/payment.php?action=products"
curl -b cookies.txt "https://api.qch1.cn/payment.php?action=query&order_no=PAY20260707123456ABCDEF12"
订单查询只返回当前登录用户自己的订单。异步通知地址固定为 https://api.qch1.cn/payment_notify.php。收到 pay.qch1.cn 成功通知并验签通过后,订单状态会更新为 paid,并向网关返回 success。
调用示例
const token = "你的access_token";
const res = await fetch("https://api.qch1.cn/api.php?action=random&min_quota=1", {
headers: {
Authorization: `Bearer ${token}`
}
});
const json = await res.json();
console.log(json);
$token = '你的access_token';
$ch = curl_init('https://api.qch1.cn/api.php?action=random&min_quota=1');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $token,
],
]);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);
print_r($data);
导入格式附录
后台账号池支持 TXT、XLSX、JSON 导入。JSON 已兼容 CPA / TXT / SUB2API / Codex JSON / AT 账号格式。
{
"CPA": [
{
"api_key": "sk-example-cpa",
"channel": "default",
"quota_remaining": 100,
"expire_at": "2030-12-31 23:59:59",
"status": "valid",
"remark": "CPA账号"
}
],
"TXT": "sk-example-txt,default,100,2030-12-31 23:59:59,valid,TXT账号",
"SUB2API": {
"items": [
{
"key": "sk-example-sub2api",
"channel": "default",
"quota": 100
}
]
},
"Codex JSON": [
{
"api_key": "sk-example-codex",
"channel": "default",
"quota_total": 100,
"quota_remaining": 100
}
],
"AT": [
{
"access_token": "at-example-token",
"channel": "default",
"remaining": 100
}
]
}
仅包含格式名或说明文字的 JSON 会被拦截,不会把 CPA、TXT、SUB2API、Codex JSON、AT 当成密钥导入。