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.com/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.com/v1/requests/REQUEST_ID?wait=20" \
-H "Authorization: Bearer $DOITONG_API_KEY"
const API = "https://api.doitong.com/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.com/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/developers/docs/mcp)
claude mcp add --transport http doitong-models https://api.doitong.com/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/developers/models/xai/grok-imagine-image/quality/edit.md
POST https://api.doitong.com/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.com/v1/requests/REQUEST_ID?wait=20 until it is "succeeded"; the files are in outputs[].url. POST https://api.doitong.com/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 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.
Art style: Professional portrait photography, cinematic lighting, realistic high detail. День. Тротуар у фудтрака, точно восемь горожан стоят в очереди неподвижно. Медиум: клерк в расстёгнутом пальто держит сэндвич в правой руке у рта. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ FINAL STYLE...
Art style: Professional portrait photography, cinematic lighting, realistic high detail. День, медиум изнутри окна фудтрака. Арина за стойкой держит в правой руке золотой конверт, в левой магнит. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ FINAL STYLE ENFORCEMENT (this is the authoritative rendering...
Art style: Professional portrait photography, cinematic lighting, realistic high detail. Арена, свет софитов, на табло алые цифры 00:45. Трибуны полны и неподвижны. Медиум: Арина с чёрной повязкой на волосах держит сковороду правой рукой. Натан стоит за столом напротив, в его руке пинцет....
Art style: Professional portrait photography, cinematic lighting, realistic high detail. Медиум: Арина у стола арены, в правой руке сковорода над пустой глиняной тарелкой, свет софитов. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ FINAL STYLE ENFORCEMENT (this is the authoritative rendering directive —...
Art style: Professional portrait photography, cinematic lighting, realistic high detail. Судейский стол под софитами. Точно трое критиков в смокингах сидят за ним. Перед ними тарелка с пеной и глиняная тарелка с глазурью. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ FINAL STYLE ENFORCEMENT (this is the...
Art style: Professional portrait photography, cinematic lighting, realistic high detail. Арена, медиум: Натан у стального стола держит пинцет в правой руке, за ним тёмный медиафасад. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ FINAL STYLE ENFORCEMENT (this is the authoritative rendering directive — it...
Art style: Professional portrait photography, cinematic lighting, realistic high detail. Медиум: Арина у стола арены держит обеими руками золотой кубок на уровне груди, золотой свет софитов. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ FINAL STYLE ENFORCEMENT (this is the authoritative rendering...
Art style: Professional portrait photography, cinematic lighting, realistic high detail. День, светлая панорамная кухня с окнами. Медиум: Арина в чёрном кителе идёт к раздаче, в правой руке дымящееся блюдо. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ FINAL STYLE ENFORCEMENT (this is the authoritative...
Art style: 3D Cartoon. Opa Sigmund. Ein 70-jähriger Mann mit flauschigem weißem Haar, einem gepflegten weißen Bart und einer runden Brille auf einer freundlich faltigen Nase. Er trägt einen kuscheligen braunen Strick-Cardigan über einem weißen Hemd mit dunkler Fliege. Seine Augen sind ein warmes...
Art style: 3D Cartoon. Der Enkel. Ein sechsjähriger Junge mit zerzaustem dunkelbraunem Haar und großen, neugierigen braunen Augen. Er trägt einen groben Wollpullover in Waldgrün. Er sitzt mit verschränkten Beinen auf einem gemusterten Orientteppich und blickt mit offenem Mund und voller...
Art style: 3D Cartoon. Columbus standing in the middle ground. Columbus is standing on deck in the middle ground in the midground. Torso facing camera. Head facing camera. Eyes on horizon. Gripping railing. Determined. Ships sits in the middle ground in the background. Wide shot from a low angle,...
Art style: 3D Cartoon. Sigmund standing in the near foreground; Enkel standing further back in the frame. Sigmund is standing on floor in the near foreground in the midground. Torso in three-quarter turn to screen-right. Head in three-quarter turn to screen-right. Eyes on Globe. On globe. Serene....
Art style: 3D Cartoon. Rodrigo standing in the middle ground. Rodrigo is standing on crow's nest in the middle ground in the foreground. Torso facing camera. Ships sits in the middle ground in the midground. Extreme wide shot from a high angle, 9:16. Horizon high. Opening extreme wide, ending...
Art style: Classic Fairytale. Бао. Round chubby plush panda toy, soft black-and-white fur with visible fabric pile texture, big fat white belly, black ear and limb patches, shiny black button eyes, tiny stitched smile, stubby legs, waddling gait, no clothing and no props. Silhouette tag: widest...
Cinematic head-and-shoulders portrait, face close-up, sharp eyes in crisp focus, shallow depth of field, soft key light with gentle rim light, filmic colour grading. The character looks slightly past the camera with a natural, expressive gaze. Neutral, softly blurred background. No text, no...
Art style: Paper Cut. PUP. Paper-cut style small sandy-brown puppy, fluffy layered paper fur, oversized paws and ears, bright shiny dark eyes, no grey on muzzle, the same frayed red collar with round brass tag but loose and sliding over one shoulder, textured torn paper edges, brighter warmer...
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.com/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.com/v1/requests/REQUEST_ID?wait=20" \
-H "Authorization: Bearer $DOITONG_API_KEY"
const API = "https://api.doitong.com/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.com/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.com/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t",
"cancel": "https://api.doitong.com/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/developers/models/xai/grok-imagine-image/quality/edit.md. All models and guides: https://doitong.com/developers/llms.txt






