gpt-image-2 电商图片编辑为什么 400?用 3 个实测请求排查 size、model 和 endpoint
2026/7/6 1:03:32 网站建设 项目流程

gpt-image-2 电商图片编辑为什么 400?用 3 个实测请求排查 size、model 和 endpoint

适合读者:正在接入gpt-image-2图片编辑 API 的后端开发、AI 应用开发、SaaS 工程团队。
文章重点:不讲“提示词玄学”,先用最小请求把链路跑通,再定位sizemodel、endpoint 这些确定性错误。

先说结论

电商用gpt-image-2做商品图,经常失败的原因不一定是模型不行,很多时候是 API 请求构造不对。

我用 Crazyrouter 做了一组最小实测,测试的是图片编辑接口:

Base URL: https://cn.crazyrouter.com Endpoint: POST /v1/images/edits Model: gpt-image-2 Input: 768x768 本地 demo 商品图 Test date: 2026-07-05

实测结果:

Case关键参数HTTP结果
正常图片编辑model=gpt-image-2,size=auto200返回 PNG,输出图可下载
错误 sizesize=123x456400invalid_request
缺少 model不传model400Model name is required

正常请求耗时约 26 秒,返回 PNG 图片,说明gpt-image-2图片编辑链路可以跑通。两个失败请求说明:sizemodel是开发接入时最应该先检查的字段。

1. 最小可用请求:先跑通链路

下面是本次跑通的请求形态,真实 token 用环境变量占位:

curlhttps://cn.crazyrouter.com/v1/images/edits\-H"Authorization: Bearer$CRAZYROUTER_API_KEY"\-F"model=gpt-image-2"\-F"size=auto"\-F"quality=low"\-F"n=1"\-F"response_format=url"\-F"image=@./product.png"\-F"prompt=基于输入商品图生成电商场景主图。保留商品主体、包装、已有图案和已有文字;不新增任何品牌标识、授权声明、版权标注或角色形象;只调整背景、光影、台面材质和画面构图。"

如果你想复现同样的测试,可以直接使用本站 Crazyrouter 的 OpenAI-compatible 图片接口:

API Base: https://cn.crazyrouter.com/v1 Endpoint: /images/edits Model: gpt-image-2

注册地址:

https://crazyrouter.com/register?utm_source=csdn&utm_medium=article&utm_campaign=gpt_image2_ecommerce&utm_content=debug_api_20260705__quickstart

环境变量可以这样设置:

exportCRAZYROUTER_API_KEY="你的 API Key"

PowerShell:

$env:CRAZYROUTER_API_KEY="你的 API Key"

几个关键点:

  • model必须显式传。
  • 图片编辑走/v1/images/edits,不是/v1/chat/completions
  • 文件上传使用multipart/form-data
  • size先用auto,不要直接传电商平台最终尺寸。
  • 卖点文案、平台裁剪、压缩,建议放到后处理。

如果这个最小请求跑不通,不要急着改提示词。先查:

API key 是否正确 Base URL 是否正确 endpoint 是否正确 model 是否传了 image 字段是否传了 size 是否在模型支持范围内

2. 反例一:size 不是任意尺寸

很多电商系统会把“平台最终尺寸”直接塞进size

例如:

800x800 1200x1200 1920x1080 3:4 9:16

但模型 API 的size通常不是任意画布尺寸,而是模型支持的参数值。

我故意跑了一个错误请求:

curlhttps://cn.crazyrouter.com/v1/images/edits\-H"Authorization: Bearer$CRAZYROUTER_API_KEY"\-F"model=gpt-image-2"\-F"size=123x456"\-F"quality=low"\-F"n=1"\-F"image=@./product.png"\-F"prompt=基于输入商品图生成电商场景主图。"

返回:

HTTP 400 code: invalid_request message: size dimensions must be multiples of 16 for gpt-image-2

这说明size会被模型或网关校验。你想要最终商品图是某个尺寸,不代表模型 API 直接接受这个尺寸。

推荐做法:

模型生成阶段:使用 auto 或已验证白名单尺寸 业务后处理阶段:裁剪、扩边、缩放、压缩到平台尺寸

3. 反例二:不传 model 会直接失败

第二个反例是不传model

curlhttps://cn.crazyrouter.com/v1/images/edits\-H"Authorization: Bearer$CRAZYROUTER_API_KEY"\-F"size=auto"\-F"quality=low"\-F"n=1"\-F"image=@./product.png"\-F"prompt=基于输入商品图生成电商场景主图。"

返回:

HTTP 400 message: Model name is required

这个错误和提示词没有关系,属于请求构造问题。

实际业务里,缺model通常发生在这些地方:

  1. 后台配置了默认模型,但服务端没有把字段传出去。
  2. 聊天请求和图片编辑请求复用了同一个构造器。
  3. 前端显示了模型名,但异步任务队列里丢了字段。
  4. 多模型路由层只处理文本模型,没有处理图片模型。

4. 建议加一层请求前校验

服务端发请求前,最好先做参数校验,不要等上游返回 400。

示例:

ALLOWED_IMAGE_SIZES={"auto","1024x1024","2048x1152","3840x2160"}defvalidate_image_edit_request(payload,image_file):errors=[]ifnotpayload.get("model"):errors.append("model is required")ifpayload.get("model")!="gpt-image-2":errors.append("unsupported image edit model")ifnotpayload.get("prompt"):errors.append("prompt is required")ifimage_fileisNone:errors.append("image file is required")size=payload.get("size","auto")ifsizenotinALLOWED_IMAGE_SIZES:errors.append(f"unsupported size:{size}")returnerrors

前置校验有两个好处:

  • 错误更快返回,不浪费上游请求。
  • 错误文案更准确,用户知道该改哪里。

5. endpoint 不要混用

电商生图经常有多个步骤:

任务推荐接口
商品图理解多模态理解或视觉分析
提示词生成chat completions
商品图换背景images edits
从零生成场景图images generations
卖点文字排版后处理或设计模板
平台尺寸适配裁剪、扩边、压缩

不要因为/v1/chat/completions能返回文字,就把图片编辑也塞进去。图片编辑要上传文件,要走正确 endpoint。

6. 品牌、logo、IP 提示词要收敛

电商商品图里经常有品牌、logo、包装文字、授权标识。提示词里不要写成:

补全品牌 logo 让授权标识更清晰 生成某某角色图案 做成某某品牌同款风格

更稳的写法:

保留输入商品图中已经存在的包装、图案和文字。 不新增任何品牌标识、授权声明、版权标注或角色形象。 只调整背景、光影、台面材质和画面构图。

让模型负责背景、光影和构图,不要让模型重新生产品牌资产。

7. 最小排查顺序

开发者可以按这个顺序排查:

1. GET /v1/models 确认模型是否可见 2. 用 size=auto 跑最小 images/edits 请求 3. 确认 image 字段能被正确上传 4. 故意测试错误 size,看是否返回 400 5. 故意测试缺 model,看错误文案是否准确 6. 再逐步加入业务 prompt、quality、批量任务 7. 最后再处理渠道 5xx、超时、额度不足等问题

8. 本站测试矩阵可以怎么用

我建议把这 3 个测试固定成接入gpt-image-2前的 smoke test:

测试项请求特征预期结果说明
正常图片编辑model=gpt-image-2,size=auto, 上传商品图HTTP 200,返回图片 URL验证 key、Base URL、endpoint、multipart 上传都正常
错误尺寸size=123x456HTTP 400,invalid_request验证错误映射,不要把参数错误当成渠道故障
缺少模型不传modelHTTP 400,提示模型名必填验证任务队列或 SDK 没有丢字段

这组测试不需要真实店铺素材,先用一张干净的 demo 商品图就够了。只要这三类结果符合预期,就可以基本确认:API Key、接口地址、图片上传、参数校验和错误处理链路是通的。

后面再接入真实商品图时,问题就更容易归因:如果最小测试稳定成功,业务图失败就重点看素材、提示词、品牌/IP 表达、后处理尺寸和上游临时状态。

本站入口:

https://crazyrouter.com/register?utm_source=csdn&utm_medium=article&utm_campaign=gpt_image2_ecommerce&utm_content=debug_api_20260705__matrix

总结

这次实测里,gpt-image-2的图片编辑请求在 Crazyrouter 上可以跑通:model=gpt-image-2size=auto/v1/images/edits返回了 HTTP 200 和可下载 PNG。

同时,错误size和缺少model都会稳定触发 HTTP 400。这说明很多电商生图失败并不是模型能力问题,而是请求构造问题。

一句话:先跑通最小请求,再谈提示词优化;先校验modelsizeimage、endpoint,再排查模型和渠道。

如果你正在接入电商图片编辑,可以先在本站用gpt-image-2跑上面的最小测试,再把结果接入自己的业务队列和错误分类系统:

https://crazyrouter.com/register?utm_source=csdn&utm_medium=article&utm_campaign=gpt_image2_ecommerce&utm_content=debug_api_20260705__final

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询