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:
|
- Upstream dispatch:
|
||||||
- `referenceImages` present → `POST {baseURL}/images/edits` as
|
- `referenceImages` present → `POST {baseURL}/images/edits` as
|
||||||
`multipart/form-data` (blobs decoded from data URLs via
|
`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.
|
- Otherwise → `POST {baseURL}/images/generations` as JSON.
|
||||||
- Always sends `stream: true, partial_images: 2` first. On a 400 that
|
- Always sends `stream: true, partial_images: 2` first. On a 400 that
|
||||||
mentions `stream` or `partial_images` (see
|
mentions `stream` or `partial_images` (see
|
||||||
|
|||||||
@@ -49,6 +49,7 @@ async function callUpstream(args: {
|
|||||||
form.append("stream", "true");
|
form.append("stream", "true");
|
||||||
form.append("partial_images", "2");
|
form.append("partial_images", "2");
|
||||||
}
|
}
|
||||||
|
const imageField = referenceImages.length > 1 ? "image[]" : "image";
|
||||||
for (let i = 0; i < referenceImages.length; i++) {
|
for (let i = 0; i < referenceImages.length; i++) {
|
||||||
const dataUrl = referenceImages[i];
|
const dataUrl = referenceImages[i];
|
||||||
if (!dataUrl) continue;
|
if (!dataUrl) continue;
|
||||||
@@ -56,7 +57,7 @@ async function callUpstream(args: {
|
|||||||
if (!decoded) continue;
|
if (!decoded) continue;
|
||||||
const ext = decoded.mime.split("/")[1] ?? "png";
|
const ext = decoded.mime.split("/")[1] ?? "png";
|
||||||
form.append(
|
form.append(
|
||||||
"image",
|
imageField,
|
||||||
new Blob([decoded.bytes], { type: decoded.mime }),
|
new Blob([decoded.bytes], { type: decoded.mime }),
|
||||||
`ref-${i}.${ext}`,
|
`ref-${i}.${ext}`,
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user