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 (gpt-image-1.5, gpt-image-1, gpt-image-1-mini, and chatgpt-image-latest) and dall-e-2.
Body Parameters
-
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 stringThe File API ID of an uploaded image to use as input.
-
image_url: optional stringA fully qualified URL or base64-encoded data URL.
-
-
prompt: stringA text description of the desired image edit.
-
background: optional "transparent" or "opaque" or "auto"Background behavior for generated image output.
-
"transparent" -
"opaque" -
"auto"
-
-
input_fidelity: optional "high" or "low"Controls fidelity to the original input image(s).
-
"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_urlorfile_id.-
file_id: optional stringThe File API ID of an uploaded image to use as input.
-
image_url: optional stringA fully qualified URL or base64-encoded data URL.
-
-
model: optional string or "gpt-image-1.5" or "gpt-image-1" or "gpt-image-1-mini" or "chatgpt-image-latest"The model to use for image editing.
-
string -
"gpt-image-1.5" or "gpt-image-1" or "gpt-image-1-mini" or "chatgpt-image-latest"The model to use for image editing.
-
"gpt-image-1.5" -
"gpt-image-1" -
"gpt-image-1-mini" -
"chatgpt-image-latest"
-
-
-
moderation: optional "low" or "auto"Moderation level for GPT image models.
-
"low" -
"auto"
-
-
n: optional numberThe number of edited images to generate.
-
output_compression: optional numberCompression level for
jpegorwebpoutput. -
output_format: optional "png" or "jpeg" or "webp"Output image format. Supported for GPT image models.
-
"png" -
"jpeg" -
"webp"
-
-
partial_images: optional numberThe 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.
-
quality: optional "low" or "medium" or "high" or "auto"Output quality for GPT image models.
-
"low" -
"medium" -
"high" -
"auto"
-
-
size: optional "auto" or "1024x1024" or "1536x1024" or "1024x1536"Requested output image size.
-
"auto" -
"1024x1024" -
"1536x1024" -
"1024x1536"
-
-
stream: optional booleanStream partial image results as events.
-
user: optional stringA unique identifier representing your end-user, which can help OpenAI monitor and detect abuse.
Returns
-
ImagesResponse object { created, background, data, 4 more }The response from the image generation endpoint.
-
created: numberThe Unix timestamp (in seconds) of when the image was created.
-
background: optional "transparent" or "opaque"The background parameter used for the image generation. Either
transparentoropaque.-
"transparent" -
"opaque"
-
-
data: optional array of ImageThe list of generated images.
-
b64_json: optional stringThe base64-encoded JSON of the generated image. Returned by default for the GPT image models, and only present if
response_formatis set tob64_jsonfordall-e-2anddall-e-3. -
revised_prompt: optional stringFor
dall-e-3only, the revised prompt that was used to generate the image. -
url: optional stringWhen using
dall-e-2ordall-e-3, the URL of the generated image ifresponse_formatis set tourl(default value). Unsupported for the GPT image models.
-
-
output_format: optional "png" or "webp" or "jpeg"The output format of the image generation. Either
png,webp, orjpeg.-
"png" -
"webp" -
"jpeg"
-
-
quality: optional "low" or "medium" or "high"The quality of the image generated. Either
low,medium, orhigh.-
"low" -
"medium" -
"high"
-
-
size: optional "1024x1024" or "1024x1536" or "1536x1024"The size of the image generated. Either
1024x1024,1024x1536, or1536x1024.-
"1024x1024" -
"1024x1536" -
"1536x1024"
-
-
usage: optional object { input_tokens, input_tokens_details, output_tokens, 2 more }For
gpt-image-1only, the token usage information for the image generation.-
input_tokens: numberThe 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: numberThe number of image tokens in the input prompt.
-
text_tokens: numberThe number of text tokens in the input prompt.
-
-
output_tokens: numberThe number of output tokens generated by the model.
-
total_tokens: numberThe 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: numberThe number of image output tokens generated by the model.
-
text_tokens: numberThe number of text output tokens generated by the model.
-
-
-
Example
curl https://api.openai.com/v1/images/edits \
-H 'Content-Type: application/json' \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-d '{
"images": [
{
"image_url": "https://example.com/source-image.png"
}
],
"prompt": "Add a watercolor effect to this image",
"background": "transparent",
"model": "gpt-image-1.5",
"moderation": "auto",
"n": 1,
"output_compression": 100,
"output_format": "png",
"partial_images": 1,
"quality": "high",
"size": "1024x1024",
"user": "user-1234"
}'
Response
{
"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
}
}
}
Edit image
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'
Streaming
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"
Response
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}}}