GPT Imageモデル(gpt-image-2, gpt-image-2.5)を使用して一定量の画像を生成していると、いずれ「HTTP 400」という苛立たしいエラーに遭遇することになります。これは、リクエストが安全性システムによって拒否されたことを示すメッセージです。画像は生成されず、部分的な出力もなく、プロンプト自体は全く問題ないように見える場合でも発生します。
本ガイドでは、このエラーの正体、実際に何がトリガーとなるのか、そしてエラーを減らすためにプロンプトや参照画像をどのように調整すべきかを解説します。これは、TokenLabの画像APIにおける30日間の本番データ(2026年8月19日~9月18日)と、OpenAIの公式画像生成ドキュメントに基づいています。記載されている数値はプラットフォームの集計統計であり、顧客のコンテンツが再現されることはありません。
このエラーの正体
GPT Imageモデルは、すべてのプロンプト、入力画像、および生成された画像をプロバイダーのコンテンツポリシーに照らしてフィルタリングします。フィルターが作動すると、リクエストは400エラーで失敗し、その安定した識別子として以下のエラーコードが返されます:
{
"error": {
"type": "image_generation_user_error",
"code": "moderation_blocked",
"moderation_details": {
"moderation_stage": "input",
"categories": ["sexual"]
}
}
}
公式ドキュメントによると、moderation_detailsはオプションであり、意図的に大まかな情報となっています。moderation_stageはブロックが入力(input)によるものか、生成された画像(output)によるものかを示し、categoriesにはharassment(ハラスメント)、self-harm(自傷行為)、sexual(性的)、violence(暴力)といった広範な公開ラベルが含まれます。内部の分類スコアが公開されることはありません。
TokenLabでは、同じイベントが以下の2つの形式で表示されます:
- 同期呼び出し(
/v1/images/generations,/v1/images/edits)は、直ちにHTTP 400を返します。 - 非同期タスクは、「The request was rejected by the safety system.(リクエストは安全性システムによって拒否されました)」というメッセージとともに
failed状態に移行します。
いずれにせよ、運用上重要な事実が2つあります。第一に、モデレーションブロックは同じコンテンツに対しては決定的(deterministic)であるため、変更せずに再試行しても成功することはほぼありません。第二に、TokenLabではモデレーションでブロックされたタスクは失敗したタスクとして扱われ、事前に差し引かれたクォータは全額自動的に返金されます。ブロックされた生成に対して料金が発生することはありません。
30日間の本番データ
2026年8月19日から9月18日までの間、TokenLabにおけるGPT Imageタスクの約4.3%(およそ23件に1件)が、上位の安全性システムによって拒否されました。この分布はランダムではなく、ブロックされたリクエストはいくつかのパターンに集中しています:
| シグナル | ブロックされたタスク | その他の全タスク | 読み解き |
|---|---|---|---|
| プロンプトに未成年への言及(子供、キッズ、赤ちゃん、「7歳」など) | 79% | 33% | 最も強力な単一の予測因子 |
| フォトリアルな描写に関する文言(「フォトリアル」「実在の人間」「実写」) | 77% | 57% | 増幅因子(特に未成年の場合) |
| 性的なニュアンスを含む記述(ヌード、セクシー、ランジェリー、身体に焦点を当てた表現) | 43% | 17% | 強力な予測因子 |
| 一般的なアクション/暴力的な単語(バトル、剣、爆発) | ~50% | ~50% | 単独では予測価値なし |
同期間の調査から得られたその他の3つの知見:
- 参照画像はリスクを高める。 入力/参照画像を含むタスクのブロック率は8.4%であり、テキストのみの生成の3.7%と比較して2倍以上でした。画像はテキストと同程度に厳格にモデレーションされます。
- 長いプロンプトほど失敗しやすい。 ブロックされたプロンプトの平均文字数は約3,600文字で、半数以上が2,000文字を超えていました。節が増えるほど、分類器が反応する表面積が増えることになります。
- 再試行では回復しない。 期間中にブロックされたすべてのタスクは最終的に失敗状態となり、同じ入力を再送信して成功したケースはありませんでした。また、すべて自動的に返金されました。
私たちが観測した中で最もブロック率が高かったワークフローは、未成年のフォトリアルなキャラクターデザインシートでした。「キャスティングリファレンス」スタイルのプロンプトで、子供のキャラクターを超リアルなレンダリング、正確な身体比率、服装の注釈付きで記述するものです。未成年に関連する語彙とフォトリアルなレンダリングを組み合わせたプロンプトは約9.5%の確率でブロックされ、ベースラインの2.2倍に達しました。
ブロックを引き起こす5つのパターン
ブロックされたデータを分析すると、ほぼすべての拒否が以下のいずれかのカテゴリーに分類されます:
- 未成年のフォトリアルな描写。 「スタジオで撮影された実在の人間」「超フォトリアル」「CGIやイラストではない」としてレンダリングされた子供や赤ちゃんのキャラクター。未成年とフォトリアリズムの組み合わせは、画像モデレーションにおいて最も厳重に保護されている境界線であり、意図が純粋なキャラクターシートであっても作動します。
- 未成年に関する服装や身体に焦点を当てた表現。 「服を着ていない、鎖骨から上のクローズアップ」(単なるポートレートのトリミングのつもり)や、子供キャラクターの頭からつま先までの詳細な身体比率の測定値など。個々には無害でも、集約されると未成年の身体に焦点を当てた記述として読み取られます。
- 成人キャラクターの性的な記述。 ポーズ、肌、下着に焦点を当てた語彙(「ランジェリー」「ヌード」「誘惑的なポーズ」)は、それ以外が健全な構成であってもブロック対象となります。
- グロテスクな解剖学的描写。 腐敗した肉、露出した臓器、開いた傷、寄生虫などを解剖学的な詳細さで記述するホラーやダークファンタジーのプロンプト。
- 実在の人物の参照画像。 未成年の実写写真、肌の露出が多い画像、またはセレブリティに似た顔を編集入力として使用する場合。
2つの増幅因子が上記すべてをトリガーしやすくします:非常に長いプロンプト(テキストが長いほど、悪い組み合わせが発生する可能性が高まる)とネガティブワードリストです。「ヌードなし、性的コンテンツなし、グロなし」といった一文は分類器を安心させるものではなく、避けたい概念を繰り返して入力に追加しているだけです。何をしてほしいかを記述し、何をしてほしくないかは記述しないでください。
プロンプト調整のプレイブック
データに基づいた書き換えのヒントを以下に示します。(例は説明用であり、実際の顧客トラフィックではありません。)
1. 未成年とフォトリアリズムを分ける
物語、コミック、ゲームで子供のキャラクターが必要な場合は、明確に様式化された媒体でレンダリングしてください:
修正前: "7歳の少女の超フォトリアルなキャスティング写真、スタジオで撮影された実在の人間、詳細な身体比率、鎖骨から上の服を着ていない顔のクローズアップ..."
修正後: "明代の衣装を着た少女の絵本風水彩画、肩から上のポートレート、丸顔、布のリボンで結ばれたツインテール、優しい表情、無地の白い背景"
媒体を変更し(水彩画、2Dアニメーション、3Dカートゥーン、絵本スタイル)、 「実在の人間/撮影」というフレーミングを削除し、身体測定値は完全に省きます。服装を記述する必要がある場合は、何を着ていないかではなく、何を着ているか(「丸襟の布製ジャケットを着ている」)を記述してください。
2. ネガティブワードリストを削除する
「ヌードなし、血なし、テキストなし、透かしなし」を、「完全に服を着ている」「クリーンな構成」「シンプルな背景」といった肯定的な表現に置き換えてください。制限されたカテゴリーを名指ししないネガティブワードのみを残してください(例:「透かしなし」は問題ありませんが、「ヌードなし」は逆効果です)。
3. プロンプトを短縮する
マルチパネルのキャラクターシートを生成する場合、すべてのパネル説明で同じスタイルブロックを繰り返さないでください。共通のスタイル文を1つと、パネルごとの詳細を記述することで、偶発的なトリガーの組み合わせが発生する表面積のしきい値以下に抑えることができます。
4. グロテスクな表現を解剖学ではなく雰囲気で緩和する
修正前: "腐敗した体、露出した頭蓋骨、肉、膿疱と寄生虫..."
修正後: "半分は穏やかで母性的、もう半分は影と霧の中に溶け込んでいる、解剖学的な詳細ではなくシルエットと照明によって示唆される腐敗"
ダークファンタジーは、ホラーが組織レベルの記述ではなく、ムード、照明、シルエットによって表現される場合にモデレーションを通過します。
5. 成人向けコンテンツの近接表現を中和する
成人キャラクターの場合、身体や下着に焦点を当てた言葉をファッションやムードに関する言葉に置き換えてください。「ランジェリー」の代わりに「イブニングガウン」、「誘惑的なポーズ」の代わりに「自信に満ちたコントラポスト」などを使用します。
参照画像の衛生管理
画像入力もモデレーションの対象であり、データ上ではブロック率を2倍以上に高めるため、参照画像もプロンプトの一部として扱ってください:
- 未成年には様式化された参照を優先する。 子供キャラクターのイラストや3Dレンダリングは、実写写真よりもはるかに安全な入力であり、通常、キャラクターの一貫性を保つためにも同様に機能します。
- 必要な部分だけをトリミングする。 アイデンティティの一貫性のために顔が必要な場合は、全身のビーチ写真ではなく、顔のクロップ画像をアップロードしてください。肌の露出やコンテキストが少ないほど、分類器の表面積は小さくなります。
- オーバーレイテキストや透かしを削除する。 参照画像上のキャプション、ミームテキスト、透かし文字列は入力テキストとして読み取られ、意図せずトリガーワードが含まれる可能性があります。
- 実在のセレブリティの肖像を避ける。 参照画像としても、「<俳優>のスタイルで」というプロンプトテキストとしても使用しないでください。
モデレーションパラメーター
GPT Imageモデルは、公式ドキュメントに従い、moderationパラメーターで2つの値を受け付けます:
auto(デフォルト):年齢不適切なコンテンツの可能性を制限する標準的なフィルタリング。low:制限の少ないフィルタリング。
TokenLabは、/v1/images/generationsと/v1/images/editsの両方でこのパラメーターを渡します:
curl https://api.tokenlab.sh/v1/images/generations \
-H "Authorization: Bearer $TOKENLAB_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2",
"prompt": "明代の衣装を着た少女の絵本風水彩画、肩から上のポートレート",
"size": "1024x1024",
"moderation": "low"
}'
コンテンツが明らかに無害であるにもかかわらずフラグが立てられる場合は、lowを使用してください。様式化されたイラスト作品などが典型的なケースです。2つの注意点:lowはoffではありません(CSAMなどの違法カテゴリーは常にブロックされます)。また、これは保証ではなく調整ダイヤルであるため、まずはプロンプトを修正してからパラメーターを検討してください。
コードでのブロック処理
公式ガイダンスでは、image_generation_user_errorによる失敗はユーザーが修正可能であり、リクエストを変更せずに再試行すべきではないと明記されています。私たちのデータもこれを裏付けており、30日間でブロックされたタスクのうち、変更せずに再試行して成功したものはありませんでした。適切な処理方法は以下の通りです:
- メッセージテキストではなく、
error.codeで判別する。moderation_blocked(および一般的なimage_generation_user_error)のみが「入力を修正せよ」を意味します。レート制限や5xxエラーは再試行可能です。 - ステージを確認する。
moderation_stage: "input"はプロンプトの書き換えや参照画像の変更を意味します。"output"は生成された画像自体がフラグ立てされたことを意味するため、プロンプトを少し調整してリスクを下げて再生成することで解決することが多いです。 - エンドユーザーへのメッセージは汎用的なものにする。 (「コンテンツの安全性要件により、このリクエストは完了できませんでした」)とし、デバッグやサポートのために
moderation_detailsとリクエストIDをログに記録してください。 - ループさせない。 一意の入力に対して1回モデレーションブロックが発生したら回路を遮断してください。同一コンテンツを再送信しても、TokenLabは返金しますが、レイテンシとデバッグ時間を浪費するだけです。
チェックリスト
| 状況 | 考えられるトリガー | 修正方法 |
|---|---|---|
| 子供のキャラクターデザインシート | 未成年 × フォトリアリズム | 様式化された媒体、身体測定値を削除、肯定的な服装表現 |
| フォトリアルな成人ポートレートがブロック | 性的な記述 | ファッション/ムードに関する表現に変更、moderation="low"を検討 |
| ダークファンタジー/ホラークリーチャー | グロテスクな解剖学的描写 | 組織の詳細ではなく、雰囲気とシルエットで表現 |
| 参照写真を使用した編集がブロック | 実在の人物/肌の露出が多い入力画像 | トリミングを厳密にする、様式化された参照を使用、オーバーレイテキストを削除 |
| 長いマルチパネルプロンプトがブロック | プロンプトの表面積 + ネガティブリスト | 定型文の重複を削除、ネガティブワードリストを削除 |
| 無害な様式化された作品がフラグ立て | 分類器の保守性 | moderation="low"を使用 |
FAQ
ブロックされた生成に対して料金は発生しますか? いいえ。TokenLabでは、モデレーションでブロックされたタスクは失敗となり、事前に差し引かれたクォータは全額自動的に返金されます。
同じプロンプトを再試行すると効果はありますか? いいえ。30日間のデータにおいて、変更せずに再試行して成功したブロックタスクは1件もありません。まずは入力を変更してください。
moderation="low"は安全性フィルタリングを無効にしますか? いいえ。制限を緩和するだけです。違法なコンテンツカテゴリーは、設定に関わらずブロックされます。
参照画像も本当にモデレーションされますか? はい。プロンプトとすべての入力画像の両方がフィルタリングされます。データ上、参照画像を含むタスクはテキストのみのタスクの2倍以上の確率でブロックされました。
どのルールが作動したか正確にわかりますか? moderation_details.categoriesレベルの粗い情報のみであり、上位システムが含まれている場合のみです。プロバイダーは意図的に分類器の内部を公開していません。
制限事項
上記の統計はTokenLabの本番トラフィックからの30日間の集計であり、傾向を示すものであり保証ではありません。モデレーション分類器は時間の経過とともに変化し、上位システムの更新後に同じプロンプトが異なる扱いを受ける可能性があります。書き換え例は説明用のテンプレートであり、顧客データではありません。バッチ実行の前に、必ず現在の動作に対して小規模なテストを行ってください。
これらのモデルを試すには、画像モデルカタログを参照し、タスクのライフサイクル処理については非同期画像生成ガイドを確認してください。現在のリクエスト形式についてはdocs.tokenlab.shをご覧ください。



