Appearance
异步任务
图片和视频都可以使用统一任务查询接口,但提交入口不同:图片仍从 POST /v1/images/generations 或 POST /v1/images/edits 提交,并在 JSON(或 multipart 表单)中设置 async: true;视频继续从 POST /v1/videos 提交。客户端应保存 SourcesData 的 task_xxx,轮询任务并按媒体类型从本站代理下载结果。
状态机
mermaid
flowchart LR
A["提交请求"] --> B["queued"]
B --> C["in_progress"]
C --> D["completed"]
B --> E["failed"]
C --> E公开状态固定为 queued、in_progress、completed、failed,其中终态为 completed 或 failed。供应商状态会在服务端归一化,客户端不应依赖其他历史状态名。
轮询规则
- 从提交响应的
id或task_id提取任务 ID。 - 请求
GET /v1/videos/{task_id}。 - 服务端返回
Retry-After时优先使用该秒数;否则等待 4 秒。 - 图片成功后下载任务响应中的本站
url或data[].url;视频成功后请求/v1/videos/{task_id}/content。 - 失败时记录 SourcesData 请求 ID和标准错误码,不记录完整提示词或资源 URL。
不要每秒高频轮询。客户端整体等待时间应根据模型最长时长设置,网络超时与任务超时要分开处理。
可执行 Bash 示例
异步图片任务(图片接口 + async: true):
bash
./examples/bash/async-media.sh \
image gpt-image-2 \
'A clean studio photograph of a glass perfume bottle' \
output.png 1024x1024异步视频任务:
bash
./examples/bash/async-media.sh \
video seedance-2.0-fast \
'A paper boat drifting through a rain puddle' \
output.mp4 4 1280x720同步图片请求:
bash
./examples/bash/generate-image.sh \
gpt-image-2 \
'A clean studio photograph of a glass perfume bottle' \
output.png脚本只读取:
bash
export SOURCESDATA_BASE_URL='<YOUR_SOURCESDATA_BASE_URL>'
export SOURCESDATA_API_KEY='<YOUR_SOURCESDATA_API_KEY>'视频断点下载
内容接口支持 Range 和 HEAD。中断后可使用 curl --continue-at - 续传:
bash
curl --fail-with-body --location --continue-at - \
"$SOURCESDATA_BASE_URL/v1/videos/$TASK_ID/content" \
-H "Authorization: Bearer $SOURCESDATA_API_KEY" \
--output output.mp4