任務提交與重試
為什麼生成任務受理後不可取消,以及失敗或過期任務如何安全重試。
createTask 一旦受理,生成任務即正式提交,之後不可取消。該規則同時適用於 queued 和 running:生成一旦開始就無法可靠地中止,因此 SpicyAPI 不會提供一個只在介面上顯示「已取消」、背景卻可能繼續生成與計費的操作。
已受理任務不可撤銷
提交前請確認模型、輸入與預估費用。關閉瀏覽器、離開頁面或刪除 API Key 都不會停止已經受理的任務。
重試失敗或終止的任務
POST /api/v1/jobs/retrycurl -X POST https://api.spicyapi.ai/api/v1/jobs/retry \
-H "Authorization: Bearer $SPICY_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: retry-order-8814-1" \
-d '{"taskId":"job_01k3m8x9q2z4v7n5p6r8s0t1w3"}'正常情況下只重試 failed 或 expired 任務。歷史 canceled 記錄仍可查詢,也可為相容舊資料而重試,但新任務不能再透過使用者操作進入該狀態。成功時建立一個新的 queued 任務:
{
"code": 200,
"msg": "success",
"data": {
"taskId": "job_01k3mnewtask",
"sourceTaskId": "job_01k3m8x9q2z4v7n5p6r8s0t1w3",
"state": "queued",
"estimatedCost": "0.08"
},
"request_id": "req_01k3mretry"
}- 原任務保持終態,不被覆蓋。
- 新任務的
sourceTaskId指回原任務,用於追蹤重試鏈。 - 重試會用目前的 Schema、價格、權限與餘額重新驗證。它是一次全新的任務,會重新排隊,並與原任務分開處理。
Idempotency-Key按「原任務 + retry 操作」隔離;同鍵同語義回傳同一個新任務,不同語義回傳409。
網路錯誤不等於任務失敗
如果 createTask 的連線在回應前斷開,應使用原 Idempotency-Key 重放 createTask,而不是呼叫 retry。retry 只針對已經有明確終態的任務。
狀態與重試表
| 目前狀態 | 可執行操作 |
|---|---|
queued / running | 等待終態;任務不可取消 |
succeeded | 檢視或下載結果;需要再次生成時新建任務 |
failed / expired | 重試並建立一條獨立計費的新任務 |
歷史 canceled | 檢視記錄或重試;不再提供新的使用者取消入口 |

