Gyors kezdés
Futtasd le az első generálásodat néhány perc alatt. Mind a 1496 modell ugyanilyen típusú kérést fogad, és ugyanazt a kérésobjektumot adja vissza képekhez, videóhoz és hanghoz: itt egyszer megtanulod.
1. Szerezz API-kulcsot
Hozz létre egy kulcsot itt: https://doitong.com/developers/dashboard#keys, és tárold környezeti változóban: csak egyszer jelenik meg. Minden kulcshoz saját keret tartozhat, így odaadhatod egy ágensnek anélkül, hogy a teljes fiókot kockáztatnád. A GET /account visszaadja az API-egyenlegedet.
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())
A futtatások a fiókod API-egyenlegéből, API-kreditekben kerülnek kifizetésre: 1000 API-jóváírás = 1 $, és minden modell pontosan a készítője által meghatározott árba kerül. Töltsd fel itt: https://doitong.com/developers/dashboard#balance.
2. Kérj árajánlatot, majd futtasd
A POST /quote/{model_id} fogadja a bemeneti JSON-t, és visszaadja a pontos árat. Nincs szüksége kulcsra, és nem kerül semmibe. Ugyanennek a bemenetnek a futtatása pontosan ennyibe kerül: az árajánlat a felszámított összeg. (Kivételt képeznek a használat alapján számlázott modellek: az árajánlat a futtatás maximális költsége, a fel nem használt rész pedig a futtatás után visszatérítésre kerül.)
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"
}
Ezután küldd ugyanazt a törzset a POST /run/{model_id} végpontra. Add hozzá a ?wait=20 paramétert, hogy a kapcsolat legfeljebb 20 másodpercig nyitva maradjon: egy gyors modell egyetlen oda-vissza út alatt visszaadja a kész eredményt. Küldj Idempotency-Key fejlécet, hogy egy újrapróbálkozás soha ne futtassa le (és ne számlázza ki) kétszer.
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)
A válasz egy kérésobjektum:
{
"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. Kövesd az állapotot
Ha a modell még dolgozik, amikor lejár a várakozás, 202 Accepted választ kapsz a kérés id értékével és aktuális status értékével. Minden kérés ugyanazon az életcikluson megy keresztül:
-
queuedElfogadva és felszámítva, workerre vár -
runningA modell generál -
Végleges állapotok:
succeededA díj levonva; az outputs[] a tárhelyünkön lévő URL-eket tartalmazzafailedAutomatikusan visszatérítve; a hiba megmagyarázza az okotcanceledEredmény előtt leállítva; visszatérítve
Olvasd be újra a kérést az azonosítójával. A ?wait=20 itt is működik, így egy egyszerű ciklus elegendő:
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)
Amikor a status értéke succeeded, az outputs[].url tartalmazza a tárhelyünkön lévő fájlokra mutató hivatkozásokat. Ha a kérés failed vagy canceled állapotú, az API-kreditek automatikusan visszatérítésre kerülnek, az error pedig megadja az okot. Szakítsd meg azokat, amelyek még queued vagy running állapotúak:
curl -X POST "https://api.doitong.com/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t/cancel" \
-H "Authorization: Bearer $DOITONG_API_KEY"
Hosszú videós feladatoknál kihagyhatod a lekérdezést, és megadhatsz helyette egy webhook_url értéket (lásd: Webhookok).
4. Fájlok
Bemenetként bármely nyilvános URL-t átadhatsz, vagy feltöltési URL-t kérhetsz a POST /files végponttól, feltöltheted oda a fájlt PUT használatával, majd használhatod a visszaadott file_url értéket (lásd: Fájlok). Egy sikeres kérés az eredményeit az outputs[] tömbben sorolja fel típussal, tartalomtípussal, valamint – ha ismert – méretekkel és időtartammal.
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}'
Hibák
Minden modell ugyanúgy hibázik: egyetlen burok tartalmazza a type értéket, a pontos code értéket, a hibás param értéket és minden problémát a details mezőben, így egy ágens a próza elolvasása nélkül is kijavíthatja a kérést. Érvénytelen kérésért nem számítunk fel díjat.
{
"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"
}
}
Minden típus és kód szerepel a Hibák oldalon.
Árazás
Az árak USD-ben és API-kreditekben szerepelnek, és minden modell oldalán megjelennek a futtatás előtt. Minden kérés tartalmazza a cost mezőt a credits, usd, charged és refunded értékekkel. A futtatást elfogadásakor számlázzuk ki; a failed és canceled állapotú kérések automatikusan visszatérítésre kerülnek. Egyes modellek pontosan a bemenet alapján, mások az elküldött fájlok hossza vagy mérete szerint árazódnak, míg mások futtatásonként becsült árat számolnak fel: az árajánlat mindenképpen az általad fizetendő összeg. Néhány modell (nyelvi és látásmodellek, hang- és feldolgozási idejű eszközök) használat alapján számlázott: az árajánlat a futtatás maximális költsége, és a futtatás által fel nem használt rész automatikusan visszatérítésre kerül. Lásd: Árazás.
MCP és AI-ágensek
Csatlakoztass bármely MCP-klienst a https://api.doitong.com/v1/mcp címhez ugyanazzal a Bearer-kulccsal. Az ágensed kereshet a katalógusban, árajánlatot kérhet és modelleket futtathat, valamint minden dokumentációs oldalt Markdown formátumban olvashat.
claude mcp add --transport http doitong-models https://api.doitong.com/v1/mcp \
--header "Authorization: Bearer YOUR_API_KEY"
Következő lépések
- Böngészd az összes modellt. Minden oldalon található egy kéréskészítő, amely megírja helyetted a kódot.
- Ismerd meg a kérés életciklusát: Kérések.
- Használd ugyanazokat a paraméterneveket minden modellnél: Paraméterek.
- AI-kódoló ágenssel dolgozol? Add neki a https://doitong.com/developers/llms.txt fájlt, vagy csatlakoztasd az MCP-szervert.