GPT-Image 1.5 · Edit
Integrate
gpt-image-1.5/edit
# Run the model; wait up to 20 s for the finished result in the same call
curl -X POST "https://api.doitong.ru/v1/run/gpt-image-1.5/edit?wait=20" \
-H "Authorization: Bearer $DOITONG_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field",
"images": [
"https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg"
]
}'
# Still "queued" or "running"? Poll with the id from the response:
curl "https://api.doitong.ru/v1/requests/REQUEST_ID?wait=20" \
-H "Authorization: Bearer $DOITONG_API_KEY"
const API = "https://api.doitong.ru/v1";
const headers = {
"Authorization": "Bearer " + process.env.DOITONG_API_KEY,
"Content-Type": "application/json",
};
// Run the model; wait up to 20 s for the finished result in the same call
let res = await fetch(API + "/run/gpt-image-1.5/edit?wait=20", {
method: "POST",
headers,
body: JSON.stringify({
"prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field",
"images": [
"https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg"
]
}),
});
let request = await res.json();
if (!res.ok) throw new Error(request.error.code + ": " + request.error.message);
// Not finished yet: long-poll until it is
while (request.status === "queued" || request.status === "running") {
res = await fetch(API + "/requests/" + request.id + "?wait=20", { headers });
request = await res.json();
}
if (request.status !== "succeeded") throw new Error(JSON.stringify(request.error));
console.log(request.outputs.map((o) => o.url), request.cost.credits + " API credits ($" + request.cost.usd + ")");
import os
import requests
API = "https://api.doitong.ru/v1"
headers = {"Authorization": "Bearer " + os.environ["DOITONG_API_KEY"]}
payload = {
"prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field",
"images": [
"https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg",
],
}
# Run the model; wait up to 20 s for the finished result in the same call
r = requests.post(API + "/run/gpt-image-1.5/edit", params={"wait": 20}, json=payload, headers=headers)
request = r.json()
if not r.ok:
raise RuntimeError(request["error"]["code"] + ": " + request["error"]["message"])
# Not finished yet: long-poll until it is
while request["status"] in ("queued", "running"):
request = requests.get(API + "/requests/" + request["id"], params={"wait": 20}, headers=headers).json()
if request["status"] != "succeeded":
raise RuntimeError(request["error"])
print([o["url"] for o in request["outputs"]], request["cost"]["credits"], "API credits", "$" + request["cost"]["usd"])
# 1. Connect once (Claude Code; Cursor, VS Code, Claude Desktop: https://doitong.com/en-US/developers/docs/mcp)
claude mcp add --transport http doitong-models https://api.doitong.ru/v1/mcp \
--header "Authorization: Bearer $DOITONG_API_KEY"
# 2. Your agent calls the "run" tool with:
{
"model_id": "gpt-image-1.5/edit",
"input": {
"prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field",
"images": [
"https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg"
]
}
}
Call the GPT-Image 1.5 · Edit model (gpt-image-1.5/edit) through the Doitong API. Docs for agents: https://doitong.com/en-US/developers/models/gpt-image-1.5/edit.md
POST https://api.doitong.ru/v1/run/gpt-image-1.5/edit?wait=20
Authorization: Bearer $DOITONG_API_KEY
Content-Type: application/json
{
"prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field",
"images": [
"https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg"
]
}
If the response status is "queued" or "running", poll GET https://api.doitong.ru/v1/requests/REQUEST_ID?wait=20 until it is "succeeded"; the files are in outputs[].url. POST https://api.doitong.ru/v1/quote/gpt-image-1.5/edit with the same body returns the exact price before the run.
Files like the example: $0.225 225 API credits · ≈ ₽23.98 your files are measured before the run Run it on this page
Your new API key. It is shown only now and is already in the code and in the API key field below. Keep it secret: never put it in code that runs in a browser.
Made on Doitong
Public works made with GPT-Image 1.5 by the Doitong community. Reuse a prompt in one click.
Art style: Кинематографичный, реалистичный стиль. Она отнимает полотенце от лица. В зеркале — ее обычное, симпатичное лицо. Она смотрит с недоверием, затем на ее лице появляется огромное облегчение и легкая, искренняя улыбка. Свет снова становится теплым. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━...
Grungy analog photo of Daphne Blake (from Serial scooby doo) watching her own movie on a 90s CRT TV in a dimly lit bedroom. The TV clearly shows animated scene from scooby doo, with a cartoon-style Daphne in her classic clothes on screen, smiling. Daphne Blake is sitting cross-legged on the floor...
Strong rule: style --- Cinematic Realistic ---. Энергичная девушка 27 лет с широкой лучезарной улыбкой и задорными искорками в темных глазах. Короткая стильная стрижка пикси, волосы выкрашены в модный пепельный блонд. Одета в яркую джинсовую куртку с цветными нашивками и белую футболку. Образ...
Strong rule: style --- Cinematic Realistic ---. Молодая женщина около 30 лет, утонченные черты лица, высокие скулы, пронзительные зеленые глаза. Волосы уложены в безупречное каре каштанового цвета. Одета в дорогой шелковый бежевый блейзер и изящные золотые украшения. Образ излучает уверенность,...
Use facial feature of attached photo. A realistic portrait of a woman with black hair loosely tied back, sitting outside a whitewashed stone house with a conical roof in a quiet Italian village. She wears a soft yellow floral summer dress with puff sleeves and white strappy heels. A wicker basket...
Фотореалистичная рекламная композиция в вертикальном формате 9:16. На переднем плане большая яркая глянцевая фольгированная розово-синяя упаковка чипсов в современном стильном дизайне, с глянцевой поверхностью, бликами и складками, как у реального продукта. В левом углу упаковки средний логотип...
Art style: Кинематографичный, реалистичный стиль. Резкая смена кадра. Девушка с ужасом смотрит на себя в зеркало. Маска снята, но ее лицо гротескно искажено: глаза слишком большие, улыбка растянута неестественно. Освещение стало холодным и резким. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ FINAL...
Art style: Кинематографичный, реалистичный стиль. Резкая смена кадра. Девушка с ужасом смотрит на себя в зеркало. Маска снята, но ее лицо гротескно искажено: глаза слишком большие, улыбка растянута неестественно. Освещение стало холодным и резким. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ FINAL...
Art style: Realistic Photography. Средний план. Самат сидит за минималистичным рабочим столом, смотрит прямо в камеру. На столе ноутбук и чашка кофе. Эстетика "Expert & Leader". ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ FINAL STYLE ENFORCEMENT (this is the authoritative rendering directive — it...
Art style: 90s Cinematic Fashion. Vertical 9:16 cinematic rear three-quarter exterior shot of a period-accurate four-door yellow New York taxi parked parallel and close to a Manhattan curb. The camera is positioned on the sidewalk slightly BEHIND the woman and man, looking diagonally toward the...
Use facial feature of attached photo. A realistic street style portrait of a smiling woman with shoulder-length black hair standing beside a small vintage white three-wheeled vehicle in a narrow old-town street. She wears a flowing pale yellow floral dress with a deep neckline and a front slit,...
Editorial business conference photography, a middle-aged man with short silver hair, warm olive skin, deep brown eyes, thick dark eyebrows, a neatly trimmed salt-and-pepper beard and mustache, strong jawline, calm confident expression, standing directly on the front edge of a massive keynote...
Use facial feature of attached photo. A realistic portrait of a woman with black hair loosely tied back, sitting outside a whitewashed stone house with a conical roof in a quiet Italian village. She wears a soft yellow floral summer dress with puff sleeves and white strappy heels. A wicker basket...
Art style: Кинематографичный, теплый и эмоциональный, в ст.... Солнечный осенний парк, дорожка усыпана желтыми листьями. Молодая мама и маленький мальчик идут рука об руку, улыбаясь друг другу. Свет мягкий и теплый, создавая уютную атмосферу. Стиль: теплая, кинематографичная фотография....
Art style: Кинематографичный, теплый и эмоциональный, в ст.... Мама и Мироша снова идут по дорожке парка. Теперь мама держит его на руках, и он с улыбкой смотрит по сторонам, показывая на что-то пальцем. На его лице больше нет слез. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ FINAL STYLE ENFORCEMENT...
Art style: Кинематографичный, теплый и эмоциональный, в ст.... Крупный план: Мироша сидит на земле, его лицо искажено плачем, на глазах блестят слезы. Одна коленка испачкана землей. На заднем плане размытый силуэт подбегающей мамы. Композиция передает внезапность и расстройство....
Build a request
Controls are generated from the model schema. The code and the price update as you change them.
/run/gpt-image-1.5/edit?wait=20
quote → $0.225
# Run the model; wait up to 20 s for the finished result in the same call
curl -X POST "https://api.doitong.ru/v1/run/gpt-image-1.5/edit?wait=20" \
-H "Authorization: Bearer $DOITONG_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field",
"images": [
"https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg"
]
}'
# Still "queued" or "running"? Poll with the id from the response:
curl "https://api.doitong.ru/v1/requests/REQUEST_ID?wait=20" \
-H "Authorization: Bearer $DOITONG_API_KEY"
const API = "https://api.doitong.ru/v1";
const headers = {
"Authorization": "Bearer " + process.env.DOITONG_API_KEY,
"Content-Type": "application/json",
};
// Run the model; wait up to 20 s for the finished result in the same call
let res = await fetch(API + "/run/gpt-image-1.5/edit?wait=20", {
method: "POST",
headers,
body: JSON.stringify({
"prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field",
"images": [
"https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg"
]
}),
});
let request = await res.json();
if (!res.ok) throw new Error(request.error.code + ": " + request.error.message);
// Not finished yet: long-poll until it is
while (request.status === "queued" || request.status === "running") {
res = await fetch(API + "/requests/" + request.id + "?wait=20", { headers });
request = await res.json();
}
if (request.status !== "succeeded") throw new Error(JSON.stringify(request.error));
console.log(request.outputs.map((o) => o.url), request.cost.credits + " API credits ($" + request.cost.usd + ")");
import os
import requests
API = "https://api.doitong.ru/v1"
headers = {"Authorization": "Bearer " + os.environ["DOITONG_API_KEY"]}
payload = {
"prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field",
"images": [
"https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg",
],
}
# Run the model; wait up to 20 s for the finished result in the same call
r = requests.post(API + "/run/gpt-image-1.5/edit", params={"wait": 20}, json=payload, headers=headers)
request = r.json()
if not r.ok:
raise RuntimeError(request["error"]["code"] + ": " + request["error"]["message"])
# Not finished yet: long-poll until it is
while request["status"] in ("queued", "running"):
request = requests.get(API + "/requests/" + request["id"], params={"wait": 20}, headers=headers).json()
if request["status"] != "succeeded":
raise RuntimeError(request["error"])
print([o["url"] for o in request["outputs"]], request["cost"]["credits"], "API credits", "$" + request["cost"]["usd"])
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "run",
"arguments": {
"model_id": "gpt-image-1.5/edit",
"input": {
"prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field",
"images": [
"https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg"
]
},
"wait_seconds": 20
}
}
}
Run this request
Your key stays in this browser: it is sent only to the Doitong API and saved (localStorage) only if you tick Remember. Get an API key
About GPT-Image 1.5 · Edit
Edits reference images from `image_urls` using a prompt of up to 32000 characters. An optional `mask_image_url` marks which region to change. `input_fidelity` is low or high (default high), quality is low, medium or high, and size can be auto or one of three fixed sizes. Up to 4 images, in png, jpeg or webp.
Parameters
Send either the canonical name or the native name, not both. Canonical names
promptrequired
image_urlsrequired
images
image_sizeoptional
backgroundoptional
qualityoptional
input_fidelityoptional
num_imagesoptional
num_outputs
output_formatoptional
mask_image_urloptional
File parameters take a public https:// URL, a data: URI up to 10 MB, or the file_url of an upload. Files
Output
{
"id": "req_8k2m4q7x1z9c3v5b6n0p2r4t",
"object": "request",
"model": "gpt-image-1.5/edit",
"status": "succeeded",
"created_at": "2026-10-20T12:00:00Z",
"started_at": "2026-10-20T12:00:02Z",
"completed_at": "2026-10-20T12:00:09Z",
"queue_position": null,
"cost": {
"credits": 225,
"usd": "0.225",
"charged": 225,
"refunded": 0
},
"input": {
"prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field",
"image_urls": [
"https://content.doitong.com/images/showcase/v3/gen_fox_cartoon.jpg"
]
},
"output": {
"images": [
{
"url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.jpeg",
"content_type": "image/jpeg",
"file_name": "0-output.jpeg",
"file_size": 1843200,
"width": 1024,
"height": 768
}
]
},
"outputs": [
{
"type": "image",
"url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.jpeg",
"content_type": "image/jpeg",
"file_size": 1843200,
"width": 1024,
"height": 768,
"stored": true
}
],
"error": null,
"metrics": {
"inference_seconds": 6.8
},
"urls": {
"self": "https://api.doitong.ru/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t",
"cancel": "https://api.doitong.ru/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t/cancel"
}
}
Fields of output
- images
- array of object {url, content_type, file_name, file_size, width, height}Images produced by the model.
Other GPT-Image 1.5 variants
More models: Image Editing
For AI agents: this page as Markdown is at https://doitong.com/en-US/developers/models/gpt-image-1.5/edit.md. All models and guides: https://doitong.com/developers/llms.txt






