批量出 1000 张电商图,先别急着跑满,用小批量打样定档、GET /models 选性价比机型、失败重试沿用同一个 Idempotency-Key、按 usage.points_charged 核算单张真实花费,成本才控得住。Flux Art 的 OpenAPI 接口基址只有 https://open-api.flux-art.ai/openapi/v1,控制台入口是 https://flux-art.ai,和网页端共享同一份积分与并发。
今年开始接手一个新品牌的批量出图需求,一次要给上千个 SKU 出商品主图,才真正踩过"批量调 API 结果账单失控"这种坑。
批量出图的钱到底花在哪几块
把"批量出 1000 张图为什么容易超支"拆开看,基本落在三类原因上。
第一类是模型没选对。不同模型背后的计算成本不同,同样的商品图需求,用旗舰模型和用性价比模型跑出来的积分消耗差距不小,批量之前不打样对比,很容易一开始就选贵了。
第二类是重试逻辑写错了。批量任务里总会有一部分因为网络超时或服务端临时报错而失败,如果重试时图省事每次都生成一个新的请求标识,平台会把它当成全新任务处理,等于同一张图被扣了两次钱。
第三类是没有真实的成本口径,全靠估算。很多团队算预算靠"感觉一张大概多少积分"乘以总数,跑完账单对不上才发现,尺寸、质量这些参数会影响部分模型的实际消耗,唯一靠谱的口径是接口返回里的真实扣费字段,不是拍脑袋的估算数。
搞清楚这三类,后面的方法论就是对症下药:选型前先打样、重试沿用同一把幂等键、核算认准接口返回的真实数字。这三条看着简单,实际操作里最容易被跳过的是第一条——很多团队赶工期,觉得先打样再批量太慢,直接拿一个平时用惯的模型全量跑,结果要么效果不达标要返工,要么账单比预期高出一截,两头都耽误时间。反倒是花半天时间先出几十张打样图,把模型和参数定下来,后面几百上千张才能跑得又快又不超预算。
这套思路对接口调用方式没有特殊要求,不管是自己写的 Python 脚本、Node 服务,还是接进现成的中台系统,核心都是同一件事:批量提交前先用真实数据把单价算出来,而不是靠经验估一个数字就往下跑。

能力分工表:批量任务该用哪个接口
Flux Art OpenAPI 给批量出图场景准备的几个能力,分工很清楚,选对了能少走很多弯路。
| 你要做的事 | 该用哪个能力 | 能到什么程度 |
|---|---|---|
| 批量文生成商品图 | POST /images/generations,mode=generate | 传 model、prompt 等字段,按商品清单逐条提交 |
| 批量换背景 / 局部编辑 | POST /images/generations,mode=edit + image_urls | 传原图公开 HTTPS 地址,做换背景、去杂物等编辑 |
| 挑性价比模型 | GET /models | 拉取当前模型目录,打样对比效果与消耗后再定档 |
| 查单个任务结果 | GET /tasks/{task_id} | 轮询任务状态,succeeded 后取出结果 |
| 批量查任务历史 | GET /tasks | 支持 limit/cursor/type/status 分页查询,方便脚本核对批次完成情况 |
| 避免重复扣费 | 同一请求的重试沿用同一个 Idempotency-Key | 8-128 字符,超时或 5xx 重试时不换新键,换新请求才需要新键 |
批量脚本的主干逻辑基本就是:先用 GET /models 定型号,再遍历商品清单调用 POST /images/generations,提交后靠 GET /tasks/{id} 或 GET /tasks 轮询状态,失败的按同一个 Idempotency-Key 重试。
你是哪种情况?对号入座
| 你的场景 | 最头疼的环节 | 在 Flux Art 上怎么做 | 推荐主力模型 |
|---|---|---|---|
| 电商团队要一次性给上千个 SKU 出主图,预算卡得死 | 不知道单张实际花多少积分,预算总超支 | 先跑 30-50 张打样,用返回里的 usage.points_charged 算出单张真实成本,再乘以总量估算预算,超了就换模型或调整参数 | 按 GET /models 目录里性价比款先试 |
| 批量任务里总有一部分失败,重试怕多扣钱 | 网络超时或 5xx 后不敢重试,又怕漏单没补上 | 失败的任务用原来那个 Idempotency-Key 重新提交,平台按幂等规则处理,不会重复创建任务、重复扣费 | 与原任务同一模型,保持一致 |
| 想自己写脚本对接 ERP,做无人值守批量出图 | 又要发任务又要轮询状态,还怕余额跑没了任务卡在半路 | 用 GET /tasks 分页核对批次完成情况,脚本里提前捕获 402 错误码判断余额,不够就先提醒续费再继续跑 | 视批次商品品类而定 |
| 商品图需要先换背景再统一出成品 | 手动一张张传图编辑太慢,批量又怕效果不稳定 | mode=edit 传入 image_urls,配合固定的提示词模板批量提交,保证同一批商品的编辑口径一致 | 编辑类需求用支持多图参考的机型 |
| 想控制单张平均成本又不想牺牲太多质量 | 一上来就用最贵的旗舰模型全跑,后来才发现有性价比替代 | 先用 GET /models 对比目录里可选模型,小批量各出几张比较效果和 points_charged,再定档批量跑 | 打样后按效果与花费的性价比综合选定 |
五步实操:从注册到批量跑完账算清楚
第一步:注册账号,升级付费计划,创建 API Key。 到 https://flux-art.ai注册账号,注册即送 500 积分(以官网当前为准),升级到支持 Open API 的付费计划后,在控制台的 API Key 页面创建密钥,存进服务端环境变量或密钥管理器,不要写进前端代码或公开仓库。
第二步:小批量打样定档。 不要一上来就跑满 1000 张,先挑 5-10 张有代表性的商品,分别用一两款候选模型出图,记录每次返回里的 usage.points_charged,得出这批商品在不同模型上的真实单价。
第三步:用 GET /models 拉取模型目录,结合打样结果定型号。 效果够用、单张成本更低的模型优先,不需要每次都用最贵的旗舰机型。
第四步:写批量脚本,遍历商品清单提交任务。 每个请求带一个唯一的 Idempotency-Key,提交后用 POST /images/generations 返回的任务 ID 轮询 GET /tasks/{id},或者定期用 GET /tasks 批量核对整批任务的完成情况,失败的沿用同一个 Idempotency-Key 重试。
第五步:核算与复盘。 全部跑完后,把每个任务返回的 usage.points_charged 汇总,得到这一批真实总花费,和打样阶段的预估对比,作为下一批次定档和预算的依据;中途如果遇到 402,说明余额不足且没有创建任务,续费后接着跑就行,不会出现半扣费的情况。

批量出图前的自查清单
- 是否先用小批量打样定档,而不是直接跑满目标数量
- 重试逻辑是否沿用同一个 Idempotency-Key,而不是每次重试都换新的
- 是否用 GET /models 对比过至少两款模型的效果和积分消耗再定档
- 成本核算是否认准返回里的 usage.points_charged,而不是靠估算数字
- 脚本是否处理了 402 余额不足的情况,避免整批任务在中途卡住
- 是否用任务状态轮询代替死等,并给轮询间隔留出合理的时间
- 是否记录了每一批次的真实总花费,用于下一批预算参考
- 接口基址是否确认是 open-api 那个接口域,没有误填不存在的 .ai 接口域
- 批量脚本的并发量是否留有余地,毕竟和网页端共享同一份并发限制
说句实在的:API 批量出图控成本能做到什么程度
方法论能帮你把成本从"跑完才知道花了多少"变成"跑之前就能估个八九不离十",但有些边界要讲清楚。单张图具体消耗多少积分、并发上限具体是多少、某个模型的尺寸和质量参数具体有哪些取值,官方没有把这些精确数字写进公开文档,一律以控制台和接口文档当前展示为准,写死一个数字去做预算模型反而容易踩坑。另外 API 只是把出图能力接进你的系统,生成效果依旧取决于提示词和参考图质量,批量跑之前的打样这一步省不掉;并发和限流也是实打实的约束,不是加机器就能无限堆并发,脚本设计上要给失败重试和限流退避留够空间。
还有一点容易被忽略:批量脚本和团队里其他人在网页端用的是同一份并发,如果脚本没做限速控制,一口气把并发全占满,同事这时候在网页端手动出图就会明显变慢甚至排队。批量任务尽量安排在业务低峰期跑,或者在脚本里主动控制并发节奏,这不是接口层面能强制约束的事,得靠团队自己的调度习惯来兜底。
