fix: use image[] field for multi-reference edits

OpenAI documents the multipart array syntax as image[] for multiple
references; strict gateways reject repeated 'image' parts with
duplicate_parameter 400. Use 'image' for single, 'image[]' for 2+.
This commit is contained in:
2026-05-18 23:22:42 +08:00
parent 600f574b5c
commit 4ef2f1ba2b
2 changed files with 6 additions and 2 deletions
+4 -1
View File
@@ -53,7 +53,10 @@ Three files do everything:
- Upstream dispatch:
- `referenceImages` present → `POST {baseURL}/images/edits` as
`multipart/form-data` (blobs decoded from data URLs via
`decodeDataUrl``Uint8Array<ArrayBuffer>`).
`decodeDataUrl``Uint8Array<ArrayBuffer>`). Single reference uses
field name `image`; **two or more references use `image[]`** to
match OpenAI's documented array syntax — strict gateways reject
repeated `image` parts with a `duplicate_parameter` 400.
- Otherwise → `POST {baseURL}/images/generations` as JSON.
- Always sends `stream: true, partial_images: 2` first. On a 400 that
mentions `stream` or `partial_images` (see
+2 -1
View File
@@ -49,6 +49,7 @@ async function callUpstream(args: {
form.append("stream", "true");
form.append("partial_images", "2");
}
const imageField = referenceImages.length > 1 ? "image[]" : "image";
for (let i = 0; i < referenceImages.length; i++) {
const dataUrl = referenceImages[i];
if (!dataUrl) continue;
@@ -56,7 +57,7 @@ async function callUpstream(args: {
if (!decoded) continue;
const ext = decoded.mime.split("/")[1] ?? "png";
form.append(
"image",
imageField,
new Blob([decoded.bytes], { type: decoded.mime }),
`ref-${i}.${ext}`,
);