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:
@@ -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
|
||||
|
||||
@@ -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}`,
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user