Kérések
Egy kérés egy modell egyetlen meghívása. Van egy azonosítója (req_…), egy állapota, API-kreditben megadott költsége (1000 = 1 USD), valamint sikeres végrehajtás esetén a generált fájlok. Az alábbi végpontok mindegyike, minden modell esetén ugyanazt az objektumot adja vissza.
Modell keresése
Az összesen 1496 modellt tartalmazó katalógus nyilvános JSON (nem szükséges kulcs):
curl "https://api.doitong.com/v1/models?category=text-to-video&lab=Google&limit=20"
| Lekérdezési paraméter | Jelentés |
|---|---|
q |
Azok a szavak, amelyeknek mind szerepelniük kell a névben, az azonosítóban, a készítőben vagy a címkék között, például kling 3. |
category |
Egy kategóriaazonosító, például text-to-video vagy upscale. A GET https://api.doitong.com/v1/categories felsorolja mind a 21 kategóriát a darabszámukkal együtt. |
lab |
A modell készítője név vagy azonosító alapján, például Google vagy black-forest-labs. |
family |
Egy korábbi sorból származó family azonosító: egy modell minden változata (pro, fast, image-to-video, …). |
mode |
exact (az ár a bemenet alapján kerül kiszámításra), measured (a bemeneti fájlok hosszából vagy méretéből), estimate (futtatásonként becsült ár) vagy metered (a tényleges használat alapján számlázva, futtatásonkénti maximumig). |
limit, cursor |
Oldalméret (1–100, alapértelmezett érték: 50) és az előző oldal next_cursor értéke. |
Minden sor tartalmazza az id, name, lab, category, family, summary, tags, output_kind, docs_url mezőket, valamint egy price objektumot (lásd: Árazás). A GET https://api.doitong.com/v1/models/{model_id} hozzáadja a teljes bemeneti és kimeneti JSON Schemat, a kanonikus paraméterneveket, az árszabályokat és egy példa bemenetet. Az ismeretlen category vagy mode értéke 400 invalid_parameter.
Modell futtatása
curl -X POST "https://api.doitong.com/v1/run/{model_id}?wait=20" \
-H "Authorization: Bearer $DOITONG_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: order-1842-cover" \
-d '{"prompt": "..."}'
- A törzs a modell bemenete, egy JSON-objektum. Az egyes modelloldalak felsorolják a paramétereit.
- A rendszer a bemenetet minden terhelés előtt ellenőrzi. Érvénytelen bemenet esetén
422 invalid_inputérkezik a hibásparammezővel, és semmilyen költség nem merül fel. - A
?wait=N(legfeljebb 20 másodpercig) nyitva tartja a hívást, amíg a kérés be nem fejeződik, vagy le nem telik az idő. - A
?webhook_url=https://…aláírt POST-kérést küld az URL-re, amikor a kérés befejeződik (lásd: Webhookok). - A
?storage=permanentvagy?storage=temporarybeállítja, hogy meddig maradjanak meg a kimeneti fájlok; enélkül a fiókbeállítás érvényesül (lásd: Hol találhatók a fájlok).
A válasz 202 Accepted, amíg a kérés feldolgozása folyamatban van, és 200 OK, ha a várakozási időn belül befejeződött (vagy ha újrajátszásról van szó, lásd lent). A Location és a Doitong-Request-Id fejlécek tartalmazzák a kérés URL-jét és azonosítóját.
Állapotok
-
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
| Állapot | Jelentés | Végleges |
|---|---|---|
queued |
Elfogadva és terhelve, feldolgozóra vár. A queue_position jelezheti a sorban elfoglalt helyet. |
nem |
running |
A modell generál. | nem |
succeeded |
Elkészült. Az outputs felsorolja a fájlokat. |
igen |
failed |
A modell vagy egy korlát leállította. Az error jelzi az okot. Az API-kreditek visszatérítésre kerülnek. |
igen |
canceled |
Eredmény létrehozása előtt megszakítva. Az API-kreditek visszatérítésre kerülnek. | igen |
Az időkorlátnál tovább futó kérés timeout kóddal meghiúsul, és az összeg visszatérítésre kerül: képek esetén 15 perc, videó esetén 60 perc, hang és minden más esetén 30 perc.
A kérés objektuma
{
"id": "req_8k2m4q7x1z9c3v5b6n0p2r4t",
"object": "request",
"model": "flux/schnell",
"status": "succeeded",
"created_at": "2026-10-20T12:00:00Z",
"started_at": "2026-10-20T12:00:01Z",
"completed_at": "2026-10-20T12:00:02Z",
"queue_position": null,
"cost": { "credits": 3, "usd": "0.003", "charged": 3, "refunded": 0 },
"input": { "prompt": "..." },
"output": { "images": [ { "url": "https://content.doitong.com/dev-api/…/0-output.jpeg", "width": 1024, "height": 768 } ] },
"outputs": [
{ "type": "image", "url": "https://content.doitong.com/dev-api/…/0-output.jpeg", "content_type": "image/jpeg",
"width": 1024, "height": 768, "file_size": 183920, "stored": true }
],
"error": null,
"metrics": { "inference_seconds": 1.2 },
"storage": { "mode": "permanent", "bytes": 183920, "expires_at": null, "expired": false },
"urls": {
"self": "https://api.doitong.com/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t",
"cancel": "https://api.doitong.com/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t/cancel"
}
}
- Az
outputsminden modell esetén azonos: minden generált fájlhoz egy bejegyzés tartoziktype(image,video,audio,filevagy3d), a tárhelyünkön lévőurl,content_type, valamint ismert érték eseténfile_size,width,height,durationmezőkkel. - Az
outputa modell saját eredményobjektuma (mezőit az egyes modelloldalak sorolják fel), ugyanazokkal az URL-ekkel. - A
storagejelzi, hogyan vannak megőrizve a fájlok:mode(permanentvagytemporary), a tároltbytes, azexpires_at(az ideiglenes fájl törlésének időpontja, végleges fájloknálnull) és azexpired(true, miután a fájlok eltűntek). - A
cost.creditsa hívás ára API-kreditben (cost.usdUSD-ben), acost.chargedaz API-egyenlegből levont összeg, acost.refundedpedig a visszatérített összeg.meteredmodell esetén acost.creditsa kezdetkor zárolt maximum (cost.held); a sikeres futtatás után acost.settledjelzi a használat költségét, a maximum fennmaradó része pedig acost.refundedértékében szerepel (lásd: Használatalapú számlázás). - Ha egy kérés meghiúsul, az
errorértéke{ "type": …, "code": …, "message": … }.
Kérés lekérése
curl "https://api.doitong.com/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t?wait=20" \
-H "Authorization: Bearer $DOITONG_API_KEY"
- A
?wait=N(legfeljebb 20 másodpercig) hosszú lekérdezést végez: a hívás azonnal visszatér, amint a kérés végleges állapotba kerül, vagy N másodperc elteltével az aktuális állapottal. Ennek ismétlése a legegyszerűbb módja az eredmény megvárásának. - A
?logs=1hozzáadja a modell előrehaladási naplósorait (az utolsó 50-et)logsnéven.
Csak a saját fiókod kéréseit olvashatod; minden más azonosító esetén 404 request_not_found érkezik.
Kérések listázása
curl "https://api.doitong.com/v1/requests?limit=20&status=succeeded&model=flux/schnell" \
-H "Authorization: Bearer $DOITONG_API_KEY"
A legújabbakkal kezdve. A limit értéke 1–100 (alapértelmezett érték: 20), a status és a model szűr. A válasz: { "object": "list", "data": [ … ], "has_more": true, "next_cursor": "req_…" }; a következő oldalhoz add át a cursor=<next_cursor> értéket.
Kérés megszakítása
curl -X POST "https://api.doitong.com/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t/cancel" \
-H "Authorization: Bearer $DOITONG_API_KEY"
- Ha a modell elindulása előtt szakítod meg: az állapot
canceledlesz, az API-kreditek visszatérítésre kerülnek, és200választ kapsz. - Ha a generálás már folyamatban van: a megszakítási kérés továbbításra kerül, és
202választ kapsz"cancel_requested": trueértékkel. Ha a modell ennek ellenére befejezi a futást, a kérés normálisan sikeres lesz, és terhelésre kerül. - Ha a kérés már végleges:
409 not_cancelable(a márcanceledállapotú kérés egyszerűen200választ ad).
Kérés fájljainak törlése
curl -X DELETE "https://api.doitong.com/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t/files" \
-H "Authorization: Bearer $DOITONG_API_KEY"
Azonnal törli a kérés kimeneti fájljainak nálunk tárolt másolatait, és leállítja a tárhely díjának felszámítását. A válasz a kérés objektuma storage.expired: true értékkel; az URL-ek megmaradnak a rekordban, de többé nem működnek. A művelet újbóli meghívása nem változtat semmin (200). A még queued vagy running állapotú kérésnek még nincsenek fájljai: 409 request_active. A models:run jogosultság szükséges.
Idempotencia: újrapróbálás kettős fizetés nélkül
A hálózat meghibásodhat. A futtatás biztonságos újrapróbálásához küldj Idempotency-Key fejlécet (legfeljebb 255 karakteres, műveletenként egyedi karakterláncot, például a saját rendelésazonosítódat):
- Ugyanaz a kulcs és ugyanaz a törzs, mint korábban: visszakapod az eredeti kérést (
200,Idempotent-Replayed: truefejléccel), és újabb terhelés nem történik. - Ugyanaz a kulcs és törzs egy olyan futtatás után, amely még azelőtt meghiúsult, hogy elérte volna a modellt (
upstream_errorvagyinternal_errorbeküldéskor,insufficient_credits,budget_exceeded,too_many_inflight): semmi nem jött létre, és nem történt terhelés, ezért az újrapróbálás a hiba visszaadása helyett ismét futtatja a modellt. - Ugyanaz a kulcs eltérő törzzsel:
409 idempotency_mismatch. - A kulcsok az őket küldő API-kulcshoz vannak kötve.
Hol találhatók a fájlok
Minden kimeneti fájl a tárhelyünkre kerül másolásra, mielőtt a kérés succeeded állapotba kerül, ezért az outputs URL-jei a saját hosztjainkra mutatnak, és közvetlenül hivatkozhatsz rájuk. Te döntöd el, meddig maradjanak meg:
| Mód | Időtartam | Ár |
|---|---|---|
permanent (alapértelmezett) |
Amíg nem törlöd őket | 100 API-kredit (0,10 $) GB-onként havonta, naponta az API-egyenlegből terhelve |
temporary |
7 nap, majd törlés | Ingyenes |
- A fiókbeállítás határozza meg az új kérések értékét: a „Fájlok megőrzése örökre” kapcsoló a vezérlőpulton, vagy a
PATCH https://api.doitong.com/v1/account/storagea{"mode": "temporary"}értékkel. AGET https://api.doitong.com/v1/accountastoragealatt jeleníti meg, a megőrzött bájtokkal és a havi becsléssel együtt. - A futtatáskor megadott
?storage=permanent|temporary(az MCPruneszközstorageargumentuma) felülírja ezt az adott futtatásra. - A beállítás módosítása soha nem érinti a már meglévő fájlokat; ezeket a
DELETE /requests/{id}/fileshasználatával törölheted. - Ha az API-egyenleg nem fedezi a tárhely költségét, nem történik terhelés, és e-mailt kapsz: töltsd fel az egyenleget 30 napon belül, különben a megőrzött fájlok ideiglenessé válnak, majd 7 nappal később törlődnek.
Abban a ritka esetben, ha a másolatunk létrehozása sikertelen, a bejegyzésben "stored": false szerepel, az URL pedig az eredeti, rövid élettartamú URL lesz: töltsd le hamar.