ガイド
エラーコードとトラブルシューティング
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 には 3 つの原因があり、一律に「ID の書き間違い」とみなさない
これは調査時にもっとも誤判定しやすい点です:
| 状況 | 実測時の挙動 |
|---|---|
| リソースが存在しない / 現在のアカウントに属さない | GET /api/v1/materials/assets/<不存在> → 404 |
POST のみをサポートするパスに GET を送信 | GET /v1/chat/completions → 404;GET /v1/images/generations → 404 |
| パスの綴り間違い | 404 |
404 を受け取ったら、まずパスとメソッドが一致しているかを確認し、その後に ID を疑ってください。
動画タスクが見つからない場合は 404 ではなく 400 を返す
ここは他のエンドポイントと一致しないため、特に注意が必要です:
| リクエスト | 実測ステータス | レスポンスボディ |
|---|---|---|
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 オブジェクト構造でもありません。
エラーレスポンスには 3 種類の構造がある
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)"1 行のコマンドで取り出せます:
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 只能提交一个 | 両方を送信、またはどちらも未送信 | フィールドを 1 つだけ残す |
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 コードを再作成する |
| 許諾がまだ完了していない | ユーザーがスマートフォン側での収集をまだ完了していない | QR コードを保持し、完了後に確定する |
| この実在人物素材は別のユーザーにバインド済み | 同じ実在人物グループはアカウントをまたいで再利用できない | 元のバインド先アカウントを使用するか、本人に再許諾してもらう |
| 素材サービスが一時的に利用不可 | 許諾チャネルが現在利用できない | リクエスト時刻を記録してプラットフォームサポートに連絡する。通常の画像アップロードで実在人物の収集を代替しない |
レート制限とリトライ
429はリクエストが過多であることを示します。メッセージに従ってバックオフしリトライし、並行リトライはしないでください。- 素材ステータスは 5~10 秒に 1 回、動画タスクは 5~15 秒に 1 回の照会を推奨します。
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 とパラメータ
- 再現可能な最小のリクエスト例
