diff --git a/src/content/catalog-models/openai-gpt-image-2.json b/src/content/catalog-models/openai-gpt-image-2.json index 55a6a6674f0e701..ad2eaee1a76c447 100644 --- a/src/content/catalog-models/openai-gpt-image-2.json +++ b/src/content/catalog-models/openai-gpt-image-2.json @@ -4,11 +4,7 @@ "name": "OpenAI GPT Image 2", "description": "OpenAI's next-generation image model that creates and edits images from text prompts, with support for multiple quality levels, sizes, and output formats. Note: transparent backgrounds are not supported \u2014 use openai/gpt-image-1.5 for transparent PNGs.", "task": "Text-to-Image", - "tags": [ - "Image Generation", - "Image Editing", - "Multimodal" - ], + "tags": ["Image Generation", "Image Editing", "Multimodal"], "context_length": null, "max_output_tokens": null, "schema_version": "1.0.0", @@ -123,10 +119,12 @@ }, { "name": "Image Edit", - "description": "Edit an existing image by providing it as base64 (a raw string or a data:image/{png|jpeg|webp};base64,... URI). This routes the call to OpenAI's /v1/images/edits endpoint. The example uses a tiny 32x32 smiley-face PNG - real inputs are the full base64 encoding of your source image.", + "description": "Edit an existing image by providing it in the images array as base64 (a raw string or a data:image/{png|jpeg|webp};base64,... URI). This routes the call to OpenAI's /v1/images/edits endpoint. The example uses a tiny 32x32 smiley-face PNG - real inputs are the full base64 encoding of your source image.", "input": { "prompt": "Transform this cartoon smiley into a photorealistic 3D clay sculpture sitting on a marble pedestal, studio lighting", - "image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAnklEQVR42u2XQRLAIAgD8/839i/26qFCACm0ozPe1KwcQsAoXvgcAABxpwFowl4QWITHxW0LCBhxVngF4gKIirMQyBRnIJAtrkE8AuwWnyFEgKzfS1UA+3sWTju3BGAu7gKYIfBW+Q/AAQgBeMCkt1wVsLZjcwUYG2Z9wGLHZitWk1DEisubUYt2XB5IWkSyFqG0RSxvMZi0Gc1+Ox3fm00ZJ5mGVtkAAAAASUVORK5CYII=" + "images": [ + "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAnklEQVR42u2XQRLAIAgD8/839i/26qFCACm0ozPe1KwcQsAoXvgcAABxpwFowl4QWITHxW0LCBhxVngF4gKIirMQyBRnIJAtrkE8AuwWnyFEgKzfS1UA+3sWTju3BGAu7gKYIfBW+Q/AAQgBeMCkt1wVsLZjcwUYG2Z9wGLHZitWk1DEisubUYt2XB5IWkSyFqG0RSxvMZi0Gc1+Ox3fm00ZJ5mGVtkAAAAASUVORK5CYII=" + ] }, "output": { "image": "https://pub-04a6d208d361438ea01b797e6973bd19.r2.dev/catalog/openai__gpt-image-2/image-edit.png" @@ -144,7 +142,37 @@ { "label": "typescript", "language": "typescript", - "code": "const response = await env.AI.run(\n 'openai/gpt-image-2',\n {\n prompt:\n 'Transform this cartoon smiley into a photorealistic 3D clay sculpture sitting on a marble pedestal, studio lighting',\n image:\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAnklEQVR42u2XQRLAIAgD8/839i/26qFCACm0ozPe1KwcQsAoXvgcAABxpwFowl4QWITHxW0LCBhxVngF4gKIirMQyBRnIJAtrkE8AuwWnyFEgKzfS1UA+3sWTju3BGAu7gKYIfBW+Q/AAQgBeMCkt1wVsLZjcwUYG2Z9wGLHZitWk1DEisubUYt2XB5IWkSyFqG0RSxvMZi0Gc1+Ox3fm00ZJ5mGVtkAAAAASUVORK5CYII=',\n },\n {\n gateway: { id: 'default' },\n }\n)\nconsole.log(response)" + "code": "const response = await env.AI.run(\n 'openai/gpt-image-2',\n {\n prompt:\n 'Transform this cartoon smiley into a photorealistic 3D clay sculpture sitting on a marble pedestal, studio lighting',\n images: [\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAnklEQVR42u2XQRLAIAgD8/839i/26qFCACm0ozPe1KwcQsAoXvgcAABxpwFowl4QWITHxW0LCBhxVngF4gKIirMQyBRnIJAtrkE8AuwWnyFEgKzfS1UA+3sWTju3BGAu7gKYIfBW+Q/AAQgBeMCkt1wVsLZjcwUYG2Z9wGLHZitWk1DEisubUYt2XB5IWkSyFqG0RSxvMZi0Gc1+Ox3fm00ZJ5mGVtkAAAAASUVORK5CYII=',\n ],\n },\n {\n gateway: { id: 'default' },\n }\n)\nconsole.log(response)" + } + ] + }, + { + "name": "Multi-Image Edit", + "description": "Compose multiple input images by passing up to 16 base64 strings in the images array. The model blends the references; useful for combining subjects, styles, or reference shots. The example pairs a smiley-face PNG with a red ball PNG.", + "input": { + "prompt": "Combine these into a single photorealistic scene: a ceramic smiley-face mug next to a red rubber ball on a sunlit wooden table", + "images": [ + "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAnklEQVR42u2XQRLAIAgD8/839i/26qFCACm0ozPe1KwcQsAoXvgcAABxpwFowl4QWITHxW0LCBhxVngF4gKIirMQyBRnIJAtrkE8AuwWnyFEgKzfS1UA+3sWTju3BGAu7gKYIfBW+Q/AAQgBeMCkt1wVsLZjcwUYG2Z9wGLHZitWk1DEisubUYt2XB5IWkSyFqG0RSxvMZi0Gc1+Ox3fm00ZJ5mGVtkAAAAASUVORK5CYII=", + "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAhklEQVR42u2XsRHAMAgDNY73nye7OG2KgGUnGCWH76j/oTACPfnhcwIA3AoTGIFXRTADPlqjakYEDJwFWyJLAk/hrAQi4YwEouEjiVuBt+FXCVcgqntvCtjVvTUF7OremkIJlEAJ6Aikf0QSX3H6MpJYx+mBRCKSSYRSiVgucZjInGa/vY5PvB72/7IdMuAAAAAASUVORK5CYII=" + ] + }, + "output": { + "image": "https://pub-04a6d208d361438ea01b797e6973bd19.r2.dev/catalog/openai__gpt-image-2/multi-image-edit.png" + }, + "raw_response": { + "state": "Completed", + "result": { + "image": "https://pub-04a6d208d361438ea01b797e6973bd19.r2.dev/catalog/openai__gpt-image-2/multi-image-edit.png" + }, + "gatewayMetadata": { + "keySource": "Unified" + } + }, + "code_snippets": [ + { + "label": "typescript", + "language": "typescript", + "code": "const response = await env.AI.run(\n 'openai/gpt-image-2',\n {\n prompt:\n 'Combine these into a single photorealistic scene: a ceramic smiley-face mug next to a red rubber ball on a sunlit wooden table',\n images: [\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAnklEQVR42u2XQRLAIAgD8/839i/26qFCACm0ozPe1KwcQsAoXvgcAABxpwFowl4QWITHxW0LCBhxVngF4gKIirMQyBRnIJAtrkE8AuwWnyFEgKzfS1UA+3sWTju3BGAu7gKYIfBW+Q/AAQgBeMCkt1wVsLZjcwUYG2Z9wGLHZitWk1DEisubUYt2XB5IWkSyFqG0RSxvMZi0Gc1+Ox3fm00ZJ5mGVtkAAAAASUVORK5CYII=',\n 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAhklEQVR42u2XsRHAMAgDNY73nye7OG2KgGUnGCWH76j/oTACPfnhcwIA3AoTGIFXRTADPlqjakYEDJwFWyJLAk/hrAQi4YwEouEjiVuBt+FXCVcgqntvCtjVvTUF7OremkIJlEAJ6Aikf0QSX3H6MpJYx+mBRCKSSYRSiVgucZjInGa/vY5PvB72/7IdMuAAAAAASUVORK5CYII=',\n ],\n },\n {\n gateway: { id: 'default' },\n }\n)\nconsole.log(response)" } ] } @@ -173,52 +201,36 @@ "description": "Text prompt describing the image to generate or edit", "type": "string" }, - "image": { - "description": "Base64-encoded input image for image editing", - "type": "string" + "images": { + "description": "Input images for image editing, 1-16 entries. Each entry is base64-encoded (raw string or data:image/{png|jpeg|webp};base64,... URI).", + "maxItems": 16, + "type": "array", + "items": { + "type": "string" + } }, "quality": { "description": "Quality of the generated image", "type": "string", - "enum": [ - "low", - "medium", - "high", - "auto" - ] + "enum": ["low", "medium", "high", "auto"] }, "size": { "description": "Size of the generated image", "type": "string", - "enum": [ - "1024x1024", - "1024x1536", - "1536x1024", - "auto" - ] + "enum": ["1024x1024", "1024x1536", "1536x1024", "auto"] }, "background": { "description": "Background transparency setting. Use transparent for images with no background, opaque for a solid background, or auto to let the model decide.", "type": "string", - "enum": [ - "transparent", - "opaque", - "auto" - ] + "enum": ["transparent", "opaque", "auto"] }, "output_format": { "description": "Output format for the generated image", "type": "string", - "enum": [ - "png", - "webp", - "jpeg" - ] + "enum": ["png", "webp", "jpeg"] } }, - "required": [ - "prompt" - ], + "required": ["prompt"], "additionalProperties": false }, "output": { @@ -231,9 +243,7 @@ "format": "uri" } }, - "required": [ - "image" - ], + "required": ["image"], "additionalProperties": false } }