Skip to content

状态与轮询

状态说明

状态是否终态说明
submitted任务已提交,正在进入队列
queued任务已进入队列,等待执行
in_progress图片正在生成
succeeded生成成功,可读取 result.data
failed生成失败,可读取 error

只有 succeededfailed 是终态。

推荐轮询策略

  • 每隔 2~5 秒查询一次。
  • 对 HTTP 429503 使用指数退避。
  • 400401403404409,先修正请求或权限,不要无限重试。
  • 设置符合业务场景的总超时时间;客户端超时不代表服务端任务自动取消。
javascript
async function waitForImageTask(baseURL, token, taskId) {
  while (true) {
    await new Promise((resolve) => setTimeout(resolve, 3000));
    const response = await fetch(
      `${baseURL}/v1/images/generations/tasks/${encodeURIComponent(taskId)}`,
      { headers: { Authorization: `Bearer ${token}` } },
    );
    if (!response.ok) throw new Error(await response.text());

    const task = (await response.json()).data;
    if (task.status === 'succeeded') return task.result.data;
    if (task.status === 'failed') {
      throw new Error(`${task.error.code}: ${task.error.message}`);
    }
  }
}

常见接口错误

HTTP错误码说明
400invalid_image_request请求体或图片参数不正确
400invalid_async_request异步控制参数不正确
401Token 无效或缺失
403insufficient_user_quota余额不足或模型/分组权限不可用
404image_async_task_not_found任务不存在或当前用户无权查看
409idempotency_conflict相同幂等键对应不同请求
413invalid_image_request请求体过大
429user_queue_limit_exceeded当前用户待处理任务达到上限
429global_queue_capacity_exceeded服务任务较多,请稍后重试
503image_async_disabled异步服务暂时不可用
503storage_unavailable结果存储暂时不可用
410result_expired任务结果已过期

面向 Revora API 下游开发者