Сұраулар
Сұрау — бір модельді бір рет шақыру. Оның id (req_…), күйі, API кредиттеріндегі құны (1000 = 1 USD) және сәтті орындалған кезде жасалған файлдары болады. Төмендегі әр соңғы нүктеден әр модель үшін бірдей нысан қайтарылады.
Модельді табу
Барлық 1 496 модельдің каталогы жалпыға қолжетімді JSON болып табылады (кілт қажет емес):
curl "https://api.doitong.com/v1/models?category=text-to-video&lab=Google&limit=20"
| Сұрау параметрі | Мағынасы |
|---|---|
q |
Атауда, id-де, жасаушыда немесе тегтерде түгел кездесуі тиіс сөздер, мысалы kling 3. |
category |
Бір санат id-і, мысалы text-to-video немесе upscale. GET https://api.doitong.com/v1/categories барлық 21 санатты олардың санымен бірге көрсетеді. |
lab |
Модельді жасаушының атауы немесе id-і, мысалы Google немесе black-forest-labs. |
family |
Алдыңғы жолдағы family id-і: бір модельдің әр нұсқасы (pro, fast, image-to-video, …). |
mode |
exact (баға кіріске қарай есептеледі), measured (кіріс файлдарының ұзындығына немесе өлшеміне қарай), estimate (әр іске қосуға болжалды баға) немесе metered (нақты пайдалануға қарай, бір іске қосудағы максимумға дейін алынады). |
limit, cursor |
Бет өлшемі (1-ден 100-ге дейін, әдепкі 50) және алдыңғы беттің next_cursor мәні. |
Әр жолда id, name, lab, category, family, summary, tags, output_kind, docs_url және price нысаны болады (Баға белгілеу бөлімін қараңыз). GET https://api.doitong.com/v1/models/{model_id} толық кіріс және шығыс JSON Schema-сын, канондық параметр атауларын, баға ережелерін және кіріс үлгісін қосады. Белгісіз category немесе mode мәні 400 invalid_parameter қайтарады.
Модельді іске қосу
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": "..."}'
- Дене — модель кірісі, JSON нысаны. Әр модель бетінде оның параметрлері көрсетіледі.
- Кез келген нәрсе үшін ақы алынбай тұрып, кіріс тексеріледі. Жарамсыз кіріс қате болған
paramмәнімен бірге422 invalid_inputқайтарады және ақы алынбайды. ?wait=N(20 секундқа дейін) сұрау аяқталғанша немесе уақыт біткенше шақыруды күтеді.?webhook_url=https://…сұрау аяқталғанда осы URL-ге қол қойылған POST жібереді (Вебхуктар бөлімін қараңыз).?storage=permanentнемесе?storage=temporaryшығыс файлдарының қанша уақыт сақталатынын таңдайды; көрсетілмесе, аккаунт параметрі қолданылады (Файлдар қайда сақталады бөлімін қараңыз).
Сұрау әлі орындалып жатқанда жауап 202 Accepted, ал күту уақытында аяқталса (немесе қайта ойнату болса, төменде қараңыз) 200 OK болады. Location және Doitong-Request-Id тақырыптары сұрау URL-і мен id-ін қамтиды.
Күйлер
-
queuedҚабылданды және ақысы алынды, воркерді күтуде -
runningМодель жасап жатыр -
Соңғы күйлер:
succeededЕсептелген сома алынды; outputs[] ішінде қоймамыздағы URL мекенжайлары барfailedАвтоматты түрде қайтарылды; қате себебін көрсетедіcanceledНәтижеге дейін тоқтатылды; қаражат қайтарылды
| Күй | Мағынасы | Соңғы ма? |
|---|---|---|
queued |
Қабылданды және ақы алынды, орындаушыны күтуде. queue_position кезектегі орнын көрсетуі мүмкін. |
жоқ |
running |
Модель жасап жатыр. | жоқ |
succeeded |
Дайын. outputs файлдарды көрсетеді. |
иә |
failed |
Модель немесе шектеу оны тоқтатты. error себебін көрсетеді. API кредиттері қайтарылады. |
иә |
canceled |
Нәтиже жасалмай тұрып тоқтатылды. API кредиттері қайтарылады. | иә |
Уақыт шегінен ұзақ орындалған сұрау timeout кодымен сәтсіз аяқталады және қайтарылады: кескіндер үшін 15 минут, бейне үшін 60 минут, аудио және қалғанының бәрі үшін 30 минут.
Сұрау нысаны
{
"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"
}
}
outputsбарлық модель үшін бірдей: әр жасалған файлға бір жазба, оның ішіндеtype(image,video,audio,fileнемесе3d), сақтау орнымыздағыurl,content_typeжәне белгілі болса,file_size,width,height,durationболады.output— модельдің жеке нәтиже нысаны (оның өрістері әр модель бетінде көрсетілген), онда сол URL-дер болады.storageфайлдардың қалай сақталатынын көрсетеді:mode(permanentнемесеtemporary), сақталғанbytes,expires_at(temporaryфайл жойылатын уақыт, тұрақты файлдар үшінnull) жәнеexpired(файлдар жойылғаннан кейінtrue).cost.credits— шақырудың API кредиттеріндегі бағасы (cost.usd— USD түріндегі баға),cost.charged— API теңгерімінен шегерілген сома,cost.refunded— қайтарылған сома.meteredмодель үшінcost.credits— басында ұсталған максимум (cost.held); іске қосу сәтті аяқталғандаcost.settledпайдалану құнын көрсетеді, ал максимумның қалған бөлігіcost.refundedішінде болады (Пайдалануға қарай алынатын ақы бөлімін қараңыз).- Сұрау сәтсіз аяқталғанда,
error—{ "type": …, "code": …, "message": … }.
Сұрауды оқу
curl "https://api.doitong.com/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t?wait=20" \
-H "Authorization: Bearer $DOITONG_API_KEY"
?wait=N(20 секундқа дейін) ұзақ сұрау режимінде жұмыс істейді: шақыру сұрау соңғы күйге жеткенде немесе N секундтан кейін ағымдағы күймен қайтады. Нәтижені күтудің ең қарапайым жолы — осыны циклде қайталау.?logs=1модельдің орындалу журналы жолдарын (соңғы 50)logsретінде қосады.
Тек өз аккаунтыңыздың сұрауларын оқи аласыз; кез келген басқа id 404 request_not_found қайтарады.
Сұраулар тізімін алу
curl "https://api.doitong.com/v1/requests?limit=20&status=succeeded&model=flux/schnell" \
-H "Authorization: Bearer $DOITONG_API_KEY"
Жаңалары бірінші көрсетіледі. limit — 1-ден 100-ге дейін (әдепкі 20), status және model сүзгі ретінде қолданылады. Жауап — { "object": "list", "data": [ … ], "has_more": true, "next_cursor": "req_…" }; келесі бет үшін cursor=<next_cursor> мәнін жіберіңіз.
Сұрауды тоқтату
curl -X POST "https://api.doitong.com/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t/cancel" \
-H "Authorization: Bearer $DOITONG_API_KEY"
- Модель іске қосылмай тұрып тоқтатылса: күй
canceledболады, API кредиттері қайтарылады және200аласыз. - Жасалу процесі басталып кеткен болса: тоқтату сұрауы әрі қарай жіберіледі және
"cancel_requested": trueмәнімен202аласыз. Модель бәрібір аяқталса, сұрау әдеттегідей сәтті орындалады және ақы алынады. - Соңғы күйге жеткен болса:
409 not_cancelable(әлдеқашанcanceledболған сұрау жай ғана200қайтарады).
Сұрау файлдарын жою
curl -X DELETE "https://api.doitong.com/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t/files" \
-H "Authorization: Bearer $DOITONG_API_KEY"
Сұраудың шығыс файлдарының біздің көшірмелерін қазір жояды және оларды сақтау ақысын тоқтатады. Жауапта storage.expired: true бар сұрау нысаны қайтарылады; оның URL-дері жазбада қалады, бірақ енді жұмыс істемейді. Қайта шақыру ештеңені өзгертпейді (200). queued немесе running күйіндегі сұрауда әлі файл жоқ: 409 request_active. models:run қажет.
Идемпотенттілік: екі рет төлемей қайталап көру
Желі істен шығуы мүмкін. Іске қосуды қауіпсіз қайталау үшін Idempotency-Key тақырыбын жіберіңіз (255 таңбаға дейінгі кез келген жол, әр операция үшін бірегей, мысалы өз тапсырысыңыздың id-і):
- Бұрынғыдай кілт және сол дене: бастапқы сұрау қайтарылады (
200,Idempotent-Replayed: trueтақырыбымен), ақы қайта алынбайды. - Модельге жетпей сәтсіз аяқталған іске қосудан кейінгі сол кілт пен сол дене (
submitкезіндегіupstream_errorнемесеinternal_error,insufficient_credits,budget_exceeded,too_many_inflight): ештеңе жасалмады және ақы алынбады, сондықтан сәтсіздікті қайтарудың орнына қайталап көру модельді қайта іске қосады. - Сол кілт, бірақ басқа дене:
409 idempotency_mismatch. - Кілттер оларды жіберген API кілтіне байланысты болады.
Файлдар қайда сақталады
Әр шығыс файл сұрау succeeded деп белгіленбес бұрын сақтау орнымызға көшіріледі, сондықтан outputs ішіндегі URL-дер өз хосттарымызда орналасады және оларға тікелей сілтеме жасай аласыз. Олардың қанша уақыт сақталатынын өзіңіз таңдайсыз:
| Режим | Ұзақтығы | Бағасы |
|---|---|---|
permanent (әдепкі) |
Өзіңіз жойғанға дейін | Әр GB үшін айына 100 API кредиттері (0,10 $), API теңгерімінен күн сайын алынады |
temporary |
7 күн, кейін жойылады | Тегін |
- Аккаунт параметрі жаңа сұраулар үшін қолданылады: бақылау тақтасындағы "Файлдарды мәңгілікке сақтау" ауыстырып-қосқышы немесе
{"mode": "temporary"}мәніменPATCH https://api.doitong.com/v1/account/storage.GET https://api.doitong.com/v1/accountоныstorageішінде, сақтап отырған байттармен және айлық болжаммен көрсетеді. - Іске қосу кезіндегі
?storage=permanent|temporary(MCPrunқұралыныңstorageаргументі) сол іске қосу үшін бұл параметрді қайта анықтайды. - Параметрді өзгерту бұрыннан бар файлдарға әсер етпейді; оларды
DELETE /requests/{id}/filesарқылы жойыңыз. - API теңгерімі сақтау ақысын төлеуге жетпесе, ақы алынбайды және электрондық хат аласыз: 30 күн ішінде теңгерімді толықтырыңыз, әйтпесе сақталған файлдар уақытша режимге ауысып, 7 күннен кейін жойылады.
Сирек жағдайда біздің көшірме жасау сәтсіз болса, жазбада "stored": false болады және URL бастапқы, қысқа мерзімді URL болып қалады: оны жақын арада жүктеп алыңыз.