HiAPI
ブログ

チュートリアル

HiAPI コンテンツポリシー拒否(CONTENT_POLICY_VIOLATION):原因と修正

このエラーコードの意味、どこで確認できるか、そしてコンテンツをどう修正すれば審査を通せるか

Oct 22, 2026
HiAPI コンテンツポリシー拒否(CONTENT_POLICY_VIOLATION):原因と修正

HiAPI の統一非同期タスクインターフェースで生成タスクを送信する際、プロンプトや入力素材が安全審査を通過できなかった場合、業務エラーコード CONTENT_POLICY_VIOLATION が返されます。公式ドキュメントではその意味を「コンテンツが安全審査を通過しなかった」と説明しており、対処の推奨は「プロンプトまたは入力内容を調整して再試行」です。これは認証の問題でも、残高やパラメータの問題でもありません——コンテンツ自体がブロックされたのです。この記事では、これがどのような形で現れるか、どこで確認できるか、そしてどう修正するかを説明します。

一、問題の現象

コンテンツポリシー拒否には 2 つの出現形態があり、ブロックが送信段階で発生するか、タスク実行段階で発生するかによって異なります。CONTENT_POLICY_VIOLATION は統一非同期インターフェースの業務エラーコードであり、タスク作成時の同期的な error_code、およびタスク終態の data.error.code と同一の列挙体を共有しています(これは「作成時のみ」とはマークされていないため、両方に出現する可能性があります)。

形態 A:作成時に同期的に拒否される。 POST /v1/tasks を呼び出した時点で内容が審査を通らず、失敗エンベロープが返され、error_code が CONTENT_POLICY_VIOLATION になります。エンベロープの形状は次のとおりです(公式ドキュメントの失敗レスポンスに準拠、code は HTTP ステータス、error_code は業務コード):

{
  "code": 400,
  "message": "...",
  "data": null,
  "error_code": "CONTENT_POLICY_VIOLATION"
}

この場合、taskIdは取得できません——タスクがそもそも作成されていないからです。

形態 B:タスク実行後に終態が fail になる。 すでに taskId を取得し、タスクが実行された後に不合規と判定されるケースです。このとき GET /v1/tasks/{taskId} をポーリングすると、HTTP は依然として 200 です(エンベロープの message は success ですらあり、それは「今回のクエリが成功した」ことだけを意味し、あなたのタスクの成功を意味しません)。本当の失敗は data の中に隠れています:

{
  "code": 200,
  "data": {
    "taskId": "tk-hiapi-...",
    "status": "fail",
    "error": { "code": "CONTENT_POLICY_VIOLATION", "message": "..." }
  },
  "message": "success"
}

一言で言う位置特定の法則:HTTP ステータスコードだけを見ないこと。3 層で読みます——HTTP ステータス(リクエストが受け付けられたか)→ 業務エラーコード(error_code / data.error.code、なぜ拒否されたか)→ タスク状態(data.status がどの段階まで進んだか)。code フィールド(同期エンベロープの error_code または終態の data.error.code)が CONTENT_POLICY_VIOLATION であれば、それはコンテンツ審査によるブロックであり、タイムアウトや接続断、パラメータ誤りとはまったく別物です。message の文言はシナリオによって多少異なる場合がありますが、安定して判定できるシグナルはこのコードであり、message のテキストを正規表現でマッチさせないでください。

Playground / モデルページの「オンライン試用」で同種のブロックが発生した場合、ページはコードを解析させるのではなく、「安全審査を通過しませんでした」というインラインのヒントを直接表示します——これはウェブ試用(同期)経路と、コードで呼び出す API 経路の表示上の違いです。

二、よくある原因(発生確率の高い順)

  1. プロンプトに許可されない内容が含まれている。 最も一般的です。NSFW / 成人向け、露骨な暴力・流血などの内容は安全審査でブロックされます。多くのモデル自体が明確にNSFW コンテンツをサポートしていないことに注意してください。一部のモデル(GPT Image 2 など)はモデル提供元のコンテンツポリシー(OpenAI コンテンツポリシーなど)にも従います。
  2. 入力画像 / 参照素材が審査を通過していない。 画像から画像(i2i)、参照画像から動画といったタスクでは、審査されるのはプロンプトだけではありません——アップロードまたは参照した画像、参照素材も同様に審査を通過する必要があります。プロンプトがクリーンでも入力画像が不合規であれば、やはり CONTENT_POLICY_VIOLATION になります。
  3. モデルを変えたらより厳しいポリシーに引っかかった。 モデルによってコンテンツポリシーの寬嚴は異なります。同じプロンプトが A モデルでは通るが B モデルでは拒否されるのは正常です。特に写実的な人物写真、著名人の肖像、ブランド / 著作権素材といった敏感な方向では顕著です。
  4. 拒否を別のエラーと誤認している。 本当のコンテンツブロックを「サービス不調」と誤解して、そのまま何度も再試行してしまう——同じ内容は何度再試行しても通りません。待つだけ無駄です。

三、修正手順

  1. まずエラーコードを確認する。 同期レスポンスの error_code またはタスク終態の data.error.code から正確なコードを読み取ります。CONTENT_POLICY_VIOLATION であることを確認し、TASK_FAILED(汎用失敗、多くは一時的な問題や入力画像リンク到達不能)や INVALID_REQUEST(リクエストボディが不正)ではないことを確かめます。コードが違えば、修正方法もまったく異なります。
  2. プロンプトを項目ごとに整理する。 NSFW / 成人向け、露骨な暴力などの表現を除去し、合规な表現に置き換えてから再送信します。変更は的を絞ったものであるべきで、適当に単語を削るのではありません。
  3. すべての入力素材を確認する。 画像から画像 / 参照生成の場合は、審査に触れる可能性のある入力画像、参照画像を差し替えます——それらもプロンプトと同様に審査を通過する必要があります。
  4. 対象モデルのポリシーを確認する。 そのモデルのモデルページで明記されている制限を確認します(例:GPT Image 2 モデルページ には「NSFW コンテンツをサポートせず、OpenAI コンテンツポリシーに従う」と明記されています)。モデルを変更する必要がある場合は、モデルマーケットで各モデルの能力とポリシーを比較できます。
  5. 修正してから再試行する。 ドキュメントにおけるこのコードの対処推奨は「プロンプトまたは入力内容を調整して再試行」です。注意:失敗したタスクは課金されません——作成時に確保された枠は、タスクが失敗終態に入った後に全額返還されるため、審査でブロックされたタスク自体には費用がかかりません。ただし、同じ違反内容をそのまま繰り返し送信しても通過しません。まず修正してから送信してください。

四、最小検証例

まず「自分の key / 接続に問題があるのではないか」を排除したい場合は、明らかに合规なプロンプトで POST /v1/tasks を一度叩き、正常に taskId を取得できるか確認します(model は裸の id gpt-image-2 を使用):

curl -s -X POST "https://api.hiapi.ai/v1/tasks" \
  -H "Authorization: Bearer $HIAPI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-image-2",
    "input": { "prompt": "a cozy coffee shop storefront at sunrise, warm light" }
  }'
  • {"code":200,"data":{"taskId":"tk-hiapi-..."}} が返る → あなたの key と接続は正常です。先ほど拒否されたリクエストの問題はコンテンツにあります。第三節に戻ってプロンプト / 入力画像を整理してください。
  • HTTP 401 + {"error":{"code":"permission_denied",...}} が返る → 認証の問題(key が違う / Authorization: Bearer が付いていない)であり、コンテンツポリシーではありません。
  • 合规なプロンプトでも error_code: "CONTENT_POLICY_VIOLATION" が返る → 比較的まれです。このプロンプトに見落としている敏感な単語がないか見直すか、より中立的な表現に変えて再試行してください。

五、関連資料

六、FAQ

Q:CONTENT_POLICY_VIOLATION と TASK_FAILED の違いは何ですか? A:前者はコンテンツが安全審査を通過しなかったことで、修正方法はプロンプト / 入力素材を変更することです。後者は汎用失敗で、最も一般的な原因は入力画像 / 動画 URL の到達不能や一時的な変動であり、修正方法は URL の修正 / 再試行です。両者は異なる業務エラーコードであり、混同しないでください。error.code を読めば区別できます。

Q:タスクがコンテンツポリシーで拒否された場合、料金は発生しますか? A:発生しません。ドキュメントによると、タスクが失敗終態に入った後、作成時に確保された枠は全額返還されます。審査でブロックされたタスク自体には費用が発生しません。

Q:同じプロンプトなのに、ウェブの「オンライン試用」では明確な「審査を通過しませんでした」というヒントが表示され、API ではコードしか取得できないのはなぜですか? A:ウェブ試用は同期経路であり、審査結果をインラインのヒントとして直接表示します。API 経路では結果をレスポンスボディの error_code / data.error.code に格納し、あなたのコードがそれを読み取って分岐処理します。情報は一貫しており、表示方法が異なるだけです。

Q:プロンプトだけを変更し、入力画像はそのままにしたのに、なぜまだ拒否されるのですか? A:安全審査は入力素材を対象としており、プロンプトだけではありません。画像から画像 / 参照生成の場合は、審査に触れる可能性のある入力画像、参照画像も先に差し替えてください。

Q:HiAPI には公開の「コンテンツポリシー」ページがありますか? A:独立したコンテンツポリシーページはありません。各モデルのコンテンツ制限は対応するモデルページに記載されています(例:「NSFW コンテンツをサポートしない」)。プラットフォームレベルの規約は利用規約とプライバシーポリシーをご覧ください。

Q:繰り返し再試行すれば「偶然通る」ことはありますか? A:ありません。同じ違反内容は何度再試行しても通過せず、ポーリングを無駄に消費するだけです。まず第三節に従って内容を修正してから送信してください。

永続的なAIアーティファクトで開発を始める

APIキーを取得して、タスクベースの1つのAPIで画像・動画・音声モデルを呼び出せます。

APIドキュメントを読む