تخطّي إلى المحتوى
البدء

بدء الاستخدام السريع

عرض بتنسيق Markdown تم التحديث

شغّل عملية التوليد الأولى خلال بضع دقائق. تتلقى النماذج 1,496 كلها النوع نفسه من الطلب وتُرجع كائن الطلب نفسه للصور والفيديو والصوت: تعلّمه مرة واحدة هنا.

1. احصل على مفتاح API

أنشئ مفتاحًا في https://doitong.com/developers/dashboard#keys واحتفظ به في متغير بيئة: سيُعرض مرة واحدة فقط. يمكن لكل مفتاح حمل ميزانيته الخاصة، لذا يمكنك منحه إلى وكيل دون المخاطرة بالحساب بالكامل. يعرض GET /account رصيد API الخاص بك.

export DOITONG_API_KEY="doitong_..."

curl "https://api.doitong.com/v1/account" \
  -H "Authorization: Bearer $DOITONG_API_KEY"

تُدفع العمليات من رصيد API في حسابك بوحدة أرصدة API: 1,000 رصيد API = ⁨‏1 $⁩، وتكلف كل النماذج سعر الجهة التي طوّرتها بالضبط. اشحن الرصيد من https://doitong.com/developers/dashboard#balance.

2. احصل على عرض السعر، ثم شغّل العملية

يتلقى POST /quote/{model_id} مدخل JSON ويُرجع السعر الدقيق. لا يحتاج إلى مفتاح ولا يكلّف شيئًا. تشغيل المدخل نفسه يكلّف هذا السعر بالضبط: عرض السعر هو الرسوم. (الاستثناء هو النموذج الذي تُحتسب رسومه حسب الاستخدام: عرض السعر فيه هو الحد الأقصى الذي قد تكلّفه العملية، ويُسترد الجزء غير المستخدم بعد انتهاء العملية.)

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}'
200 OK · quote
{
  "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"
}

أرسل بعد ذلك الجسم نفسه إلى POST /run/{model_id}. أضف ?wait=20 لإبقاء الاتصال مفتوحًا لمدة تصل إلى 20 ثانية: يُرجع النموذج السريع النتيجة المكتملة في رحلة ذهاب وإياب واحدة. أرسل ترويسة Idempotency-Key حتى لا يؤدي تكرار الطلب إلى تشغيل العملية أو احتساب رسومها مرتين.

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"}'

الاستجابة هي كائن طلب:

200 OK · request
{
  "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. تابع الحالة

إذا كان النموذج لا يزال يعمل عند انتهاء وقت الانتظار، فستحصل على 202 Accepted مع id الطلب وstatus الحالي. يمر كل طلب بدورة الحياة نفسها:

دورة حياة الطلب
  1. queued تم القبول وخصم التكلفة، وبانتظار عامل
  2. running النموذج قيد التوليد
  3. الحالات النهائية:
    • succeededتم خصم تكلفة العرض؛ تحتوي outputs[] على عناوين URL في مساحة التخزين لدينا
    • failedتم رد التكلفة تلقائيًا؛ يوضح الخطأ السبب
    • canceledتم الإيقاف قبل ظهور نتيجة؛ وتم رد التكلفة

اقرأ الطلب مرة أخرى باستخدام معرّفه. يعمل ?wait=20 هنا أيضًا، لذا تكفي حلقة بسيطة:

curl "https://api.doitong.com/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t?wait=20" \
  -H "Authorization: Bearer $DOITONG_API_KEY"

عندما تكون قيمة status هي succeeded، يحتوي outputs[].url على روابط إلى الملفات في مساحة التخزين لدينا. إذا كان الطلب failed أو canceled، تُسترد أرصدة API الخاصة به تلقائيًا، ويشرح error السبب. ألغِ أي شيء لا يزال في حالة queued أو running:

الطرفية
curl -X POST "https://api.doitong.com/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t/cancel" \
  -H "Authorization: Bearer $DOITONG_API_KEY"

بالنسبة إلى مهام الفيديو الطويلة، يمكنك تجاوز الاستطلاع وتمرير webhook_url بدلًا من ذلك (راجع ويب هوك).

4. الملفات

مرّر أي عنوان URL عام كمدخل، أو اطلب من POST /files عنوان URL للرفع، ثم استخدم PUT لوضع الملف هناك واستعمل file_url المُعاد (راجع الملفات). يسرد الطلب الناجح نتائجه في outputs[] مع النوع ونوع المحتوى، وعند توفرها، الأبعاد والمدة.

الطرفية
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}'

الأخطاء

يفشل كل نموذج بالطريقة نفسها: غلاف واحد يحتوي على type وcode دقيق وparam المخالف وكل مشكلة في details، بحيث يتمكن الوكيل من إصلاح الطلب دون قراءة نصوص مطولة. لا تُحتسب أي رسوم على الطلب غير الصالح.

422 Unprocessable Entity
{
  "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"
  }
}

تجد كل نوع وكل رمز في الأخطاء.

التسعير

تُعرض الأسعار بالدولار الأمريكي وبأرصدة API في صفحة كل نموذج قبل التشغيل. يحمل كل طلب cost مع credits وusd وcharged وrefunded. تُحتسب رسوم العملية عند قبولها؛ وتُسترد رسوم الطلبات failed وcanceled تلقائيًا. تُسعّر بعض النماذج بدقة استنادًا إلى المدخل، وبعضها حسب طول الملفات التي ترسلها أو حجمها، بينما تحتسب نماذج أخرى سعرًا تقديريًا لكل عملية: في كل الأحوال، ما تدفعه هو عرض السعر. تُحتسب رسوم بعض النماذج القليلة (نماذج اللغة والرؤية، والصوت، وأدوات وقت المعالجة) حسب الاستخدام: عرض السعر هو الحد الأقصى الذي قد تكلّفه العملية، ويُسترد تلقائيًا الجزء الذي لم تستخدمه العملية. راجع التسعير.

MCP والوكلاء بالذكاء الاصطناعي

صِل أي عميل MCP بـ https://api.doitong.com/v1/mcp باستخدام مفتاح Bearer نفسه. يمكن لوكيلك البحث في الكتالوج، والحصول على عروض أسعار النماذج وتشغيلها، وقراءة كل صفحة من صفحات التوثيق بصيغة Markdown.

Claude Code
claude mcp add --transport http doitong-models https://api.doitong.com/v1/mcp \
  --header "Authorization: Bearer YOUR_API_KEY"

الخطوات التالية