
ᠠᠯᡳᠨ ᡠᠨᡩᡝᡵᡝᠮᡝ. “video”, “FLUX” ᠠᡶᡳ “webhooks” ᠪᡝ ᠪᠠᡳ᠌ᠯᠠ.
ᡩᠠᠯᡳᠨ ᠪᡝ ᡠᠯᡥᠠᠮᠪᡳ…
alibaba/qwen-image-3/text-to-image
# 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/alibaba/qwen-image-3/text-to-image?wait=20" \
-H "Authorization: Bearer $DOITONG_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"prompt": "A cozy bookstore window at dusk with a hand-painted wooden sign that reads \"Moonlight Books · 月光书店\", stacks of books, warm string lights, light rain on the glass, photorealistic."
}'
# 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/alibaba/qwen-image-3/text-to-image?wait=20", {
method: "POST",
headers,
body: JSON.stringify({
"prompt": "A cozy bookstore window at dusk with a hand-painted wooden sign that reads \"Moonlight Books · 月光书店\", stacks of books, warm string lights, light rain on the glass, photorealistic."
}),
});
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 cozy bookstore window at dusk with a hand-painted wooden sign that reads \"Moonlight Books · 月光书店\", stacks of books, warm string lights, light rain on the glass, photorealistic.",
}
# Run the model; wait up to 20 s for the finished result in the same call
r = requests.post(API + "/run/alibaba/qwen-image-3/text-to-image", 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/mnc/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": "alibaba/qwen-image-3/text-to-image",
"input": {
"prompt": "A cozy bookstore window at dusk with a hand-painted wooden sign that reads \"Moonlight Books · 月光书店\", stacks of books, warm string lights, light rain on the glass, photorealistic."
}
}
Qwen Image 3 Text to Image ᠮᠣᠳᡝᠯ (alibaba/qwen-image-3/text-to-image) ᠪᡝ Doitong API ᠵᠠᠯᡳᠨᡩᡝ ᠠᠰᡠᠮᠪᡳ. ᠠᡤᡝᠨᡨᡳ ᡩᠠᡳᠯᠠᠨ: https://doitong.com/mnc/developers/models/alibaba/qwen-image-3/text-to-image.md
POST https://api.doitong.ru/v1/run/alibaba/qwen-image-3/text-to-image?wait=20
Authorization: Bearer $DOITONG_API_KEY
Content-Type: application/json
{
"prompt": "A cozy bookstore window at dusk with a hand-painted wooden sign that reads \"Moonlight Books · 月光书店\", stacks of books, warm string lights, light rain on the glass, photorealistic."
}
ᡝᡵᡝᠮᡝ ᠪᡠᠮᡝᠨᡳ ᠠᠨᠠᠮᡝ "queued" ᡳᠨᡠ "running" ᠪᡝ, GET https://api.doitong.ru/v1/requests/REQUEST_ID?wait=20 ᠪᡝ ᠠᠨᠠᠮᡝ "succeeded" ᠪᡝᠴᡳ ᠠᠰᡠᠮᠪᡳ; ᡶᡳᠯᡝ ᠪᡝ outputs[].url ᠪᡝᠴᡳ ᠣᠨᡩᠣᠮᡝ. POST https://api.doitong.ru/v1/quote/alibaba/qwen-image-3/text-to-image ᠪᡝ ᡝᠮᡠ ᠪᡠᠶᡝᠮᡝ ᠪᡝ ᠠᠰᡠᠮᠪᡳᡩᡝ ᠵᠠᠯᡤᠠᠨ ᠪᡝ ᠶᠠᠪᡠᠮᠪᡳ ᠰᡳᠨᡳ ᠠᠮᡤᠠ ᠠᠰᡠᠮᠪᡳ ᠣᠯᡥᠣᠮᡝ.
ᡝᠨᡳ ᠵᠠᠯᡳᠨ: $0.04 40 API ᠺᠷᡝᡩᡳᠲ · ≈ ₽4.29 ᡝᡵᡝ ᠵᠠᠯᡳᠨᡩᡝ ᠠᠰᡠᠮᠪᡳ
ᠰᡳᠨᡳ ᠵᠠᠮᡠᠰᡳᠨ API ᠵᡳᡵᡤᠠ. ᡝᠯᡝ ᡝᠨᡩᡝ ᡳᠯᡤᠠᠮᠪᡳ ᡝᡵᡝ ᠮᡠᠨᡩᡝ ᡴᠣᡩᡝ ᡩᠠᠮᡠ ᠮᡝᠨᡩᡝᡵᡝ ᠪᠠᡩᡝᠯᡝᠨ ᠠᠮᡪᡳ ᡳᠨᡠ API ᠵᡳᡵᡤᠠ ᡩᡝᠪᡨᡝᡵᡝ ᡩᡝ ᠠᡴᡠ᠉ ᡳᠨᡠ ᡝᡵᡝᠩᡤᡝ ᠠᠮᠪᠠᠨ ᠮᡠᠨᡩᡝ ᠪᡝ ᠠᠰᡠᡵᠠᠮᠪᡳ: ᠮᡠᡵᡝ ᡩᠠᠮᡠ ᠪᡠᠶᡝᡵᡝ ᠪᠠᡩᡝᠯᡝᠨ ᡩᡝ ᠰᡳᠨᡩᡝᠮᡝ ᠠᠪᡠᠮᡝ ᠰᠠᠮᡪᡳ᠉
ᠵᠠᡴᡠᠨᡳ ᠵᡠᠯᡝ ᡩᡝᡵᡤᡳ ᡩᡝᠪᡝᠰᡠᠮᡝ ᠵᡠᠯᡤᡝ ᠪᡠᠶᡝᠮᡝ᠈ ᡳᠨᡳ ᡤᡳᠰᡠᠨ ᠪᠠᡳ ᡝᠨᡝᠩᡤᡳ ᠠᠮᠪᡳ
/run/alibaba/qwen-image-3/text-to-image?wait=20
ᠵᠠᠯᡳᠨ → $0.04
# 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/alibaba/qwen-image-3/text-to-image?wait=20" \
-H "Authorization: Bearer $DOITONG_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"prompt": "A cozy bookstore window at dusk with a hand-painted wooden sign that reads \"Moonlight Books · 月光书店\", stacks of books, warm string lights, light rain on the glass, photorealistic."
}'
# 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/alibaba/qwen-image-3/text-to-image?wait=20", {
method: "POST",
headers,
body: JSON.stringify({
"prompt": "A cozy bookstore window at dusk with a hand-painted wooden sign that reads \"Moonlight Books · 月光书店\", stacks of books, warm string lights, light rain on the glass, photorealistic."
}),
});
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 cozy bookstore window at dusk with a hand-painted wooden sign that reads \"Moonlight Books · 月光书店\", stacks of books, warm string lights, light rain on the glass, photorealistic.",
}
# Run the model; wait up to 20 s for the finished result in the same call
r = requests.post(API + "/run/alibaba/qwen-image-3/text-to-image", 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": "alibaba/qwen-image-3/text-to-image",
"input": {
"prompt": "A cozy bookstore window at dusk with a hand-painted wooden sign that reads \"Moonlight Books · 月光书店\", stacks of books, warm string lights, light rain on the glass, photorealistic."
},
"wait_seconds": 20
}
}
}
ᡳᠨᡝ ᠵᠠᠯᠠᠨ ᡝᡵᡝ ᠪᡠᡵᡝᠪᡝᡵᡳ ᡩᡝ ᠪᡳᠮᡝ᠈ Doitong API ᡩᡝ ᠵᡝᠯᡤᡳ ᡩᠠᡵᠠᠮᡝ᠈ Remember ᠵᡠᠯᡝᠮᡝ ᡤᡳᠯᠠᠮᡝ localStorage ᡩᡝ ᠰᡠᠯᡝᠮᡝ ᠪᡳᠮᡝ API ᠵᠠᠯᠠᠨ ᠠᠪᠠᠮᡝ
Qwen Image 3 ᡩᡝ ᡝᠨᡤᡳᠯᡳᠰᡳ ᡩᠣᠩᡤᠣ ᡥᡝᡵᡤᡝᠨ ᡠᠯᡥᡳᠨ ᡩᡝ ᠵᡳᠯᡤᠠᠨ ᠰᠠᠢᠨ ᠪᡝᠶᡝᠯᡝᠮᠪᡳ: ᠵᠠᠯᠠᠨ, ᠵᡠᠯᡤᡝᠨ, ᠪᠠᠨᠵᡳᠨ ᡩᠠᠯᠪᠠᠨ ᡳᠯᡳ ᠮᡝᠮᡝ. ᡩᡝ ᠪᡳᠰᡳᡵᡝ ᡩᠠᠯᠵᡳᠨ ᡳᠯᡳ ᠠᠪᡠᠯᠠᠮᡝ ᠠᡤᠠᠮᡝ ᠵᠠᠯᠠᠨ ᡳᠯᡳ ᡝᠮᡠ ᠵᠠᠯᠠᠨ ᠰᡳᠨᡝ ᡝᠮᡠ ᠵᠠᠯᠠᠨ ᠪᡝ ᠠᠰᡠᡵᡝᠮᠪᡳ, 512x512 ᠴᡳ 2048x2048 pixels ᡩᡝ ᠵᠠᠯᠠᠨ ᠪᡝ ᠪᡳᠰᡳᡵᡝᠮᠪᡳ. ᡝᠮᡠ ᡩᡝ ᠵᡠᠯᡤᡝᠨ ᠵᠠᠯᠠᠨ, PNG, JPEG ᡳᠯᡳ WebP.
ᠵᠠᡴᡠᠨᡳ ᡤᡳᠰᡠᠨ ᠵᡝᠯᡤᡳ ᠠᠪᠠᠮᠪᡳ᠈ ᠨᡝᠮᡝ ᠮᡠᠰᡝ ᡠᠯᠠᠮᠪᡳ ᠵᠠᡴᡠᠨᡳ ᡤᡳᠰᡠᠨ
promptᡴᠠᠷᠠᡴᡡ
negative_promptᠵᡠᠯᡝ
image_sizeᠵᡠᠯᡝ
enable_prompt_expansionᠵᡠᠯᡝ
seedᠵᡠᠯᡝ
num_imagesᠵᡠᠯᡝ
num_outputs
output_formatᠵᡠᠯᡝ
{
"id": "req_8k2m4q7x1z9c3v5b6n0p2r4t",
"object": "request",
"model": "alibaba/qwen-image-3/text-to-image",
"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": 40,
"usd": "0.04",
"charged": 40,
"refunded": 0
},
"input": {
"prompt": "A cute baby koala on a water slide holding a card that says \"Summer starts now\", bright afternoon light",
"negative_prompt": "low resolution, blurry, deformed",
"image_size": "square_hd"
},
"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
}
],
"seed": 42
},
"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"
}
}
AI ᠠᡤᡝᠨᡨᡳ ᡠᠴᡠᠷᡳ᠈ ᡝᡵᡝ ᡩᡝᠪᡝᡵᡳ Markdown ᠰᡳᠨᡩᠠᡵᡳ https://doitong.com/mnc/developers/models/alibaba/qwen-image-3/text-to-image.md. ᡝᡵᡝ ᠮᠣᡩᡝᠯ ᠵᠠᡴᡠᠨ ᠰᡠᠯᡠᠮᡝ https://doitong.com/developers/llms.txt