快速入門
建立非同步任務,並處理輪詢、完成、失敗與回呼。
RunAPI 使用任務(Task)進行非同步的圖像、影片、音訊及音樂生成。建立請求會迅速返回;您的應用程式隨後對任務進行輪詢,或接收該端點 API 參考中列出的回呼事件。
建立任務
在目錄中選擇模型與端點,然後傳送端點所需的輸入內容。以下範例啟動一個 Flux 2 文字轉圖片任務:
curl -X POST "https://runapi.ai/api/v1/flux_2/text_to_image" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Idempotency-Key: 8c8ba3c9-0ce0-4bbd-a9a7-bf59ab639286" \
-H "Content-Type: application/json" \
-d '{
"model": "flux-2-pro-text-to-image",
"prompt": "A product photograph on a clean studio background"
}'
已接受的非同步請求會回傳 202 Accepted 及任務識別碼:
{
"id": "task_id",
"status": "processing"
}
將 id 與您的應用程式記錄一同儲存。它是用於輪詢、支援及回呼對帳的穩定識別碼。
傳入媒體輸入
Media Input Field 是承載媒體 URL 的請求欄位:名稱以 _url 或 _urls 結尾的頂層欄位(例如 image_url 或 image_urls)、video_list 每一項的 url,以及 kling_elements 每一項的 element_input_urls、element_input_video_urls 和 element_input_audio_urls。callback_url 是回呼投遞位址,不屬於 Media Input Field。每個 Media Input Field 的值可以是公開的 HTTPS URL,也可以是 data:<mime>;base64,<data> 格式的 data URI,單一 data URI 最大 10 MB。RunAPI 會將每個 data URI 儲存為一小時後過期的暫存 File Upload,並在 Task 中使用該 File Upload。無法儲存的 data URI 會回傳 422,錯誤碼為 invalid_media_input。
GPT Image 編輯端點的 source_image_urls 只接受 HTTPS URL。向這些端點傳送本機圖片時,請先建立 File Upload,再傳入回傳的 URL。
檔案超過 10 MB 時,請先透過 POST /api/v1/files 建立 File Upload,再傳入回傳的 URL。透過 multipart 或 URL 來源建立的 File Upload 最大支援 50 MB。File Upload URL 同樣會在一小時後過期,超過該時間後啟動的 Task 需要重新建立 File Upload。
# For this model, non-PNG/JPEG input may return 409 depending on the selected service.
# If rejected, convert WebP/BMP/TIFF/GIF to PNG/JPEG or select a compatible service.
# Actual MIME determines support, even for a .png URL. Rejection happens before task creation or charging.
# This is not a format limit for every service. Existing Task queries remain available.
curl -X POST "https://runapi.ai/api/v1/seedream/decompose_layers" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"model":"seedream-5-pro-layer-decomposition","image_url":"https://cdn.runapi.ai/public/samples/image.png"}'
防止重複建立任務
任務建立端點接受一個選用的 Idempotency-Key 標頭,其值為最多 512 個字元的不透明字串。請為每個邏輯任務產生一個值,並在確認請求是否已被接受之前,隨請求一併保留該值。
若因逾時或連線失敗而導致結果不明,請以相同的金鑰重試完全相同的 Task 建立請求。RunAPI 將回傳原始 Task,而不會建立並收費第二次。以不同的 Task 建立請求重複使用同一金鑰將回傳 409 Conflict。請為全新的 Task 產生新金鑰,且不要將 X-Client-Request-Id 用作此金鑰。
恢復中斷的同步請求
緩慢的同步端點通常會保持連線開啟,並如既往回傳相同的終止回應。現有整合無需變更輪詢邏輯。
若要設定刻意較短的連線預算,請傳送 Prefer: wait=N。
若 Task 在該明確預算結束後仍在執行,RunAPI 將回傳
202 Accepted,附帶相同的 Task id、用於恢復的不透明 Location URL
及建議的查詢延遲 Retry-After。請完全依照 Location 指引,
而非自行建構結果 URL。已完成的 Task Result 會保留終態 HTTP 狀態、
允許的標頭、內容類型及主體;請依 response.content_type 解碼
response.body,其並非總是 JSON。
輪詢任務
將任務識別碼附加至相同的端點路徑:
curl "https://runapi.ai/api/v1/flux_2/text_to_image/task_id" \
-H "Authorization: Bearer YOUR_API_TOKEN"
當 status 為 processing 時持續輪詢。請在請求之間使用有界退避策略,而非持續不斷地輪詢。當任務狀態變為 completed 或 failed 時,即進入終態。
處理完成
completed 回應包含任務的 id、終止的 status、端點特定的結果欄位,以及該 Task 的 usage.cost(float USD)。請持久化您所需的結果並停止輪詢。請參閱端點的 API 參考以取得確切的結果結構,而非假設每個媒體端點都會回傳相同的欄位。
建立、processing 與 failed 的 Task envelope 不包含 usage。
需要依媒體資料進行最終結算的任務,在最終費用記錄完成前會維持
processing 狀態。完成回呼只會在結算完成後傳送,
其 usage.cost 與後續任務查詢傳回的值一致。
缺少計費依據時,不會將費用回報為零:
在核對及補齊資料期間,任務會維持 processing 狀態。
已確認為零的費用會以 usage.cost: 0 傳回。
處理失敗
failed 回應包含任務的 id、終止的 status,以及在可用時由 RunAPI 提供的 error。請停止輪詢,記錄識別碼與錯誤,並僅在您的應用程式將失敗分類為暫時性錯誤時才重試。重試會產生新的任務識別碼。
接收回呼
若希望 RunAPI 傳送為該端點所記錄的回呼事件,請在建立請求時加入公開的 HTTPS callback_url:
{
"model": "flux-2-pro-text-to-image",
"prompt": "A product photograph on a clean studio background",
"callback_url": "https://your-domain.com/webhooks/runapi"
}
每個回呼主體對應端點 API 參考中的一個生命週期事件。completed 回呼與 completed 輪詢回應共享 usage.cost;建立、processing 與 failed 回呼不包含 usage。終態回呼包含與終態輪詢回應相同的結果欄位;某些端點也會傳送已記錄的 processing 回呼。請快速回傳成功的 HTTP 回應,並在交付延遲或回呼處理程序無法使用時保持輪詢可用以進行對帳。
閱讀回呼以了解如何建立回呼密鑰、驗證簽章及安全處理重試。
生成 Vidu Q4 視頻
將 POST /api/v1/vidu/image_to_video 與 model:
"vidu-q4-image-to-video" 和 first_frame_image_url 一起使用。將 POST
/api/v1/vidu/reference_to_video 與 model:
"vidu-q4-reference-to-video"、非空 prompt 和 1–15 有序組合使用
reference_image_urls。在建立時使用 GET 檢索每個任務
/:id 所遵循的路徑。已完成的任務包含 videos 陣列
結果 URL。您也可以提供callback_url來完成
通知。
兩個端點都接受 3 到 16 之間的整數 duration_seconds,預設
5、540p、720p、1080p、2k 或 4k 中的 output_resolution,
預設720p。 audio 是一個 JSON 布林值,預設 true;明確的
false 停用產生的音訊。提示最多接受 20,000 個
字元。圖像到視頻提示是可選的,並且第一幀
決定其縱橫比。參考影片接受aspect_ratio
16:9、9:16、1:1、4:3、3:4,預設16:9,最多3個
reference_audio_urls。
使用公用 HTTP(S) 媒體 URL。圖片必須為 JPG/JPEG、PNG 或 WEBP; 第一幀影像不得大於 50 MB。每個參考音訊 檔案必須為 MP3,長度為 3-12 秒,且不大於 50 MB。 RunAPI 檢查欄位類型、URL 方案和參考計數。世代 提供者檢查遠端媒體格式、大小和音訊持續時間 異步地。無效媒體可能會導致任務失敗 正常故障和退款流程。