Grok Imagine Image Editing Quality
Integrate
xai/grok-imagine-image/quality/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/xai/grok-imagine-image/quality/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"
}'
# 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/xai/grok-imagine-image/quality/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"
}),
});
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",
}
# Run the model; wait up to 20 s for the finished result in the same call
r = requests.post(API + "/run/xai/grok-imagine-image/quality/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": "xai/grok-imagine-image/quality/edit",
"input": {
"prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
}
}
Call the Grok Imagine Image Editing Quality model (xai/grok-imagine-image/quality/edit) through the Doitong API. Docs for agents: https://doitong.com/en-US/developers/models/xai/grok-imagine-image/quality/edit.md
POST https://api.doitong.ru/v1/run/xai/grok-imagine-image/quality/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"
}
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/xai/grok-imagine-image/quality/edit with the same body returns the exact price before the run.
Files like the example: $0.05 50 API credits · ≈ ₽5.37 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 Grok Imagine Image by the Doitong community. Reuse a prompt in one click.
Brand guidelines: Visual style: Cinematic Realistic: photorealistic live-action, shallow depth of field, dramatic lighting, film grain. Reference images context (match the visual style and elements from these): - reference photo (style_reference): use as visual reference for setting, objects, and...
Art style: Cinematic Realistic. Full-length view, the entire figure visible from head to feet, standing upright, a 24-year-old man centered in frame. He is a fictional everyman: slim, slightly under-built frame with noticeably slouched, rounded shoulders and a caved-in posture that reads as...
Art style: мультяшный. An extreme wide high-angle composition looking down at the sunlit yellow kitchen table. Lily peers over the edge into her open turquoise lunchbox where Broc and Apple Slice sit side-by-side holding miniature bright red paper hearts aloft. Lily's expression transforms into...
Art style: Clay / Plasticine. ПОЖИЛАЯ АНЯ. Clay plasticine figure of an elderly woman with dark hair streaked with sculpted silver strands in a low bun. Her face is kind and lined, with visible clay texture. She wears a mustard-yellow knitted scarf over a dark-green cardigan. Silhouette tag:...
Art style: Clay / Plasticine. ЭЛЛИПСИС, другая локация. Гостиная с серыми незакрашенными стенами освещена окном и голой лампой. Миша в тёмно-синей толстовке и Аня в горчичном свитере стоят у стены, у каждого кисть в правой руке. На полу ровно два ведра коралловой краски.. изменить одежду на...
A traditional hand-drawn FILM STORYBOARD SHEET for scene 2: one page divided into a clean 3x3 grid of NINE separate rectangular panels, three rows of three, each panel a 9:16 rectangle with a thin ruled black border and a small hand-written panel number in its top-left corner from 1 to 9. Thin...
A traditional hand-drawn FILM STORYBOARD SHEET for scene 3: one page divided into a clean 3x3 grid of NINE separate rectangular panels, three rows of three, each panel a 9:16 rectangle with a thin ruled black border and a small hand-written panel number in its top-left corner from 1 to 9. Thin...
A traditional hand-drawn FILM STORYBOARD SHEET for scene 1: one page divided into a clean 3x3 grid of NINE separate rectangular panels, three rows of three, each panel a 9:16 rectangle with a thin ruled black border and a small hand-written panel number in its top-left corner from 1 to 9. Thin...
Art style: 3D Stylized Animation. Elara. Молодая женщина около 27 лет с выразительными карими глазами, аккуратным сияющим макияжем и теплыми каштановыми волосами, собранными в стильный свободный хвост. Атлетичное грациозное телосложение, открытая лучезарная улыбка. Одета в приталенный деловой...
Art style: Cinematic Realistic. Small kitchen, cold diffused window light. Anna in oatmeal cardigan stands at the table holding an unfolded medical sheet in both hands; a closed white door behind her. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ FINAL STYLE ENFORCEMENT (this is the authoritative...
Art style: Cinematic Realistic. Street outside an apartment entrance, overcast drizzle, wet asphalt. Exactly one dark grey hatchback at the curb, trunk open; Oleg in navy jacket holds a black duffel bag; Anna in oatmeal cardigan stands at the porch steps, left hand clutching her collar....
Art style: Cinematic Realistic. Kitchen doorway, same cold window light. Anna in oatmeal cardigan mid-step toward the door frame; worn brown plush teddy bear visible low at the right frame edge. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ FINAL STYLE ENFORCEMENT (this is the authoritative rendering...
Art style: Cinematic Realistic. Same street, drizzle. Oleg in navy jacket stands at the open trunk, right hand on its lid; Anna in oatmeal cardigan at his left, holding her collar. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ FINAL STYLE ENFORCEMENT (this is the authoritative rendering directive — it...
Art style: Cinematic Realistic. Same street, drizzle. Exactly one dark grey hatchback at the curb, driver door closed, Oleg inside at the wheel; Anna in oatmeal cardigan on the sidewalk beside a large puddle. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ FINAL STYLE ENFORCEMENT (this is the...
Art style: Cinematic Realistic. Same landing, warm lamp. Irina Petrovna in burgundy cardigan in the chained door gap, eyes aside; Anna in oatmeal cardigan facing her. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ FINAL STYLE ENFORCEMENT (this is the authoritative rendering directive — it overrides any...
Art style: Cinematic Realistic. Apartment landing, warm ceiling lamp. Anna in oatmeal cardigan in medium at the door; door open a hand's width on a brass chain, Irina Petrovna in burgundy cardigan in the gap. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ FINAL STYLE ENFORCEMENT (this is the...
Build a request
Controls are generated from the model schema. The code and the price update as you change them.
/run/xai/grok-imagine-image/quality/edit?wait=20
quote → $0.05
# 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/xai/grok-imagine-image/quality/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"
}'
# 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/xai/grok-imagine-image/quality/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"
}),
});
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",
}
# Run the model; wait up to 20 s for the finished result in the same call
r = requests.post(API + "/run/xai/grok-imagine-image/quality/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": "xai/grok-imagine-image/quality/edit",
"input": {
"prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
},
"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 Grok Imagine Image Editing Quality
Takes a text instruction in `prompt` (up to 8000 characters) and up to 3 source images in `image_urls`, then returns edited versions. Request 1 to 4 results with `num_images`, choose 1k or 2k `resolution`, and output as jpeg, png or webp. With `aspect_ratio` on auto, the output keeps the shape of the first input image. The response includes a revised prompt.
Parameters
Send either the canonical name or the native name, not both. Canonical names
promptrequired
num_imagesoptional
num_outputs
aspect_ratiooptional
resolutionoptional
output_formatoptional
enable_safety_checkeroptional
image_urlsoptional
images
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": "xai/grok-imagine-image/quality/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": 50,
"usd": "0.05",
"charged": 50,
"refunded": 0
},
"input": {
"prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
},
"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
}
],
"revised_prompt": "string"
},
"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}URL pointing to the edited image.
- revised_prompt
- string | nullEnhanced prompt used for image generation.
Other Grok Imagine Image variants
More models: Image Editing
For AI agents: this page as Markdown is at https://doitong.com/en-US/developers/models/xai/grok-imagine-image/quality/edit.md. All models and guides: https://doitong.com/developers/llms.txt






