ChatGPT image style transfer: restyle a photo by API
For style transfer with ChatGPT Image 2.5 by API, send the photo as an input reference and name the new style in the prompt. The request and its limits.

Style transfer with ChatGPT Image 2.5 is an image edit: send your photo as an input_references item to POST /v1/images, and write the new style in the prompt, for example "make this scene look like a watercolor painting". Sume has no separate style-transfer route or style parameter; the style lives in your words and in an optional second reference.
The request shape comes from the Image API docs, read 2026-09-29. On the same date OpenAI's launch page says Images 2.5 is described as working from reference photos to transform familiar subjects across new settings, visual styles and compositions. That is OpenAI's claim about its model; check your own results.
What does a style-transfer request look like?
The docs' own image-to-image example is exactly this case, a watercolor restyle. Use the GPT Image 2.5 id and set aspect_ratio: "auto" so the output matches the photo's shape; the docs say omitting the field is not the same as sending auto.
curl -X POST "https://api.sume.com/v1/images" \
-H "Authorization: Bearer $SUME_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "openai/gpt-image-2.5",
"prompt": "Make this scene look like a watercolor painting. Keep the people, pose and layout.",
"input_references": [
{ "type": "image_url", "image_url": { "url": "https://example.com/photo.jpg" } }
],
"aspect_ratio": "auto"
}'How do I keep the subject while changing the style?
Say what must stay in the prompt, as the example does: the people, the pose, the layout. OpenAI's page describes the model as preserving subjects in reference photos, but it does not promise any particular result for a given style, so keep the prompt explicit.
If the edit should touch only one region, add mask_url; see GPT Image mask edit API.
Can I copy the style of a second image?
Both GPT Image 2.5 ids take up to 16 reference images. Send the photo first and a style example after it, then say in the prompt which image is the subject and which is the style. Nothing in the docs turns a second image into a style-only input, so the prompt has to assign the roles. More on that in GPT Image 2.5 reference images.
What are the limits?
Reference URLs must be public HTTPS; localhost, private-network and non-HTTPS URLs are rejected before submission. A request that sets a field the model does not list gets 400 unsupported_parameter.
| Item | GPT Image 2.5 on Sume |
|---|---|
| Model ids | openai/gpt-image-2.5 (Flare), openai/gpt-image-2.5-sunburst |
| Reference images | Up to 16 |
| Optional mask | mask_url, public HTTPS |
quality | auto, low, medium, high, xhigh, max; omitted means high |
| Slow calls | Past 30 seconds the call returns 202 and a job |
How much does one restyle cost?
Image calls are billed per image at the endpoint pricing, and a failed generation is not billed. Cost depends on quality and size; see GPT Image 2.5 API price for the reserve at each level. Because each try is billed when it completes, test a style on a lower quality value first, then re-run the keeper at the level you need.
Sources
Related posts
More in Use cases
- ChatGPT Images flyer template: a fill-in prompt for the API
Sume has no flyer template field. Build one as a fill-in prompt with exact text slots, a portrait image_size and a higher quality tier, then check every word.
- ChatGPT Images shared prompt: reuse it on your own photos via API
A shared image prompt is only text. Save it in a file, then run it over your own photos with input_references on Sume and match each result to its source.
- ChatGPT Images templates (Poster, Merch): are they in the API?
ChatGPT Images 2.5 templates like Poster and Merch are a ChatGPT feature. Sume's image API has no template field, so write the brief as a prompt.
- Custom AI avatar from a photo: allowlist or self-serve?
Google gates Live Avatar custom avatars behind enterprise allowlisting. Sume's avatar docs list a photo input on the create route. Request and rules.
Written by Sume