13. 非同步任務(影片 / Midjourney)#
影片生成、Midjourney 繪圖等耗時任務採用非同步模式:先送出任務,立即拿到任務 id,再輪詢查詢結果。
13.1 送出影片任務#
POST /v1/video/create(別名 POST /v1/videos)
| 參數 | 類型 | 必填 | 說明 |
|---|---|---|---|
model | string | 是 | 影片模型名(如 sora / veo / wan / doubao 系列) |
prompt | string | 否 | 文字描述(與 content 二擇一,不可同時傳) |
content | array | 否 | 多模態內容陣列。文字元素寫 {"type":"text","text":"…"};引用元素寫 {"type":"image_url","image_url":{"url":"…"}}(video_url、audio_url 同理,欄位名與 type 一致);引用可帶 role(reference_image、reference_video、reference_audio,如音訊驅動傳參考音訊),URL 支援 http(s)、asset:、data: |
input | object | 否 | Sora 風格的巢狀輸入 |
parameters | object | 否 | Wan 風格參數區塊(頂層同名字段優先於 parameters 內的值) |
images | array | 否 | 參考圖 URL 清單(圖生影片,須為 http/https URL) |
aspect_ratio / ratio | string | 否 | 畫面比例,如 16:9(兩者等價,ratio 優先) |
resolution | string | 否 | 解析度,如 720p / 1080p |
duration | integer | 否 | 影片時長(秒),1–15;Seedance 系列要求 4–15 |
generate_audio | boolean | 否 | 是否產生帶音訊的影片。僅對支援音訊輸出的模型生效(如 Veo 3、Seedance 音訊版);模型不支援時由上游報錯。不傳時按通道預設處理 |
watermark | boolean | 否 | 是否加入浮水印 |
seed | integer | 否 | 隨機種子(0–4294967295),用於結果重現 |
return_last_frame | boolean | 否 | 是否在結果中回傳影片末幀 |
enhance_prompt | boolean | 否 | 是否讓上游增強提示詞 |
enable_upsample | boolean | 否 | 是否啟用超取樣 |
execution_expires_after | integer | 否 | 任務保留時長(秒),1–172800,逾時後任務過期 |
Shell
# 基礎文生影片
curl http://183.240.79.21:52099/v1/video/create \
-H "Authorization: Bearer sk-你的YiTuoToken-Key" \
-H "Content-Type: application/json" \
-d '{
"model": "sora-2",
"prompt": "一只在草地上奔跑的柯基犬,阳光明媚",
"aspect_ratio": "16:9"
}'
# 產生帶音訊的影片(對支援音訊的模型傳 generate_audio: true)
curl http://183.240.79.21:52099/v1/video/create \
-H "Authorization: Bearer sk-你的YiTuoToken-Key" \
-H "Content-Type: application/json" \
-d '{
"model": "veo-3",
"prompt": "海浪拍打礁石,伴随海鸥鸣叫",
"resolution": "1080p",
"generate_audio": true
}'
送出成功後會回傳任務
id,用它去輪詢任務狀態(見 13.3)。generate_audio會透傳給上游:目標模型不支援音訊時由上游在任務內報錯,可在 13.3 查詢結果的error欄位看到原因。
13.2 送出 Midjourney 任務#
| 介面 | 說明 |
|---|---|
POST /v1/mj/submit/imagine | 文生圖 |
POST /v1/mj/submit/blend | 多圖混合 |
POST /v1/mj/submit/action | 對既有任務做放大 / 變體等操作 |
cURL
curl http://183.240.79.21:52099/v1/mj/submit/imagine \
-H "Authorization: Bearer sk-你的YiTuoToken-Key" \
-H "Content-Type: application/json" \
-d '{
"model": "midjourney",
"prompt": "a cute corgi astronaut, digital art --ar 16:9"
}'
13.3 查詢任務狀態#
GET /v1/tasks/{id} — 用送出時回傳的 id 查詢。任務歸屬驗證:查詢他人的任務回傳 404(防止列舉)。加上 ?fresh=true 會觸發一次上游即時輪詢。
cURL
curl http://183.240.79.21:52099/v1/tasks/0000019f-... \
-H "Authorization: Bearer sk-你的YiTuoToken-Key"
13.4 任務清單#
GET /v1/tasks — 列出你自己的任務(按建立時間倒序)。
| 查詢參數 | 說明 |
|---|---|
task_type | 按類型篩選(如 video、mj) |
status | 按狀態篩選 |
offset | 偏移量,預設 0 |
limit | 每頁數量,預設 50,最大 200 |
cURL
curl "http://183.240.79.21:52099/v1/tasks?task_type=video&limit=20" \
-H "Authorization: Bearer sk-你的YiTuoToken-Key"
13.5 取消任務#
POST /v1/tasks/{id}/cancel — 取消一個進行中的任務,並解凍預先凍結的額度。任務不存在或已處於終態時回傳 404。
cURL
curl -X POST http://183.240.79.21:52099/v1/tasks/0000019f-.../cancel \
-H "Authorization: Bearer sk-你的YiTuoToken-Key"