使用指南
錯誤碼與排查
HTTP 狀態、錯誤碼含義、模型與素材常見錯誤、限流與排查步驟
錯誤碼與排查
排查時請先記錄:HTTP 狀態碼、平台傳回的請求識別碼、模型 ID、任務 ID、素材 ID 與原始錯誤碼。
不要記錄 API Key、真人工作階段 Token 或完整的素材下載位址;提交給平台支援前請先去識別化。
HTTP 狀態含義
| 狀態 | 含義 | 處理 |
|---|---|---|
200 | 請求成功(非同步任務的中間狀態也是 200) | 讀取回應內容中的狀態欄位 |
400 | 參數錯誤、請求內容格式錯誤、缺少 model | 依 error.message 或 msg 修正請求 |
401 | API keys 缺少、錯誤或已失效 | 檢查 Authorization 與 Key 狀態 |
403 | 沒有權限(例如存取其他帳號的素材) | 確認資源隸屬於目前帳號 |
404 | 資源不存在、不屬於目前帳號,或方法不相符 | 核對 ID;若路徑正確,再確認 HTTP 方法 |
429 | 請求過於頻繁 | 退避後重試,不要並行重試 |
500 | 平台內部錯誤 | 記錄請求識別碼後重試;持續失敗請聯絡支援 |
502 | 素材處理失敗或相依服務異常 | 稍後重試;持續失敗請聯絡支援 |
404 有三種成因,不要一律當成「ID 寫錯了」
這是排查時最容易誤判的一點:
| 情況 | 實測表現 |
|---|---|
| 資源不存在 / 不屬於目前帳號 | GET /api/v1/materials/assets/<不存在> → 404 |
對僅支援 POST 的路徑送出 GET | GET /v1/chat/completions → 404;GET /v1/images/generations → 404 |
| 路徑拼寫錯誤 | 404 |
收到 404 時,請先確認路徑與方法是否相符,再懷疑 ID。
查不到影片任務時傳回 400,不是 404
這一點與其他介面不一致,需要特別注意:
| 請求 | 實測狀態 | 回應內容 |
|---|---|---|
GET /v1/video/generations/<不存在> | 400 | {"code":"task_not_exist","message":"task_not_exist","data":null} |
GET /v1/videos/<不存在> | 400 | 同上 |
GET /api/v1/materials/assets/<不存在> | 404 | {"code":404,"data":null,"msg":"素材不存在或无权访问"} |
影片任務查詢會以 400 + 頂層 {code, message, data} 結構傳回,
既不是 404,也不是下文所述的 error 物件結構。
錯誤回應有三種結構
1. 模型 / 圖片 / 影片生成介面 —— error 物件
失敗時傳回 HTTP 非 2xx,並附帶一個 error 物件:
{
"error": {
"code": "invalid_parameter",
"message": "请求参数不符合所选模型要求",
"type": "invalid_request_error",
"param": "size"
}
}| 欄位 | 說明 |
|---|---|
code | 錯誤碼,可能為空字串(見下文) |
message | 可讀的原因,通常包含 request id |
type | 錯誤類型識別。驗證失敗、模型不存在、請求內容不合法,實測皆為 new_api_error |
param | 僅在參數類錯誤時出現,指出是哪個欄位 |
code可能是空字串。 實測:驗證失敗與請求內容 JSON 無法解析時,code都是""。 不要用code是否為空來判斷「是不是錯誤」,應以 HTTP 狀態碼為準,並優先讀取message。
type不是穩定的分類欄位。 需要分類時請讀取code,不要依賴type的取值。
2. 素材庫介面 —— 頂層 code
傳回 HTTP 非 2xx,code 與 HTTP 狀態一致:
{ "code": 404, "data": null, "msg": "素材不存在或无权访问" }3. 影片任務查詢 —— 頂層 code 字串
{ "code": "task_not_exist", "message": "task_not_exist", "data": null }請注意這裡的 code 是字串 task_not_exist,不是數字。
request id:排查問題的關鍵識別碼
平台會把 request id 直接寫在 error.message 裡,不需要到 header 裡尋找:
"message": "Invalid token (request id: 202609221135501066578648268d9d6uXuM5QgH)"一行指令即可取出:
curl -s "$LOCOPAL_BASE_URL/v1/models" \
-H "Authorization: Bearer sk-invalid" \
| grep -oE 'request id: [A-Za-z0-9]+'提交工單時附上這個 request id,可以大幅縮短定位時間。
驗證失敗
API keys 缺少、錯誤或已失效時,所有介面都會傳回 HTTP 401 與:
{
"error": {
"code": "",
"message": "Invalid token (request id: ...)",
"type": "new_api_error"
}
}請注意 code 是空字串——這正是上文提醒「不要依賴 code」的原因。
模型與生成錯誤
| 錯誤碼 / 提示 | 原因 | 處理 |
|---|---|---|
Model name not specified | 請求內容缺少 model 欄位 | 補上來自 /v1/models 的模型 ID |
model_not_found | 模型 ID 不存在,或目前的 Key / 分組沒有該模型 | 重新查詢 /v1/models 並使用傳回的 id |
No available channel | 目前分組沒有可用的通道 | 改用同類模型或聯絡平台支援 |
invalid_parameter | 參數組合不受目前模型支援 | 依 param 欄位調整尺寸、比例、時長等 |
unknown_parameter | 目前模型 / 通道不認識請求欄位(例如圖片介面的 response_format) | 依 param 刪除不受支援的欄位,使用模型的預設行為 |
InvalidParameter / upstream_error | 上游模型拒絕參數(例如圖片最小像素數不符) | 讀取 message 調整尺寸或參數 |
credit_balance_exhausted / insufficient_quota | 目前上游通道沒有可用餘額 | 改用同類模型 / 通道,或聯絡平台支援補充通道餘額 |
ResourceDownloadFailed | 參考圖片 / 影片位址無法直接下載 | 使用可公開存取的 HTTPS 位址,或改用素材庫 asset:// |
task_not_exist | 查詢的任務 ID 不存在或不屬於目前帳號 | 核對任務 ID 與建立任務時的帳號 |
video_generation_failed | 影片任務已受理,但提交上游、素材處理、審核或生成階段最終失敗 | 讀取同一回應中的 error.message;保留任務 ID,修正素材或參數後由使用者主動重新提交 |
| 目前模型不支援真人素材庫 | 真人素材被提交到沒有該能力的模型 | 改用支援真人素材庫的模型,不要改用一般圖片 URL 繞過 |
insufficient_user_quota | 帳戶餘額或目前 API Key 額度不足以涵蓋本次預估消耗 | 依錯誤中的「本次預計需要 / 目前可用」儲值或調整參數後重試;此時不會建立任務 |
缺少提示词:请在 prompt 或 content 的 text 元素中提供文本描述 | 影片任務沒有文字描述 | 補上 prompt 或 content 中的 text 元素 |
content[0].role 不支持 ... | 參考素材角色不在允許清單中 | 改用 reference_image、first_frame、last_frame、reference_video、reference_audio |
素材库中找不到素材 ... | asset:// 素材不存在或不屬於目前帳號 | 先提交素材並等待狀態變為可用,或核對帳號 |
task_concurrency_exceeded | 目前帳號或平台同時在處理的生成任務已達並行上限(HTTP 429) | 依提示中的「目前 N 個 / 上限 M」等待既有任務完成後再提交;不要連續重試 |
素材庫錯誤
| HTTP | 提示 | 原因 | 處理 |
|---|---|---|---|
400 | 请求体必须是 JSON 对象 | 請求內容不是合法的 JSON | 修正請求內容 |
400 | type 只能是 virtual 或 real | type 取值錯誤 | 修正 type |
400 | 素材分组名称不能为空 / 不能超过 64 个字符 | 名稱缺少或過長 | 修正名稱 |
400 | 素材分组说明不能超过 300 个字符 | 說明過長 | 縮短說明 |
400 | 缺少 group_id | 提交素材時未提供分組 | 補上 group_id |
400 | image_url 必须是可公开下载的 http(s) 地址… | 位址不是 http(s) 或不完整 | 改用公開網路的 http(s) 位址,或改用 data_url |
400 | image_url 与 data_url 只能提交一个 | 同時提交或兩者皆未提交 | 只保留一個欄位 |
400 | data_url 必须是 data:image/...;base64,... 格式 / 图片数据无效或超过 20MB | 上傳資料格式錯誤或過大 | 修正資料或改用 image_url |
404 | 素材不存在或无权访问 | 素材 ID 錯誤、已刪除或不屬於目前帳號 | 使用提交素材時傳回的 asset_id |
404 | 素材分组不存在或无权访问 / 素材分组不存在或不属于当前账号 | 分組 ID 錯誤或不屬於目前帳號 | 使用本人帳號下的分組 ID |
404 | 素材分组不存在或不是虚拟素材分组 | 向 real 分組提交圖片 | 圖片只能提交到 virtual 分組 |
429 | 請求過於頻繁 | 輪詢過快或並行過高 | 依提示退避重試 |
500 / 502 / 503 | 素材服务暂不可用 | 素材服務異常或能力未開通 | 保留請求資訊後重試;持續失敗請聯絡支援 |
素材審核未完成不是錯誤:查詢會傳回 200,status 為 Processing,繼續輪詢同一個素材 ID 即可。
推理模型輸出為空也不是 HTTP 錯誤:如果傳回 200、finish_reason 為 length,且 usage.completion_tokens_details.reasoning_tokens 已佔滿輸出上限,應提高輸出額度或改用非推理模型。
真人授權錯誤
| 提示 | 原因 | 處理 |
|---|---|---|
| 授權工作階段不存在或無權存取 | 工作階段過期、已使用或屬於其他使用者 | 由目前使用者重新建立 QR Code |
| 授權尚未完成 | 使用者尚未完成手機端採集 | 保留 QR Code,完成後再解析 |
| 該真人素材已綁定其他使用者 | 同一真人分組不能跨帳號重複使用 | 使用原本綁定的帳號,或由本人重新授權 |
| 素材服務暫時無法使用 | 授權通道目前無法使用 | 記錄請求時間後聯絡平台支援;不要用一般圖片上傳取代真人採集 |
限流與重試
429表示請求過於頻繁,請依提示退避重試,不要並行重試;- 素材狀態建議每 5~10 秒查詢一次,影片任務建議每 5~15 秒一次;
- 僅對
429與短暫的5xx重試;400/401/403/404請直接修正請求; - 重試前先依任務 ID / 素材 ID 查詢,避免重複建立與重複計費。
快速自我檢查
Authorization是否為Bearer <API Key>,Key 是否仍在啟用狀態;- 請求網域是否為目前主控台指定的位址(預設
https://locopalai.com,海外模型可能為https://us-api.locopalai.com); model是否來自/v1/models的data[].id;- 素材
status是否已經是Active; - 參考圖片 / 影片位址是否為公開網路可直接存取的
http(s)位址,且不依賴 Cookie 或 Referer; - 同一個任務 / 素材是否重複提交過。
提交支援時請附上
- 請求時間與介面路徑;
- HTTP 狀態碼與完整回應內容(API Key 請打馬賽克);
- 平台傳回的請求識別碼、任務 ID 或素材 ID;
- 涉及的模型 ID 與參數;
- 可重現的最小請求範例。
