面向脚本调用方和第三方系统接入方。接口保持公开,不需要额外 API Key,统一收 JSON、回 JSON。
GET /download/redeem/{code}/{batch_no},不单独提供第二套 JSON 下载接口。| 项 | 说明 |
|---|---|
| 请求头 | Content-Type: application/json |
| 返回格式 | 统一返回 JSON,最外层固定包含 ok、message、error |
| 查询入口 | 以兑换码为主,无需 task_id 查询接口 |
| 下载方式 | 继续使用现有 GET /download/redeem/{code}/{batch_no} |
| 公开信息范围 | 只返回当前兑换码相关状态、批次和最近任务摘要,不暴露全局队列人数等后台信息 |
| 状态码 | 说明 |
|---|---|
| 200 | 查询成功 |
| 202 | 动作已成功入队 |
| 400 | 参数错误或 JSON 非法 |
| 404 | 兑换码不存在或批次不存在 |
| 409 | 当前状态冲突,例如同码已有排队任务、冷却中、关闭新领取、批次不可操作 |
| 500 | 服务端异常 |
路径:POST /api/public/redeem/lookup
{
"code": "ABCD-1234"
}
{
"ok": true,
"message": "查询成功",
"code": {
"code": "ABCD-1234",
"account_count": 300,
"remaining_count": 200,
"pool_type": "domain",
"status": "partial",
"created_at": 1775730000,
"used_at": 1775730500,
"current_batch_no": 3
},
"suggested_count": 100,
"redeem_enabled": true,
"has_active_task": false,
"latest_task": {
"id": "rdm_9f6d3d3b",
"type": "redeem_claim",
"status": "succeeded",
"message": "批次 #3 已生成,剩余 200 个,可直接下载。",
"created_at": 1775730600,
"batch_no": 3
},
"active_batch": {
"batch_no": 3,
"account_count": 100,
"export_format": "cpa",
"status": "active",
"cache_expires_at": null,
"download_path": "/download/redeem/ABCD-1234/3",
"can_download": true,
"can_redownload": true,
"can_upload": true
},
"batches": []
}
路径:POST /api/public/redeem/claim
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| code | string | 是 | 兑换码 |
| quantity | number | 是 | 本次领取数量 |
| format | string | 否 | 导出格式,默认 cpa |
| auto_check | boolean | 否 | 是否领取前检测失效账号 |
| delivery | string | 否 | download 或 upload,默认 download |
| upload | object | 条件必填 | 当 delivery=upload 时必填 |
{
"code": "ABCD-1234",
"quantity": 100,
"format": "cpa",
"auto_check": true,
"delivery": "download"
}
{
"code": "ABCD-1234",
"quantity": 100,
"format": "cpa",
"auto_check": true,
"delivery": "upload",
"upload": {
"target": "cpa",
"api_url": "https://example.com/v0/management/auth-files",
"api_token": "YOUR_TOKEN"
}
}
{
"ok": true,
"queued": true,
"message": "已加入领取队列,可关闭页面稍后回来查询。",
"task": {
"id": "rdm_4a6f2d91",
"type": "redeem_claim",
"status": "queued",
"created_at": 1775731000
},
"lookup": {
"redeem_enabled": true,
"has_active_task": true,
"batches": []
}
}
路径:POST /api/public/redeem/redownload
{
"code": "ABCD-1234",
"batch_no": 3,
"format": "auth_json"
}
{
"ok": true,
"queued": true,
"message": "已加入重新下载队列,可关闭页面稍后回来查询。",
"task": {
"id": "rdm_11112222",
"type": "redeem_redownload",
"status": "queued",
"created_at": 1775731200,
"batch_no": 3
}
}
路径:POST /api/public/redeem/upload
{
"code": "ABCD-1234",
"batch_no": 3,
"upload": {
"target": "sub2api",
"api_url": "https://example.com/api/v1/admin/accounts/data",
"api_key": "YOUR_API_KEY"
}
}
| upload 字段 | 说明 |
|---|---|
| target | 上传目标,支持 cpa、sub2api、newapi、team_manager |
| api_url | 上传地址 |
| api_token | CPA 使用 |
| api_key | Sub2API / Team Manager 使用 |
| username | new-api 使用 |
| password | new-api 使用 |
下载不走 JSON,继续使用:
GET /download/redeem/{code}/{batch_no}
查询结果里的 active_batch.download_path 和 batches[].download_path 都可以直接拼接到服务域名后使用。
curl -L -o batch_3.zip \ 'http://127.0.0.1:8080/download/redeem/ABCD-1234/3'
POST /api/public/redeem/lookup 确认兑换码状态。POST /api/public/redeem/claim。POST /api/public/redeem/lookup。GET /download/redeem/{code}/{batch_no}。