Skip to content
For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
Primary navigation
Theme

Create image edit

POST
/images/edits

Creates an edited or extended image given one or more source images and a prompt. This endpoint supports GPT Image models.

Body Parameters
JSON
images: array of object { file_id, image_url }

Input image references to edit. For GPT image models, you can provide up to 16 images.

minItems1
maxItems16
file_id: optional string

The File API ID of an uploaded image to use as input.

image_url: optional string

A fully qualified URL or base64-encoded data URL.

maxLength20971520
formaturi
prompt: string

A text description of the desired image edit.

minLength1
maxLength32000
background: optional "transparent" or "opaque" or "auto" or null (default: "auto")

Set the background of the generated image output. gpt-image-2.5-sunburst and gpt-image-2.5-flare, including their 2026-09-08 snapshots, support opaque and transparent backgrounds. Transparent backgrounds are available for supported GPT Image models. For gpt-image-2 and gpt-image-2-2026-04-21, this support is in preview. When using transparent, set the output format to png or webp.

One of the following:
"transparent"
"opaque"
"auto"
complexity: optional "low" or "medium" or "high" or null

Computation spent planning the image, independently of rendering quality. Uses the image model’s configured default when omitted. For SVG output, controls the reference image, independently of the SVG author’s reasoning.

One of the following:
"low"
"medium"
"high"
frame_count: optional integer or null

Number of frames for GIF output. Accepts integers from 2 through 16. Defaults to 9 when omitted. Only supported with output_format=gif. The requested size must satisfy the selected model’s GIF size limits. GIF output does not support streaming, partial images, masks, or custom output compression. Requires access to the GIF preview for the selected model.

minimum2
maximum16
frame_duration_ms: optional integer or null

Requested delay per GIF frame, in milliseconds. Defaults to 200 when omitted. GIF output rounds to the nearest 10 ms and caps the encoded delay at 655,350 ms per frame. Only supported with output_format=gif.

minimum20
input_fidelity: optional "high" or "low" or null

Control how much effort the model will exert to match the style and features, especially facial features, of input images. Supports high and low on gpt-image-1.5; gpt-image-1-mini supports only low. For gpt-image-2, omit this parameter. Defaults to low on supported models.

One of the following:
"high"
"low"
markup: optional object { file_id, image_url }

A transparent PNG overlaid on the first image, referenced by file ID, HTTPS URL, or base64 data URL. Must match that image’s dimensions after orientation and contain transparent pixels. Supports GPT Image 2.5. Cannot be combined with mask.

file_id: optional string

The File API ID of an uploaded image to use as input.

image_url: optional string

A fully qualified URL or base64-encoded data URL.

maxLength20971520
formaturi
mask: optional object { file_id, image_url }

Reference an input image by either URL or uploaded file ID. Provide exactly one of image_url or file_id.

file_id: optional string

The File API ID of an uploaded image to use as input.

image_url: optional string

A fully qualified URL or base64-encoded data URL.

maxLength20971520
formaturi
model: optional string or "gpt-image-1.5" or "gpt-image-2" or "gpt-image-2-2026-04-21" or 9 more or null (default: "gpt-image-2.5-sunburst")

The GPT image model to use for image editing, including gpt-image-2, its dated snapshot gpt-image-2-2026-04-21, gpt-image-2.5-sunburst, gpt-image-2.5-sunburst-2026-09-08, gpt-image-2.5-flare, gpt-image-2.5-flare-2026-09-08, gpt-image-2.6-sunburst, and gpt-image-2.6-flare. Defaults to gpt-image-2.5-sunburst.

gpt-image-1 was shut down on October 23, 2026. Use gpt-image-2.5-sunburst or gpt-image-2.5-flare instead.

One of the following:
string
"gpt-image-1.5" or "gpt-image-2" or "gpt-image-2-2026-04-21" or 9 more

The GPT image model to use for image editing, including gpt-image-2, its dated snapshot gpt-image-2-2026-04-21, gpt-image-2.5-sunburst, gpt-image-2.5-sunburst-2026-09-08, gpt-image-2.5-flare, gpt-image-2.5-flare-2026-09-08, gpt-image-2.6-sunburst, and gpt-image-2.6-flare. Defaults to gpt-image-2.5-sunburst.

gpt-image-1 was shut down on October 23, 2026. Use gpt-image-2.5-sunburst or gpt-image-2.5-flare instead.

One of the following:
"gpt-image-1.5"
"gpt-image-2"
"gpt-image-2-2026-04-21"
"gpt-image-2.5-sunburst"
"gpt-image-2.5-sunburst-2026-09-08"
"gpt-image-2.5-flare"
"gpt-image-2.5-flare-2026-09-08"
"gpt-image-2.6-sunburst"
"gpt-image-2.6-flare"
"gpt-image-1-mini"
"chatgpt-image-latest"
"gpt-image-1"

Deprecated. GPT Image 1 was shut down on October 23, 2026. Use gpt-image-2.5-sunburst or gpt-image-2.5-flare instead.

moderation: optional "low" or "auto" or null (default: "auto")

Moderation level for GPT image models.

One of the following:
"low"
"auto"
n: optional integer or null (default: 1)

The number of edited images to generate.

minimum1
maximum10
output_compression: optional integer or null

Compression level for jpeg or webp output.

minimum0
maximum100
output_format: optional "png" or "webp" or "jpeg" or 2 more or null (default: "png")

Output image format. Supported for GPT image models. SVG output requires a supported image model and project access.

One of the following:
"png"
"webp"
"jpeg"
"gif"
"svg"
partial_images: optional integer or null (default: 0)

The number of partial images to generate. This parameter is used for streaming responses that return partial images. Value must be between 0 and 3. When set to 0, the response will be a single image sent in one streaming event.

Note that the final image may be sent before the full number of partial images are generated if the full image is generated more quickly.

minimum0
maximum3
quality: optional "low" or "medium" or "high" or 3 more or null (default: "auto")

Output quality for GPT image models. The GPT image models support low, medium, and high. gpt-image-2.5-sunburst and gpt-image-2.5-flare, including their 2026-09-08 snapshots, also support xhigh and max. Defaults to auto.

One of the following:
"low"
"medium"
"high"
"xhigh"
"max"
"auto"
safety_identifier: optional string or null

A stable identifier for an end user in your organization, used for safety monitoring and abuse detection. Hash a username or email address to avoid sending identifying information. A non-empty value takes precedence over the deprecated user parameter. If omitted, null, or empty, the API uses user when available. Learn more.

maxLength128
size: optional string or "auto" or "1024x1024" or "1536x1024" or "1024x1536" or null (default: "auto")

The size of the generated images. For gpt-image-2, gpt-image-2-2026-04-21, gpt-image-2.5-sunburst, gpt-image-2.5-sunburst-2026-09-08, gpt-image-2.5-flare, and gpt-image-2.5-flare-2026-09-08, arbitrary resolutions are supported as WIDTHxHEIGHT strings, for example 1536x864. Width and height must both be divisible by 16 and the requested aspect ratio must be between 1:3 and 3:1. Resolutions above 2560x1440 are experimental, and the maximum supported resolution is 3840x2160. The requested size must also satisfy the model’s current pixel and edge limits. The standard sizes 1024x1024, 1536x1024, and 1024x1536 are supported by the GPT image models; auto is supported for models that allow automatic sizing.

One of the following:
string
"auto" or "1024x1024" or "1536x1024" or "1024x1536"

The size of the generated images. For gpt-image-2, gpt-image-2-2026-04-21, gpt-image-2.5-sunburst, gpt-image-2.5-sunburst-2026-09-08, gpt-image-2.5-flare, and gpt-image-2.5-flare-2026-09-08, arbitrary resolutions are supported as WIDTHxHEIGHT strings, for example 1536x864. Width and height must both be divisible by 16 and the requested aspect ratio must be between 1:3 and 3:1. Resolutions above 2560x1440 are experimental, and the maximum supported resolution is 3840x2160. The requested size must also satisfy the model’s current pixel and edge limits. The standard sizes 1024x1024, 1536x1024, and 1024x1536 are supported by the GPT image models; auto is supported for models that allow automatic sizing.

One of the following:
"auto"
"1024x1024"
"1536x1024"
"1024x1536"
stream: optional boolean or null (default: false)

Stream partial image results as events.

svg: optional object { model, reasoning } or null

Selects the author model and reasoning effort for output_format=svg. Supply svg.model when SVG model selection is enabled. Otherwise, omit this object. SVG output requires n=1 and cannot use streaming, partial images, or output compression.

model: optional string
minLength1
reasoning: optional object { effort } or null

Reasoning effort for SVG authoring. When omitted, uses the author model’s default in both Images and Responses.

effort: optional "none" or "minimal" or "low" or 4 more

Controls how much effort the model should spend on reasoning for this request.

One of the following:
"none"
"minimal"
"low"
"medium"
"high"
"xhigh"
"max"
user: optional string

Deprecated.

Deprecated: use safety_identifier instead. This parameter remains accepted for backward compatibility and is used when safety_identifier is omitted, null, or empty. Learn more.

Returns
ImagesResponse object { created, background, data, 6 more }

The response from the image generation endpoint.

created: integer

The Unix timestamp (in seconds) of when the image was created.

formatunixtime
background: optional "transparent" or "opaque"

The background parameter used for the image generation. Either transparent or opaque.

One of the following:
"transparent"
"opaque"
data: optional array of Image { b64_json, revised_prompt, url }

The list of generated images.

b64_json: optional string

The base64-encoded JSON of the generated image. Returned by default for GPT image models, or when response_format is set to b64_json for models that support that parameter.

revised_prompt: optional string

The revised prompt used to generate the image, for models that support prompt revision. Not returned by GPT image models.

url: optional string

The URL of the generated image when response_format is set to url for models that support that parameter. Unsupported for GPT image models.

formaturi
output_format: optional "png" or "webp" or "jpeg" or 2 more

The output format of the generated or edited image.

One of the following:
"png"
"webp"
"jpeg"
"gif"
"svg"
quality: optional "low" or "medium" or "high" or 2 more

The quality of the image generated. One of low, medium, high, xhigh, or max.

One of the following:
"low"
"medium"
"high"
"xhigh"
"max"
safety_identifier: optional string or null

The effective safety identifier used for safety monitoring and abuse detection. This is the non-empty safety_identifier from the request, or the deprecated user value when safety_identifier is omitted, null, or empty.

size: optional string or "1024x1024" or "1024x1536" or "1536x1024"

The image dimensions as a WIDTHxHEIGHT string, for example 1536x864.

One of the following:
string
"1024x1024" or "1024x1536" or "1536x1024"

The image dimensions as a WIDTHxHEIGHT string, for example 1536x864.

One of the following:
"1024x1024"
"1024x1536"
"1536x1024"
svg_usage: optional object { input_tokens, model, output_tokens, 2 more }

Token usage for SVG authoring, separate from image rendering usage.

input_tokens: integer
model: string
output_tokens: integer
reasoning_tokens: integer
total_tokens: integer
usage: optional object { input_tokens, input_tokens_details, output_tokens, 2 more }

Token usage information for image generation with GPT Image models.

input_tokens: integer

The number of tokens (images and text) in the input prompt.

input_tokens_details: object { image_tokens, text_tokens }

The input tokens detailed information for the image generation.

image_tokens: integer

The number of image tokens in the input prompt.

text_tokens: integer

The number of text tokens in the input prompt.

output_tokens: integer

The number of output tokens generated by the model.

total_tokens: integer

The total number of tokens (images and text) used for the image generation.

output_tokens_details: optional object { image_tokens, text_tokens }

The output token details for the image generation.

image_tokens: integer

The number of image output tokens generated by the model.

text_tokens: integer

The number of text output tokens generated by the model.

Create image edit

curl -s -D >(grep -i x-request-id >&2) \
  -o >(jq -r '.data[0].b64_json' | base64 --decode > gift-basket.png) \
  -X POST "https://api.openai.com/v1/images/edits" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -F "model=gpt-image-1.5" \
  -F "image[]=@body-lotion.png" \
  -F "image[]=@bath-bomb.png" \
  -F "image[]=@incense-kit.png" \
  -F "image[]=@soap.png" \
  -F 'prompt=Create a lovely gift basket with these four items in it'
Returns Examples
200 — Example
{
  "created": 0,
  "background": "transparent",
  "data": [
    {
      "b64_json": "b64_json",
      "revised_prompt": "revised_prompt",
      "url": "https://example.com"
    }
  ],
  "output_format": "png",
  "quality": "low",
  "safety_identifier": "safety_identifier",
  "size": "1024x1024",
  "svg_usage": {
    "input_tokens": 0,
    "model": "model",
    "output_tokens": 0,
    "reasoning_tokens": 0,
    "total_tokens": 0
  },
  "usage": {
    "input_tokens": 0,
    "input_tokens_details": {
      "image_tokens": 0,
      "text_tokens": 0
    },
    "output_tokens": 0,
    "total_tokens": 0,
    "output_tokens_details": {
      "image_tokens": 0,
      "text_tokens": 0
    }
  }
}