
Kāore he ōrite. Whakamātauria “video”, “FLUX” rānei “webhooks”.
E uta ana ngā tauira…
google/nano-banana-2.1
# 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/google/nano-banana-2.1?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/google/nano-banana-2.1?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/google/nano-banana-2.1", 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/mi/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": "google/nano-banana-2.1",
"input": {
"prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
}
}
Karangahia te tauira Nano Banana 2.1 (google/nano-banana-2.1) mā te Doitong API. Tuhinga mō ngā āpiha: https://doitong.com/mi/developers/models/google/nano-banana-2.1.md
POST https://api.doitong.com/v1/run/google/nano-banana-2.1?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"
}
Mēnā ko "queued" "running" rānei te tūnga whakautu, uiuitia GET https://api.doitong.com/v1/requests/REQUEST_ID?wait=20 kia "succeeded"; kei outputs[].url ngā kōnae. Ko POST https://api.doitong.com/v1/quote/google/nano-banana-2.1 me taua tinana anō ka whakahoki i te utu tika i mua i te whakahaere.
Tēnei tono: ≈$ 0.082 82 whiwhinga API Whakahaerehia ki tēnei whārangi
Tō kī API hou. Ka whakaaturia ināianei anake, ā, kua whakaurua kētia ki te waehere me te āpure kī API kei raro. Me huna: kaua rawa e waiho ki te waehere e whakahaere ana i roto i te pūtirotiro.
Ngā mahi tūmatanui i hangaia ki Nano Banana 2.1 e te hapori Doitong. Whakamahia anō he tono mā te pāwhiri kotahi.
Strong rule: style --- 3D Pixar ---. Высокий скалистый берег, омываемый бурными волнами глубокого темно-синего цвета. На вершине скалы стоит Певец, его фигура занимает центральную часть кадра. Камера снимает со среднего плана, чуть снизу вверх, чтобы подчеркнуть значимость момента. Солнце...
Strong rule: style --- 3D Pixar ---. Молодая девушка около 22 лет с яркими, выразительными карими глазами и копной каштановых вьющихся волос, собранных в небрежный пучок. На ней стильные очки в тонкой золотистой оправе и уютный оверсайз-худи пастельно-фиолетового цвета. Лицо отражает...
Strong rule: style --- 3D Pixar ---. Силуэт Певца на фоне огромного заходящего солнца. Он стоит в профиль, голова гордо поднята. Камера на дальнем плане. Небо окрашено в невероятные оттенки огненно-рыжего, пурпурного и глубокого синего. Солнце выглядит как огромный светящийся шар. Атмосфера...
Strong rule: style --- 3D Pixar ---. На горизонте появляется старинный парусник с ярко-алыми парусами, освещенный ярким солнцем. Он скользит по синей глади воды, оставляя за собой белый след. Камера снимает с уровня воды, глядя в сторону корабля. Цвета невероятно насыщенные: глубокая синева моря...
Strong rule: style --- 3D Pixar ---. Подводный мир в лазурных тонах. Лучи солнца пронзают толщу воды, создавая танцующие световые столбы (каустику) на песчаном дне. Камера находится под водой, снимая снизу вверх. Видны косяки мелких серебристых рыб и медленно колышущиеся водоросли. Атмосфера...
Strong rule: style --- 3D Pixar ---. Стилизованный молодой мужчина около 30 лет с округлым лицом и светлой кожей. У него светло-каштановые волосы средней длины, разделенные на прямой пробор, и выразительные большие голубые глаза за очками в широкой черной оправе. На лице аккуратная бородка и...
Strong rule: style --- 3D Pixar ---. Стилизованный молодой мужчина около 30 лет с округлым лицом и светлой кожей. У него светло-каштановые волосы средней длины, разделенные на прямой пробор, и выразительные большие голубые глаза за очками в широкой черной оправе. На лице аккуратная бородка и...
Strong rule: style --- 3D Pixar ---. Сюрреалистичный и нежный образ: огромные волны, напоминающие по форме ладони, бережно держат маленькие бумажные кораблики и сказочные фрегаты. Камера на среднем плане. Освещение мягкое, лунное, создающее сказочную атмосферу. Море выглядит живым и заботливым....
Strong rule: style --- 3D Pixar ---. Величественный общий план: Певец стоит на краю обрыва, раскинув руки, на фоне огромного бушующего океана. Огромные волны бьются о подножие скал, поднимая тучи белой пены. Камера расположена далеко, создавая масштабную композицию. Небо затянуто драматичными...
Strong rule: style --- 3D Pixar ---. Стилизованный кадр открытого космоса, переходящий в земную атмосферу. Видны туманности синего цвета и падающие звезды-метеоры, оставляющие длинные хвосты. Камера совершает быстрый пролет сквозь пространство. Освещение неоновое, магическое. Атмосфера...
Strong rule: style --- 3D Pixar ---. Ночное небо над морем, усыпанное мириадами ярких звезд и Млечным Путем. Звезды отражаются в спокойной темной воде, создавая иллюзию бесконечного пространства. Камера направлена вверх под углом 45 градусов. Освещение холодное, лунное, с серебристыми бликами на...
Strong rule: style --- 3D Pixar ---. Крупный план морской пены, разбивающейся о прибрежные камни. Брызги воды разлетаются во все стороны, сверкая как алмазы в лучах восходящего солнца. Камера зафиксирована в динамичном ракурсе сбоку. Освещение теплое, золотистое, контрастирующее с холодными...
Strong rule: style --- 3D Pixar ---. Крупный план лица Певца, выражающего глубокое одухотворение. Его глаза блестят от эмоций, взгляд направлен вдаль. Он прикладывает руку к сердцу в искреннем жесте. Камера находится на уровне глаз, создавая интимную связь со зрителем. Фоном служит размытый...
Strong rule: style --- 3D Pixar ---. Финальный кадр: горизонт, где небо встречается с морем в полной темноте, освещенный лишь тонкой полоской света. Камера зафиксирована. В центре кадра появляется каллиграфическая надпись 'Синяя вечность'. Стиль минималистичный и элегантный. Освещение едва...
Strong rule: style --- 3D Pixar ---. Вид с палубы корабля с алыми парусами, уходящего в закат. Камера направлена вперед, в сторону заходящего солнца, которое касается горизонта. Паруса занимают часть кадра, они пылают красным цветом. Освещение теплое, оранжево-золотое. Атмосфера умиротворения и...
Strong rule: style --- 3D Pixar ---. Возвращение к эпическому виду скал в полдень. Солнце стоит в зените, освещая море до самого дна у берега. Певец стоит на той же скале, но теперь его образ еще более мощный и уверенный. Камера делает круговой облет (bullet time эффект). Освещение максимально...
Ka hangaia ngā mana whakahaere mai i te aronuinga o te tauira. Ka whakahoungia te waehere me te utu ina whakarerekē koe.
/run/google/nano-banana-2.1?wait=20
utu → $ 0.082
# 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/google/nano-banana-2.1?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/google/nano-banana-2.1?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/google/nano-banana-2.1", 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": "google/nano-banana-2.1",
"input": {
"prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
},
"wait_seconds": 20
}
}
}
Ka noho tō kī ki tēnei pūtirotiro: ka tukuna ki te Doitong API anake, ā, ka tiakina ki te localStorage anake ina tohua e koe te Mahara. Tikina he kī API
Ka hanga whakaahua mai i tētahi `prompt` e 50000 pūāhua te mōrahi. Ko `resolution` te 1K, 2K, 4K rānei, ā, kei `aspect_ratio` te auto me ngā ōwehenga tino rerekē pērā i te 8:1 me te 1:8. Ka tāpiri i `enable_web_search`, `system_prompt`, me te `thinking_level` ko te minimal, medium, high rānei. Kia 4 ngā whakaahua mō ia tono.
Tukuna te ingoa tōmua, te ingoa taketake rānei, kaua e rua. Ngā ingoa tōmua
prompte hiahiatia ana
num_imageskōwhiringa
num_outputs
seedkōwhiringa
aspect_ratiokōwhiringa
output_formatkōwhiringa
safety_tolerancekōwhiringa
system_promptkōwhiringa
resolutionkōwhiringa
limit_generationskōwhiringa
enable_web_searchkōwhiringa
thinking_levelkōwhiringa
{
"id": "req_8k2m4q7x1z9c3v5b6n0p2r4t",
"object": "request",
"model": "google/nano-banana-2.1",
"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": 82,
"usd": "0.082",
"charged": 82,
"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
}
],
"description": "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"
}
}
Mō ngā āpiha AI: kei te wātea tēnei whārangi hei Markdown ki https://doitong.com/mi/developers/models/google/nano-banana-2.1.md. Ngā tauira me ngā aratohu katoa: https://doitong.com/developers/llms.txt