Greitoji pradžia
Pirmąjį generavimą atlikite per kelias minutė. Visi 1 496 modeliai naudoja tokio paties tipo užklausą ir grąžina tą patį užklausos objektą vaizdams, vaizdo įrašams ir garsui: išmokite tai čia vieną kartą.
1. Gaukite API raktą
Sukurkite raktą adresu https://doitong.com/developers/dashboard#keys ir išsaugokite jį aplinkos
kintamajame: jis rodomas tik vieną kartą. Kiekvienas raktas gali turėti savo biudžetą, todėl galite perduoti jį agentui
nerizikuodami visa paskyra. GET /account grąžina jūsų API likutį.
export DOITONG_API_KEY="doitong_..."
curl "https://api.doitong.com/v1/account" \
-H "Authorization: Bearer $DOITONG_API_KEY"
const res = await fetch("https://api.doitong.com/v1/account", {
headers: { Authorization: `Bearer ${process.env.DOITONG_API_KEY}` },
});
console.log(await res.json());
import os
import requests
r = requests.get(
"https://api.doitong.com/v1/account",
headers={"Authorization": f"Bearer {os.environ['DOITONG_API_KEY']}"},
)
print(r.json())
Už generavimus mokama iš jūsų paskyros API likučio API kreditais: 1 000 API kreditų = 1 $, o kiekvienas modelis kainuoja tiksliai tiek, kiek nustatė jo kūrėjas. Papildykite likutį adresu https://doitong.com/developers/dashboard#balance.
2. Gaukite kainą, tada vykdykite
POST /quote/{model_id} priima įvesties JSON ir grąžina tikslią kainą. Rakto nereikia ir nieko nekainuoja.
Vykdant tą pačią įvestį kaina bus būtent tokia: kainos pasiūlymas yra mokestis. (Išimtis – modelis, kurio kaina priklauso nuo
naudojimo: jo kainos pasiūlymas yra didžiausia galima vykdymo kaina, o nepanaudota dalis grąžinama po vykdymo.)
curl -X POST "https://api.doitong.com/v1/quote/kling-video/v3/pro/image-to-video" \
-H "Content-Type: application/json" \
-d '{"image": "https://example.com/fox.jpg", "duration": 5, "generate_audio": true}'
const res = await fetch("https://api.doitong.com/v1/quote/kling-video/v3/pro/image-to-video", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ image: "https://example.com/fox.jpg", duration: 5, generate_audio: true }),
});
const quote = await res.json();
console.log(quote.credits, quote.usd); // 840 "0.84"
import requests
r = requests.post(
"https://api.doitong.com/v1/quote/kling-video/v3/pro/image-to-video",
json={"image": "https://example.com/fox.jpg", "duration": 5, "generate_audio": True},
)
print(r.json()["credits"], r.json()["usd"]) # 840 0.84
{
"object": "quote",
"model": "kling-video/v3/pro/image-to-video",
"credits": 840,
"usd": "0.84",
"unit": "second",
"quantity": 5,
"unit_credits": 168,
"mode": "exact",
"breakdown": "5 s × 168 API credits"
}
Tada siųskite tą patį turinį į POST /run/{model_id}. Pridėkite ?wait=20, kad ryšys būtų palaikomas iki 20 sekundžių: greitas
modelis grąžins užbaigtą rezultatą per vieną užklausą ir atsakymą. Siųskite Idempotency-Key antraštę, kad pakartotinė užklausa
niekada nebūtų įvykdyta (arba apmokestinta) du kartus.
curl -X POST "https://api.doitong.com/v1/run/flux/schnell?wait=20" \
-H "Authorization: Bearer $DOITONG_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: lighthouse-001" \
-d '{"prompt": "A lighthouse on a rocky coast at dusk, warm light in the window"}'
const res = await fetch("https://api.doitong.com/v1/run/flux/schnell?wait=20", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.DOITONG_API_KEY}`,
"Content-Type": "application/json",
"Idempotency-Key": "lighthouse-001",
},
body: JSON.stringify({ prompt: "A lighthouse on a rocky coast at dusk, warm light in the window" }),
});
const request = await res.json();
console.log(request.status, request.outputs[0]?.url);
import os
import requests
r = requests.post(
"https://api.doitong.com/v1/run/flux/schnell",
params={"wait": 20},
headers={
"Authorization": f"Bearer {os.environ['DOITONG_API_KEY']}",
"Idempotency-Key": "lighthouse-001",
},
json={"prompt": "A lighthouse on a rocky coast at dusk, warm light in the window"},
)
request = r.json()
print(request["status"], request["outputs"][0]["url"] if request["outputs"] else None)
Atsakymas yra užklausos objektas:
{
"id": "req_8k2m4q7x1z9c3v5b6n0p2r4t",
"object": "request",
"model": "flux/schnell",
"status": "succeeded",
"cost": { "credits": 3, "usd": "0.003", "charged": 3, "refunded": 0 },
"outputs": [
{ "type": "image", "url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.jpeg",
"content_type": "image/jpeg", "width": 1024, "height": 768, "stored": true }
],
"error": null
}
3. Sekite būseną
Jei pasibaigus laukimo laikui modelis vis dar veikia, gausite 202 Accepted su užklausos id ir dabartine jos
status reikšme. Kiekviena užklausa pereina tą patį gyvavimo ciklą:
-
queuedPriimta ir apmokestinta, laukiama vykdytojo -
runningModelis generuoja -
Galutinės būsenos:
succeededNuskaičiuota nurodyta suma; outputs[] yra URL mūsų saugyklojefailedLėšos automatiškai grąžintos; klaida nurodo priežastįcanceledSustabdyta prieš gaunant rezultatą; lėšos grąžintos
Dar kartą perskaitykite užklausą naudodami jos id. Čia taip pat veikia ?wait=20, todėl pakanka paprasto ciklo:
curl "https://api.doitong.com/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t?wait=20" \
-H "Authorization: Bearer $DOITONG_API_KEY"
const headers = { Authorization: `Bearer ${process.env.DOITONG_API_KEY}` };
let request = await (await fetch("https://api.doitong.com/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t?wait=20", { headers })).json();
while (request.status === "queued" || request.status === "running") {
const res = await fetch(`https://api.doitong.com/v1/requests/${request.id}?wait=20`, { headers });
request = await res.json();
}
console.log(request.status, request.outputs[0]?.url);
import os
import requests
headers = {"Authorization": f"Bearer {os.environ['DOITONG_API_KEY']}"}
request = {"id": "req_8k2m4q7x1z9c3v5b6n0p2r4t", "status": "queued"}
while request["status"] in ("queued", "running"):
request = requests.get(
f"https://api.doitong.com/v1/requests/{request['id']}",
params={"wait": 20},
headers=headers,
).json()
print(request["status"], request["outputs"][0]["url"] if request["outputs"] else None)
Kai status yra succeeded, outputs[].url nurodo nuorodas į failus mūsų saugykloje. Jei užklausa failed arba buvo
canceled, jos API kreditai grąžinami automatiškai, o error nurodo priežastį. Atšaukite viską, kas vis dar yra queued arba
running:
curl -X POST "https://api.doitong.com/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t/cancel" \
-H "Authorization: Bearer $DOITONG_API_KEY"
Vykdydami ilgai trunkančius vaizdo įrašų darbus galite nenaudoti būsenos tikrinimo ir vietoj to perduoti webhook_url (žr. Webhook).
4. Failai
Kaip įvestį perduokite bet kurį viešą URL arba paprašykite įkėlimo URL naudodami POST /files, įkelkite failą ten naudodami
PUT ir naudokite grąžintą file_url (žr. Failai). Užbaigta užklausa pateikia rezultatus faile
outputs[], nurodydama tipą, turinio tipą ir, jei žinoma, matmenis bei trukmę.
curl -X POST "https://api.doitong.com/v1/files" \
-H "Authorization: Bearer $DOITONG_API_KEY" \
-H "Content-Type: application/json" \
-d '{"filename": "fox.jpg", "content_type": "image/jpeg", "size": 482113}'
Klaidos
Kiekvienas modelis sugenda vienodai: viename apvalkale pateikiamas type, tikslus code, problemą sukėlęs param ir kiekviena
problema lauke details, todėl agentas gali pataisyti užklausą neskaitydamas aprašomojo teksto. Už negaliojančią užklausą niekas
neapmokestinama.
{
"error": {
"type": "invalid_request",
"code": "invalid_input",
"message": "duration must be one of 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15.",
"param": "duration",
"details": [ { "param": "duration", "message": "duration must be one of 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15." } ],
"request_id": null,
"doc_url": "https://doitong.com/developers/docs/errors#invalid_input"
}
}
Visi tipai ir kodai išvardyti skiltyje Klaidos.
Kainodara
Kainos nurodomos USD ir API kreditais bei pateikiamos kiekviename modelio puslapyje prieš vykdant. Kiekvienoje užklausoje yra
cost su laukais credits, usd, charged ir refunded. Už vykdymą mokestis taikomas jį priėmus; failed ir canceled užklausų
mokesčiai grąžinami automatiškai. Kai kurių modelių kaina tiksliai apskaičiuojama pagal įvestį, kai kurių – pagal siunčiamų failų
trukmę arba dydį, o kiti taiko numatomą vykdymo kainą: bet kuriuo atveju mokate kainos pasiūlyme nurodytą sumą. Keli modeliai
kalbos ir vaizdo modeliai, balso bei apdorojimo laiko įrankiai) yra apmokestinami pagal naudojimą: kainos pasiūlymas yra didžiausia
galima vykdymo kaina, o nepanaudota vykdymo dalis grąžinama automatiškai. Žr. Kainodara.
MCP ir DI agentai
Prijunkite bet kurį MCP klientą prie https://api.doitong.com/v1/mcp naudodami tą patį Bearer raktą. Jūsų agentas gali ieškoti kataloge, gauti
modelių kainas ir juos vykdyti, taip pat skaityti kiekvieną dokumentacijos puslapį kaip Markdown.
claude mcp add --transport http doitong-models https://api.doitong.com/v1/mcp \
--header "Authorization: Bearer YOUR_API_KEY"
Tolesni veiksmai
- Peržiūrėkite visus modelius. Kiekviename puslapyje yra užklausų kūrimo įrankis, kuris parašo kodą už jus.
- Sužinokite apie užklausos gyvavimo ciklą: Užklausos.
- Naudokite tuos pačius parametrų pavadinimus su kiekvienu modeliu: Parametrai.
- Dirbate su DI programavimo agentu? Pateikite jam https://doitong.com/developers/llms.txt arba prijunkite MCP serverį.