← 返回子号复活

CDK 与复活 API 对接文档

并发检测,仅复活 401 或 Free,返回已验证的高级席 Sub2 成品。

CDK 查询下载 / 复活

客户统一入口:/redeem,同一页面切换“查询并下载”和“复活”。CDK 对应一次产出的一个账号;退出原空间后失效,同邮箱再次产出使用新 CDK。

查询下载:POST /api/cdk/redeem,请求 {"cdk":"你的兑换码","action":"download"},直接返回绑定的 JSON 和已保存的 2FA,无需轮询。CDK 默认有效,已记录移除或已作废的码不可使用。

复活:POST /api/cdk/tasks,请求 {"cdk":"你的兑换码","action":"revive"},成功返回 task_id。每 2 秒向 POST /api/cdk/tasks/poll 提交 {"cdk":"你的兑换码","task_id":"上一步的任务ID"}。旧版异步下载接口仍兼容,推荐使用上述直接下载接口。

排队或处理中返回 status=queued/running;完成后返回 result,必须检查 result.success。成功结果包含 sub2filenameemailserver_timetwo_factor。若已保存密钥,two_factor.available=truetwo_factor.secret 可用于标准 SHA-1 / 6 位 / 30 秒 TOTP。

批量直接兑换:POST /api/cdk/redeem/batch,请求 {"codes":"CDK1\nCDK2"}{"codes":["CDK1","CDK2"]},每批最多 500 个。自动去重,直接返回一个合并的 sub2filename,无需任务或轮询。available 为成功数量,failed 为失败数量,duplicates 为去重数量;itemsitem_no 对应输入序号。有效码继续兑换,失效码单独提示;全失效时 accounts 为空。此接口不进行第三方检测或复活。

首次查询或复活成功会标记对应成品已导出,重复使用不会重复扣数。仅导出 CDK 清单不改变待导出成品数。CDK 与返回结果属于账号凭据,请只在 POST 请求体内提交,不放入 URL 或日志。请求及响应均禁止缓存。

接入约定

服务地址:https://team5x.wishtoapp.com
请求格式:Content-Type: application/json;返回 UTF-8 JSON。

批量 CDK 复活

POST /api/cdk/batch/tasks 提交 {"codes":"CDK一\nCDK二"},也支持 codes 数组。每批最多 500 项,自动去重,单个无效码不会中断其他账号。立即返回随机 task_id;重复提交同一组正在处理的 CDK 会返回原任务。

每 2 秒向 POST /api/cdk/batch/tasks/poll 提交 {"task_id":"任务ID"},查看 task 中的 total、done、alive、revived、failed、items。每项含 item_no(去重后的序号)、email、status、stage、error。进度不包含兑换码或令牌。

POST /api/cdk/batch/tasks/result 提交同一 task_id,返回 sub2availableunavailable。默认等待任务结束;正文增加 "partial":true 可提前下载已完成项,剩余账号继续处理。下载核对本地作废、退出及归属记录,不重复访问上游;已记录失效的码不会返回成品,重复下载不重复计数。

JSON 与 CDK 批量共用全局最多 20 个检测、20 个复活并发,每个账号检测完成即可继续,仅修复明确的 401 / Free。同账号串行、同批同空间复用成员读取。JSON/CDK 各有 4 个批次协调线程、各最多受理 8 批,超出容量返回忙碌。实际耗时取决于上游响应和是否需要重新登录。

任务 ID 是访问该批结果的凭据,须保密,只放 POST 正文;有效期为最后更新后 24 小时。刷新页面可恢复进度,服务重启保留成功项、未完成项标中断,不自动重复换令牌。本站不会在日志中记录 CDK,成功结果加密保存。

1. 单号检测与复活

推荐 POST /api/revive/jobs,传入 {"email":"[email protected]"},立即返回 task_id 和进度;使用下方批量任务的查询和结果接口。重复提交同一个正在处理的邮箱会返回原任务。旧 POST /api/revive 同步接口继续兼容。检测本站保存的最新成品;若手中某份文件显示 Free,可用批量接口上传该文件检测。

curl --max-time 600 https://team5x.wishtoapp.com/api/revive \
  -H 'Content-Type: application/json' \
  -d '{"email":"[email protected]"}'

成功响应的结构如下,sub2 此处省略具体令牌:

{
  "success": true,
  "email": "[email protected]",
  "status": "revived",
  "already_alive": false,
  "reason": "free_plan",
  "message": "复活成功,已生成并校验新的高级席成品。",
  "sub2": {"type": "sub2api-data", "version": 1, "exported_at": "...", "proxies": [], "accounts": ["此处为完整账号对象"]}
}

already_alive=true 表示当前成品已验证可用,没有重新换令牌;false 表示已生成新的成品。

2. 批量检测与复活

推荐:异步任务与实时进度

  1. POST /api/revive/batch/jobs,传入 {"sub2": 原文件JSON对象}{"text":"JSON文本"}。立即返回 successtask_id 和初始 task
  2. 每 1–2 秒请求 GET /api/revive/batch/jobs/{task_id}task 包含 status(queued/running/done/interrupted)、totaldonerunningqueuedaliverevivedfailedworkspace_dead 和逐号 items。炸车计入 failed,workspace_dead 是其中的数量。
  3. 任务结束后请求 GET /api/revive/batch/jobs/{task_id}/result,得到结果和一个合并 sub2,只包含本次修复成功的账号(含替换最新凭据),正常账号不重复导出。增加 ?partial=1 可提前下载已修复项;返回 partial=true 表示仍有后台任务。提前下载不终止任务。

逐号 stage:queued 等待、checking 检测原文件、checking_current 检测最新成品、loading_source 读取原料、checking_seat 验证席位、refreshing 刷新/重登、verifying 复查、done 完成。进度响应不含 AT/RT。任务 ID 是访问该批结果的随机密钥,请妥善保存,不要公开分享。任务重启中断时保留已完成结果,未完成项标明中断,不会偷偷重复换令牌。

兼容:同步批量接口

POST /api/revive/batch。发送 {"sub2": 原文件JSON对象};也接受 {"sub2": accounts数组}{"sub2": 多份Sub2文档数组}{"text": "原文件JSON文本"}。文件内容通过 JSON 传输,不是 multipart 文件上传。

单次最多 200 个账号(去重前),按邮箱去重保留第一项。邮箱优先取 extra.email,兼容 credentials.email、顶层 email 或旧版邮箱形式的 name

{
  "success": true,
  "total": 3,
  "alive": 1,
  "revived": 1,
  "original_alive": 1,
  "replaced": 0,
  "downloadable": 1,
  "output_mode": "repaired_only",
  "failed": 1,
  "results": [
    {"email": "[email protected]", "status": "alive"},
    {"email": "[email protected]", "status": "revived", "reason": "free_plan"},
    {"email": "[email protected]", "status": "failed", "error": "缺密码/2FA,无法自助复活"}
  ],
  "sub2": {"type": "sub2api-data", "version": 1, "exported_at": "...", "proxies": [], "accounts": ["仅 [email protected] 修复后的完整账号对象"]}
}

success=true 表示批处理完成,可能部分或全部失败。total = alive + revived + failed。JSON 批量返回 output_mode=repaired_only,合并文件仅包含修复成功的账号,downloadable = replaced + revived,正常账号全部跳过。全部正常时 sub2.accounts=[],无需下载。

alive 为兼容字段,包含原文件可用与替换凭据两种情况。original_alive 表示原文件通过检测,replaced 表示原文件 401 / Free、已替换为服务器最新可用凭据;alive = original_alive + replaced。异步进度及结果使用相同计数,历史批量结果下载也排除正常原文件。合并文件只用于更新已修复账号,请保留原文件中正常账号。单邮箱任务使用 output_mode=current,继续返回当前有效成品;CDK 领取不受此过滤影响。

3. 状态与失败处理

status含义与处理
alive返回成品的实际高级套餐及空间已通过检查。reused_current=true 表示原文件未通过检测,返回服务器已有的新版本,必须下载替换;不代表原文件可用。
revived修复成功,保存新的成品替换旧文件。
not_ours本站找不到对应成品记录,确认邮箱和文件来源。
failederror_code=workspace_deactivated 表示炸车,无法复活,对应母号状态同步更新。其他错误查看 error;检测暂不可用可稍后重试,原料或成员资格问题需管理员处理。

可选 probe 字段记录修复前检测结果:http_statusplan_typeaccount_idstatereason。修复成功时其内容仍是修复前的证据。reason 常见值为 unauthorizedfree_planplan_mismatchworkspace_mismatch;检测不明确时为 probe_unavailableusage_incompleteidentity_mismatch

replacement_probe 记录服务器已有新版本的检测结果,不覆盖原文件的 probe。新任务的逐号进度会保留这些检测元数据;历史任务可能没有检测详情,但仍可根据 reused_current 区分替换结果。

默认检测来源为 Codex 额度探测器,只发送 AT 与目标空间 ID,不发送 RT、密码或 2FA。provider=chixiaotaoprovider_http_status 保留查询服务的 HTTP 状态;包装在错误响应中的明确 401 会按原始 401 分类。检测失败保持未确认,不直接刷新令牌。批量初检只在同一账号、同一空间、同一 AT 且不超过 60 秒时复用,超过时重新检测。

{"success": false, "error": "操作太频繁,请 30 秒后再试", "retry_after": 30}

4. Python:上传文件并保存成品

安装 requests 后运行。Windows 文件可使用绝对路径;示例文件名需替换成自己的。

import json
from pathlib import Path
import requests

document = json.loads(Path("input.sub2.json").read_text(encoding="utf-8-sig"))
response = requests.post(
    "https://team5x.wishtoapp.com/api/revive/batch",
    json={"sub2": document},
    timeout=(15, 600),
)
response.raise_for_status()
result = response.json()
if not result.get("success"):
    raise RuntimeError(result.get("error", "请求失败"))

Path("revived.sub2.json").write_text(
    json.dumps(result["sub2"], ensure_ascii=False, indent=2),
    encoding="utf-8",
)
print({key: result[key] for key in ("total", "alive", "revived", "failed")})
for item in result["results"]:
    if item["status"] in ("failed", "not_ours"):
        print(item["email"], item.get("error", ""))