# 状态、费用与重试

<a id="errors"></a>

<a id="状态-费用与重试"></a>

## 接口说明

HTTP 200 表示本次请求已处理。先看 status，再看 settled，决定下一步。

 状态 | 含义 | 下一步 |
| --- | --- | --- |
 `submitting` | 正在提交 | 等待受理，服务费已预留。 |
 `queued` | 等待处理 | 可尝试取消，取消结果以服务端为准。 |
 `processing` | 正在处理 | 继续刷新状态。 |
 `awaiting_otp` | 等待验证码 | 填写邮箱验证码，再查询结果。 |
 `unknown` | 等待核实 | 受理结果不明，积分继续预留，联系管理员。 |
 `succeeded` | 任务成功 | 确认平台服务费消费；订阅退款到账另查账单。 |
 `failed` | 任务失败 | 退回该任务预留的服务费。 |
 `cancelled` | 任务已取消 | 退回该任务预留的服务费。 |
 `skipped` | 未受理 | 合并或未受理的任务，释放多预留的服务费。 |

<a id="常见错误"></a>

### 常见错误

业务错误返回 `{"detail":"可读错误说明"}`，网关鉴权错误还可能包含 error 对象。

 HTTP 状态 | 含义 | 建议处理 |
| --- | --- | --- |
 `400` | 请求格式、账号或验证码无效 | 修正参数；检查账号数、体积与幂等请求头。 |
 `401` | API Key 不可用 | 使用有效的本站 API Key；Cookie 不能代替密钥。 |
 `402` | 积分或额度不足 | 检查账户积分、团队成员额度和 API Key 剩余额度。 |
 `403` | 账户或团队不可用 | 联系管理员确认账户状态。 |
 `404` | 任务不存在或无权访问 | 确认本站任务编号与账户归属。 |
 `409` | 版本、重复账号或当前状态冲突 | 先查看任务；费用版本变更时重新获取目录并确认。 |
 `500 / 502 / 503` | 处理异常或服务暂时不可用 | 创建结果可能不确定，先查历史；保留原请求及幂等标识。 |

<a id="积分与-api-key-额度"></a>

### 积分与 API Key 额度

每个任务的服务费同时预留账户积分与 API Key 累计额度；批次额度不足时整批不提交。任务成功才计入 Key 已用额度，失败、取消或 skipped 时释放预留。撤销 Key 不影响已有任务结算。积分流水记录 Key 信息，可按 Key 筛选，保留 30 天。

团队成员沿用团队钱包与成员额度。目录、查询、刷新、验证码和取消接口不另收平台服务费。本应用不参与代理分佣；模型单价保护不用于应用服务费。

<a id="去重-幂等与不确定结果"></a>

### 去重、幂等与不确定结果

本地按可识别的账号身份合并重复输入，受理时也可能继续去重，未受理的任务标为 skipped 并释放费用。同一本站账户内有未结算任务的已知账号不能再次提交。不保证不同格式的所有凭据都能识别为同一账号。

提交前保存 Idempotency-Key。超时或 unknown 后先查询历史，保留原请求及原幂等标识；不要用新标识盲目重试。unknown 持续预留服务费，需要管理员核实后处理。

<a id="账号凭据与验证码"></a>

### 账号凭据与验证码

完整 Session、Access Token、邮箱凭据和验证码不写入本站任务记录或日志，只用于本次处理。任务返回脱敏邮箱；不要按返回数组位置推断账号对应关系。从服务端调用，避免把本站 API Key 暴露在客户端。
