A New API task plugin that connects APIMart's image models (GPT-Image, Nano Banana, Imagen, Seedream, FLUX, Qwen, Wan, Grok Imagine and more) to your own New API instance.
把 APIMart 图像系列模型接入你自己的 New API 站点的任务插件。APIMart 的图片接口是异步的:提交后先返回 task_id,再轮询 /v1/tasks/{id} 取结果。本插件让 New API 在请求内部完成轮询,客户端用标准 OpenAI 图片接口就能直接拿到图片。
⚠️ New API 的任务插件系统(v1.0.0-rc.27 起引入)仍是实验性功能,官方不建议直接用于生产环境,请先在测试实例上验证。1.1.0 用到了按模型区分计费配置(usageProfiles),需要支持该功能的 New API 版本。
- OpenAI 兼容图片接口:
POST /v1/images/generations、POST /v1/images/edits,同步返回{created, data: [{url}]};传response_format: "b64_json"时,由 New API 下载图片后补上 Base64。 - 通用异步任务接口:
POST /v1/tasks/apimart提交,GET /v1/tasks/{id}查询,GET /v1/tasks/{id}/artifacts获取图片。 - 按模型校验参数:每个模型有自己的比例、分辨率档位、张数、参考图数量等规则,提交前在本地校验,不合法的请求不会产生上游费用。只转发该模型支持的字段,
user、style这类客户端附带的字段会被静默丢弃。 - 兼容 OpenAI 写法:
- 只支持比例的模型收到
1024x1024这类像素尺寸时,会换成最接近的支持比例,并选择能覆盖该像素数的分辨率档位。 quality: "standard"/"hd"映射为medium/high。image、images: [{image_url}]视为参考图。- 用
aspect_ratio字段的模型(FLUX 3、Grok Imagine)也接受size。
- 只支持比例的模型收到
- 计费:GPT-Image-2.5 和
gpt-image-2-official按 token 计费,其他模型按张计费。提交时预扣,完成后按实际结果结算,任务失败自动退款。
| 系列 | 模型名 | 说明 |
|---|---|---|
| GPT-Image-2.5 | gpt-image-2.5-flare、gpt-image-2.5-sunburst |
按 token。比例 / 精确像素 / auto,resolution 1k/2k/4k,quality low |
| GPT-Image-2.5 Ext | gpt-image-2.5-ext |
version: flare/sunburst,resolution 1K/2K/4K,n 1~4,参考图 ≤16 |
| GPT-Image-2 | gpt-image-2、gpt-image-2-ext |
比例 / 像素 / auto,resolution 1k/2k/4k,参考图 ≤15 |
| GPT-Image-2 官方 | gpt-image-2-official |
按 token。quality auto/low/medium/high,n 1~4,参考图 ≤16(仅 URL),支持蒙版 |
| GPT-Image 1/1.5 | gpt-image-1-official、gpt-image-1.5-official |
尺寸只有 1:1/3:2/2:3,quality,透明背景,n 1~4,参考图 ≤15(仅 URL),支持蒙版 |
| Nano banana 2.1 | gemini-nano-banana-2.1(官方版,n 1~4)、gemini-nano-banana-2.1-ext |
14 种比例,1K/2K/4K |
| Nano banana2 | gemini-3.1-flash-image-preview(nano-banana-2-ext)、gemini-3.1-flash-image-preview-official(nano-banana-2) |
14 种比例,0.5K~4K,google_search,参考图 ≤14 |
| Nano banana Lite | gemini-3.1-flash-lite-image(nano-banana-2-lite)、-ext(nano-banana-2-lite-ext) |
仅 1K,n 1~4 |
| Nano banana Pro | gemini-3-pro-image-preview(nano-banana-pro-ext)、-official(nano-banana-pro) |
1K/2K/4K,参考图 ≤14 |
| Nano banana | gemini-2.5-flash-image-preview(nano-banana-ext)、-official(nano-banana) |
仅 1K |
| Imagen 4.0 | imagen-4.0-apimart |
仅文生图,5 种比例 |
| Seedream | seedream-4.0、seedream-4.5、seedream-5-0-lite |
组图(n 最多 15),1K~4K(各版本档位不同) |
| Seedream 5.0 | seedream-5-0-pro、seedream-5-0-flash |
单张,1K/1.5K/2K 或精确像素,透明背景,图层拆分(layer_decomposition) |
| FLUX Kontext | flux-kontext-pro、flux-kontext-max |
约 1MP 固定输出,参考图 ≤4 |
| FLUX 2 | flux-2-flex、flux-2-pro、flux-2-max |
resolution 1MP~4MP 或精确像素,参考图 ≤8 |
| FLUX 3 | flux-3-image、flux-3-image-klein |
aspect_ratio,resolution 768sq~4k,参考图 ≤10 |
| Hy-Image | hy-image-v3.5-preview |
1K/2K/4K 或精确像素,参考图 ≤5(仅 URL) |
| MAI-Image | mai-image-2.6、mai-image-2.6-flash |
1K/2K 或精确像素,参考图 ≤5 |
| Qwen Image | qwen-image-2.0、-pro、qwen-image-3.0、-pro |
1K/2K,n 1~6 |
| Z-Image | z-image-turbo |
1K/2K,仅文生图,prompt_extend |
| 万相 2.7 | wan2.7-image-pro、wan2.7-image |
1K/2K/4K,n 1 |
| Grok Imagine | grok-imagine-1.5-apimart(grok-imagine-1.5-ext)、grok-imagine-image、grok-imagine-image-quality、grok-imagine-image-2.0、grok-imagine-2.0-ext |
1.5 和 2.0-ext 用 size,其余用 aspect_ratio + resolution 1k/2k;2.0-ext 仅文生图,n 最多 12 |
括号里是 APIMart 的别名,插件同样支持。各模型特有的参数(例如 Seedream 的 watermark、sequential_image_generation,FLUX 的 seed、safety_tolerance,万相的 color_palette、bbox_list)按 APIMart 文档原样传入即可。完整参数见 APIMart 文档。
暂不支持:Midjourney(接口和操作流程不同,计划在后续版本单独接入)、Grok 图层/选区编辑。
用 Root 账号登录 New API,打开「任务插件」(/task-plugins),打开顶部总开关。然后任选一种方式:
方式一:添加为市场源(推荐,之后可在市场里看到新版本)
在「市场源」里点「添加源」,源名称随意,索引 URL 填:
https://raw.githubusercontent.com/nyaasuki/newapi-plugin-apimart/main/index.json
保存后在插件市场找到 APIMart 安装。市场安装会校验 index.json 中的 sha256。
方式二:直接导入单个插件
选择导入,填插件地址:
https://raw.githubusercontent.com/nyaasuki/newapi-plugin-apimart/main/plugins/tasks/apimart/1.1.0/plugin.js
也可以下载 plugin.js 后上传本地文件或粘贴源码。
无论哪种方式,安装前请自行检查源码,然后启用插件。
- 新建渠道,类型选 任务插件,绑定插件
apimart。 - Base URL 留空即使用默认
https://api.apimart.ai(带不带/v1都可以)。 - 密钥填你的 APIMart API Key。
- 模型填你要开放的模型名(见上表)。想对外用别的名字,可以用渠道的模型重定向,例如
{"gpt-image-2.5": "gpt-image-2.5-flare"}。
每个模型都要在「模型价格」里单独设置价格。插件会为每个模型提供对应的计费字段和用量示例,价格编辑器只显示该模型用到的字段。
按 token 计费(gpt-image-2.5-flare、gpt-image-2.5-sunburst、gpt-image-2-official):
| 字段 | 含义 | APIMart 官方单价(GPT-Image-2.5,每百万 token) |
|---|---|---|
input_tokens |
输入 token(文本 + 参考图) | 文本 $5,图片 $8 |
output_tokens |
输出图片 token | $30 |
APIMart 返回的 input_tokens 不区分文本和图片,所以输入单价建议这样设:只做文生图填 $5/M;有图生图需求填 $8/M(偏保守)。在此基础上按你自己的倍率加价。编辑器中 token 单价按每百万显示。
预扣说明:GPT-Image-2.5 的
quality不传或为auto时,按该尺寸最高档max预扣,完成后退还差额。余额紧张的用户建议显式指定quality。
按张计费(其他所有模型):
| 字段 | 含义 | 出现在哪些模型 |
|---|---|---|
image_count |
生成张数,所有按张计费的模型都有 | 全部 |
resolution |
分辨率档位,如 1k、2k、4k、1mp、768sq |
有多个档位的模型 |
reference_images |
参考图张数 | Seedream 5.0 Pro/Flash(第 2 张起加价)、Grok Imagine Image 系列(每张参考图加价) |
quality |
质量档位 | GPT-Image 1/1.5、Grok Imagine Image 2.0 |
size |
尺寸 | GPT-Image 1/1.5 |
version |
flare / sunburst | GPT-Image-2.5 Ext |
prompt_extend |
是否开启智能改写(会加价) | Z-Image-Turbo |
提交时按请求张数预扣(Seedream 组图按 max_images,图层拆分按 17 张),完成后按实际返回的张数结算。APIMart 的单价以其价格页为准。万相 2.7 的官方价格与分辨率无关,所以只有 image_count 一个字段。Nano banana 2.1 官方版、Nano banana Lite 和 MAI-Image 在 APIMart 那边按 token 计费,但它们的任务结果是否返回 token 用量还没有确认,所以插件先按张计费,单价请按常用档位估算。
也可以不用这些字段,改用按次计费:插件在按次模式下以请求张数作为倍率。
文生图(OpenAI 格式,同步返回):
curl https://your-newapi.example/v1/images/generations \
-H "Authorization: Bearer $NEW_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "nano-banana-pro",
"prompt": "雨天窗边温暖舒适的阅读角,暖色台灯,电影感光影",
"size": "16:9",
"resolution": "2K"
}'图生图 / 局部重绘:
curl https://your-newapi.example/v1/images/edits \
-H "Authorization: Bearer $NEW_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2.5-sunburst",
"prompt": "仅将透明蒙版覆盖的区域替换为金色丝带",
"image_urls": ["https://example.com/product.png"],
"mask_url": "https://example.com/product-mask.png",
"quality": "xhigh"
}'模型特有参数直接写在请求体里:
curl https://your-newapi.example/v1/images/generations \
-H "Authorization: Bearer $NEW_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "seedream-4.5",
"prompt": "同一角色的四张不同场景插画",
"image_urls": ["https://example.com/character.png"],
"n": 4,
"resolution": "2K",
"watermark": false
}'异步方式:
curl https://your-newapi.example/v1/tasks/apimart \
-H "Authorization: Bearer $NEW_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "flux-2-pro", "prompt": "极简风格的产品发布会主视觉", "size": "1920x1080"}'
curl https://your-newapi.example/v1/tasks/<task_id> -H "Authorization: Bearer $NEW_API_KEY"
curl https://your-newapi.example/v1/tasks/<task_id>/artifacts -H "Authorization: Bearer $NEW_API_KEY"- 参考图格式取决于模型。 GPT-Image-2.5、
gpt-image-2-official、GPT-Image 1/1.5、Hy-Image、Qwen Image 2.0 和 Grok 系列只接受公网 http(s) URL。对这些模型,/v1/images/edits用 multipart 上传图片文件会被拒绝,请改为在image_urls中传链接。其他支持参考图的模型可以接受data:image/...;base64,...或 multipart 上传的文件,插件会把文件内联为 data URL。 - 蒙版只有 GPT-Image 系列支持。可以传 URL、
data:image/png;base64,...,或在 multipart 中上传mask文件(≤4MB,需带 Alpha 通道的 PNG,尺寸与第一张参考图一致)。 - 等待时间。 OpenAI 图片接口会在请求内等待结果,超过
TASK_PLUGIN_PROTOCOL_TIMEOUT_SECONDS(默认 600 秒)返回 504,但任务仍会在后台完成并结算。Seedream 5.0 Pro 和 4K 档位可能需要几分钟,客户端和反向代理的超时也要相应调大。 - 图片链接是临时的。 返回的 URL 来自 APIMart,一般 24~72 小时后过期,请及时下载。需要长期保存时,可以让客户端使用
response_format: "b64_json"。 - 产物下载依赖
upload.apimart.ai(已在插件的allowedHosts中声明)。如果某些模型的图片放在其他域名,/v1/tasks/{id}/artifacts/.../content会失败,但 OpenAI 接口返回的 URL 不受影响。 - 不支持流式(
stream: true)。
node test/run.mjs # 各钩子的本地测试(针对最新版本)
node test/golden.mjs # 用本地脚本回放 golden.json
node tools/build-index.mjs # 修改插件后重新生成 index.json(含 sha256)
node tools/build-index.mjs --check # 检查 index.json 是否最新
# 在装有 New API 可执行文件的机器上,用官方 CLI 校验:
new-api plugin lint plugins/tasks/apimart/1.1.0/plugin.js
new-api plugin test plugins/tasks/apimart/1.1.0/plugin.js --fixture golden.json已发布的版本目录不要再修改,否则 index.json 里的 sha256 会对不上。改动请新建版本目录(如 plugins/tasks/apimart/1.1.1/),同步修改 meta.version,附上 CHANGELOG.md,再重新生成索引。
MIT