作者注:图像接口返回 HTTP 451、错误码 image_safety 时,被过滤的是生成出来的那张图,不是 Key 没通过。本文按 API易 文档的说明与复测,讲清它和 401、429 的区别,以及应该改什么、不该怎么重试。
调图像接口时,突然收到 HTTP 451,error.code 是 image_safety。很多人的第一反应是 Key 失效、余额不够,或者提示词里有敏感词,于是换 Key、充值、反复重试,结果一样失败。本文要说的是 451 image_safety 拦的是生成出来的那张图,审核发生在出图之后,所以排查方向应该放在画面描述上,而不是账号上。
这不是一篇泛泛的“内容安全科普”,下面的内容来自 API易 文档对 451 的说明和其中已经公开的匿名化复测,本文不另编测试数据。
核心价值:读完本文,你能在 1 分钟内把 451 和 401、429 分开,并按“单变量修改提示词”的方法让请求重新出图。

生图返回 451 image_safety 核心要点
先看最重要的几条结论。它们都来自错误信息本身和文档描述,不需要猜。
| 要点 | 说明 | 对你的价值 |
|---|---|---|
| 审核对象是输出图 | message 写的是 The generated image was filtered by the safety policy | 不用再怀疑 Key 和余额 |
| 属于后置审核 | 接口可能先生成图片,再对输出做安全审核,不通过就不返回 | 理解为什么“提示词看起来没问题”也会被拦 |
| 不等于输入违规 | 后置审核失败不代表提示词或参考图本身有明确违规词 | 不必大面积删词或更换参考图 |
| 改法是改画面 | 把衣着、构图等画面要素写清楚,比追加否定句更有效 | 有针对性地改,少走弯路 |
| 不要原样重试 | 原组合连续失败时,重试大概率还是 451 | 节省时间和调用成本 |
先对错误码:451 image_safety 与 401、429 的区别
拿到报错后的第一步是看状态码和 error.code,而不是先改代码。以下是 API易 文档对 451 的说明(apiyi.com 文档中心的 FAQ 与动态里都有收录):响应为 HTTP 451,error.code 为 image_safety,message 为 The generated image was filtered by the safety policy.。关键词是 generated image,意思是“已经生成出来的那张图”被安全策略过滤了。
这和鉴权、限流属于完全不同的层面。401 一般表示请求在进入模型之前就没通过身份校验,429 表示请求过于频繁或通道繁忙,余额类错误则与计费有关。三者都和“画了什么”无关,而 451 恰恰只和“画了什么”有关。
| 错误 | 常见含义 | 发生阶段 | 正确处理 | 是否适合原样重试 |
|---|---|---|---|---|
HTTP 451 image_safety |
生成图未通过输出侧安全审核 | 出图之后 | 改画面描述,单变量排查 | 否,原组合连续失败不要原样重试 |
| HTTP 401 | Key 无效或未正确传入 | 请求入口 | 检查 Key 和请求头 | 否,Key 不对重试没有意义 |
| HTTP 429 | 限流或通道繁忙 | 请求入口或排队阶段 | 退避后重试,必要时换通道 | 是,按退避策略重试 |
| 余额类错误 | 额度不足 | 计费校验 | 充值或调整额度 | 否 |
特别要注意:451 和 401 不能共用一套重试逻辑。401 要去修 Key 配置,451 要去改提示词。把两者都放进“失败就重试 3 次”的通用分支里,只会让排查更乱。
为什么 451 image_safety 会在出图之后才出现
文档把这种机制称为后置审核,也叫输出侧审核。流程可以简单理解为:请求通过鉴权,模型按提示词和参考图生成图片,系统再对这张图做一次安全检查,检查不通过就不返回图片,直接给出 451。
所以你可能遇到“提示词里一个敏感词都没有,也被拦了”的情况。原因不在单个词,而在于多个条件组合后,模型实际画出来的画面触发了过滤。理解这一点后,排查思路就会从“找违禁词”变成“控制最终画面”。

451 image_safety 文档复测解读
API易 文档给出了一组匿名化复测,模型为 gpt-image-2.5-sunburst-vip。场景是人物参考图加定妆需求,包含面部特写加全身正面、侧面、背面视图,白色背景。以下数据均为文档复测,本文只做解读。
| 文档复测组合 | 结果 | 耗时 | 说明 |
|---|---|---|---|
| 原提示词 + 原参考图 | 3/3 失败 | 81.8–95.9 秒 | 基线组,稳定 451 |
| 同一参考图,改为中性日常服装半身像 | 1/1 成功 | 35.7 秒 | 去掉全身多视图后通过 |
| 原提示词,去掉参考图,改用文生图端点 | 1/1 成功 | 29.1 秒 | 没有参考图人物特征后通过 |
| 只追加“衣着完整、不透明、不做性感化” | 1/1 仍 451 | 216.8 秒 | 否定句无效 |
| 明确成年人物、高领长袖、长裤、运动鞋 | 3/3 成功 | 65.1–238.6 秒 | 正向写清衣着后稳定通过 |
从文档复测看 451 image_safety 的触发方式
这组复测里最值得关注的是第二、三组:只要拆开“参考图人物特征”和“全身多视图”中的任意一方,请求就能出图。文档据此得出的结论是,更支持“参考图人物特征与全身多视图绑定在一起时,生成画面触发了过滤”这一解释。
文档同样明确了不能下的结论:不能据此说参考图违规,也不能说某个单词就是触发词。这一点很重要。很多开发者看到 451 就去换参考图或者大面积删词,结果把真正需要的画面信息也删掉了。
为什么否定句改不好 451 image_safety
第四组只是追加了“衣着完整、不透明、不做性感化”,仍然 451。第五组改成正向的具体描述:明确成年人物、高领长袖、长裤、运动鞋,3 次全部成功。
原因并不复杂。否定句只告诉模型“不要什么”,没有告诉它“画什么”,最终画面仍然不确定。正向描述把上衣、下装、鞋子都定死,生成结果更可控,输出侧审核自然更容易通过。
关于耗时,文档特别提醒:耗时只能作为辅助参考,不能单独用来判断审核发生在哪一层。复测中成功和失败的耗时区间互有重叠,所以不要写“超过 X 秒就是被审核拦了”这类判断逻辑。

对比说明:上表与对比图的数据均来自 API易 文档复测,原文可在 apiyi.com 文档中心的图片输出安全审核 FAQ 中查阅,便于你与自己的报错对照。
生图返回 451 image_safety 快速上手排查
再对模型 ID:确认你调用的 gpt-image 型号
确认是 451 之后,第二步是核对模型 ID。文档复测使用的是 gpt-image-2.5-sunburst-vip,而你调用的 gpt-image 系列具体有哪些型号、各自叫什么,请以 API易 型号列表为准,可在 apiyi.com 控制台的模型列表中核对。
核对模型 ID 的目的有两个。其一,排查过程中必须保持模型不变,否则无法判断是哪个变量起了作用。其二,避免把“模型名写错”这类问题误判成审核问题,模型名错误通常会返回别的错误,不会是 image_safety。
451 image_safety 排查时的请求参数
本文不放大段代码,只列出排查时需要固定的参数。接口为 OpenAI 兼容格式,base_url 填 https://api.apiyi.com/v1,SDK 里的 api_key 换成你自己的 Key 即可。
| 参数 | 示例值 | 排查时是否允许修改 |
|---|---|---|
base_url |
https://api.apiyi.com/v1 |
不改 |
model |
以 API易 型号列表为准,如文档复测用的 gpt-image-2.5-sunburst-vip |
不改 |
| 端点 | 图像编辑(带参考图)或文生图 | 不改,除非专门测试参考图影响 |
| 参考图 | 原参考图 | 不改 |
| 尺寸、数量等参数 | 保持原值 | 不改 |
prompt |
原提示词 | 每次只改一个变量 |
在代码层面,建议单独为 451 加一个分支:读取响应状态码和 error.code,如果是 451 且为 image_safety,就记录当次提示词并停止自动重试,转入人工或规则化改写流程。401 走 Key 检查分支,429 走退避重试分支,三条路径互不混用。
451 image_safety 单变量排查步骤
文档给出的排查方法可以整理成下面的顺序:
- 固定其他条件:模型、端点、参考图、参数全部保持不变,只动提示词。
- 每次只改一个变量:比如只改服装,或者只改视图数量,不要一次改三处。
- 用正向描述替代否定句:把上衣、下装、鞋子写清楚,例如“高领长袖、长裤、运动鞋”,必要时明确“成年人物”。
- 回归 2 到 3 次:单次通过不代表稳定,文档复测里稳定的组合是 3/3 成功。
- 原组合连续失败就停止重试:基线组 3/3 失败说明原样重试没有意义。
- 需要定位原因时再拆组合:分别测试“去掉全身多视图”和“去掉参考图”,判断是哪种组合触发了过滤。
🚀 快速开始:如果想先在一个干净的环境里复现和验证,推荐通过 API易 apiyi.com 获取免费测试额度,用同一个 Key 固定模型和参数做单变量对照,验证完成后再接入生产流程。
451 image_safety 提示词改写示例
下面按文档复测的思路给出改写方向,写法可以按自己的业务调整。
| 改写方向 | 低效写法 | 推荐写法 |
|---|---|---|
| 衣着 | 不要暴露、衣着完整 | 高领长袖上衣、长裤、运动鞋 |
| 人物 | 一个模特 | 明确成年人物 |
| 视图 | 面部特写加全身正侧背一次出 | 先出半身像,或分步骤出视图 |
| 风格 | 不做性感化 | 中性日常服装、自然站姿 |
改写的核心是把模糊空间压缩掉。描述越具体,模型可以自由发挥的部分越少,生成图被过滤的概率越低。

常见问题 FAQ
Q1: 什么是 451 image_safety?
它表示图片已经生成,但输出图没有通过安全审核,所以接口不返回图片,而是返回 HTTP 451,`error.code` 为 `image_safety`。这属于后置审核,也叫输出侧审核。
Q2: 451 image_safety 和 401 有什么区别?要不要一起重试?
401 发生在请求入口,和 Key 是否有效有关;451 发生在出图之后,和画面内容有关。两者不能共用一套重试逻辑:401 要修 Key 配置,451 要改画面描述,原样重试对两者都没用。
Q3: 451 image_safety 和 429 怎么区分?
429 是限流或通道繁忙,退避后重试通常能恢复,必要时可以切换通道。451 是内容被过滤,原组合连续失败时重试仍会失败。看 `error.code` 即可分开,是 `image_safety` 就按内容问题处理。
Q4: 收到 451 image_safety,是不是说明我的参考图违规?
不能这样判断。文档复测中,同一张参考图改为中性日常服装半身像后就能出图。文档的结论是更支持“参考图人物特征与全身多视图组合后,生成画面触发过滤”,而不是参考图本身违规,也不能认定某个单词是触发词。
Q5: 如何确认自己调用的 gpt-image 型号并复现 451?
推荐按以下步骤操作:
1. 在 API易 apiyi.com 注册并获取 API Key 和免费测试额度
2. 在型号列表中核对 gpt-image 系列的准确模型 ID
3. 将 `base_url` 设为 `https://api.apiyi.com/v1`,固定模型和参数,按本文步骤单变量排查
Q6: 能不能用耗时判断请求是否被审核拦截?
不建议。文档明确说耗时只能辅助,不能单独断定审核层级。复测中成功与失败的耗时区间有重叠,用耗时阈值写判断逻辑容易误判。
Q7: 改完提示词通过了一次,就可以上线了吗?
还不够。文档建议回归 2 到 3 次,单次通过并不稳定。复测中稳定的组合是 3/3 成功,建议以同样标准验收后再上线。
451 image_safety 核心要点 Key Takeaways
- 审核对象:451
image_safety过滤的是生成出来的那张图,不是 Key。 - 先看错误码:451、401、429 分属内容、鉴权、限流,处理方式各不相同。
- 不要混用重试:401 修 Key,429 退避重试,451 改画面描述。
- 单变量排查:固定模型、端点、参考图和参数,每次只改一处提示词。
- 正向描述更有效:写清上衣、下装、鞋子,比追加否定句更可靠。
- 回归验证:改写后回归 2 到 3 次,稳定通过再上线。
- 上手方式:模型 ID 以 API易 型号列表为准,用免费额度先做对照验证。
总结
生图返回 451 image_safety 的核心要点:
- 定性:这是输出侧审核,拦的是生成图,与 Key、余额、限流无关。
- 分流:按状态码和
error.code把 451 与 401、429 分开处理,不要放进同一套重试。 - 改法:固定其他变量,用正向具体的衣着和构图描述替代否定句,并回归 2 到 3 次。
遇到 451 时,先别急着换 Key,先换一种更具体的画面描述。推荐通过 API易 apiyi.com 用同一个 Key 固定模型做单变量对照,快速找到能稳定出图的写法。
📚 参考资料
- API易 FAQ:图片输出安全审核: 451
image_safety的定义与排查方法 - 链接:
docs.apiyi.com/faq/image-output-safety-review.md -
说明: 包含响应形态、后置审核说明和单变量排查建议
-
API易 动态:图片输出安全审核(2026-11): 文档复测记录
- 链接:
docs.apiyi.com/live/2026-11/image-output-safety-review.md - 说明: 收录
gpt-image-2.5-sunburst-vip上的匿名化复测与结论边界
作者: APIYI 技术团队
技术交流: 欢迎在 API易 apiyi.com 首页联系我们,更多图像接口错误码说明可查阅 docs.apiyi.com 文档中心
