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

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 and dall-e-2.

Body ParametersJSONExpand Collapse
images: array of object { file_id, image_url }

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

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

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"
input_fidelity: optional "high" or "low" or null

Controls fidelity to the original input image(s).

One of the following:
"high"
"low"
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 7 more or null

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, and gpt-image-2.5-flare-2026-09-08.

One of the following:
string
"gpt-image-1.5" or "gpt-image-2" or "gpt-image-2-2026-04-21" or 7 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, and gpt-image-2.5-flare-2026-09-08.

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-1"
"gpt-image-1-mini"
"chatgpt-image-latest"
moderation: optional "low" or "auto" or null

Moderation level for GPT image models.

One of the following:
"low"
"auto"
n: optional number or null

The number of edited images to generate.

minimum1
maximum10
output_compression: optional number or null

Compression level for jpeg or webp output.

minimum0
maximum100
output_format: optional "png" or "jpeg" or "webp" or null

Output image format. Supported for GPT image models.

One of the following:
"png"
"jpeg"
"webp"
partial_images: optional number or null

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

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"
size: optional string or "auto" or "1024x1024" or "1536x1024" or "1024x1536" or null

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

Stream partial image results as events.

user: optional string

A unique identifier representing your end-user, which can help OpenAI monitor and detect abuse.

ReturnsExpand Collapse
ImagesResponse object { created, background, data, 4 more }

The response from the image generation endpoint.

created: number

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 the GPT image models, and only present if response_format is set to b64_json for dall-e-2 and dall-e-3.

revised_prompt: optional string

For dall-e-3 only, the revised prompt that was used to generate the image.

url: optional string

When using dall-e-2 or dall-e-3, the URL of the generated image if response_format is set to url (default value). Unsupported for the GPT image models.

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

The output format of the image generation. Either png, webp, or jpeg.

One of the following:
"png"
"webp"
"jpeg"
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"
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"
usage: optional object { input_tokens, input_tokens_details, output_tokens, 2 more }

For gpt-image-1 only, the token usage information for the image generation.

input_tokens: number

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: number

The number of image tokens in the input prompt.

text_tokens: number

The number of text tokens in the input prompt.

output_tokens: number

The number of output tokens generated by the model.

total_tokens: number

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: number

The number of image output tokens generated by the model.

text_tokens: number

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'

Create image edit

curl -s -N -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' \
  -F "stream=true"
event: image_edit.partial_image
data: {"type":"image_edit.partial_image","b64_json":"...","partial_image_index":0}

event: image_edit.completed
data: {"type":"image_edit.completed","b64_json":"...","usage":{"total_tokens":100,"input_tokens":50,"output_tokens":50,"input_tokens_details":{"text_tokens":10,"image_tokens":40}}}
Returns Examples
{
  "created": 0,
  "background": "transparent",
  "data": [
    {
      "b64_json": "b64_json",
      "revised_prompt": "revised_prompt",
      "url": "https://example.com"
    }
  ],
  "output_format": "png",
  "quality": "low",
  "size": "1024x1024",
  "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
    }
  }
}