مهارة DeepManim API
يمكنك استخدام DeepManim API لتوليد فيديوهات شرح متحركة وتحسينها وإضافة تعليق صوتي إليها انطلاقًا من طلبات نصية.
عنوان URL الأساسي
https://api.deepmanim.com/api/v1
المصادقة
تتطلب جميع الطلبات مفتاح API في ترويسة Authorization:
Authorization: Bearer dm_k_YOUR_API_KEY
سير العمل
سير العمل المعتاد هو:
- ولّد فيديو من طلب نصي عبر
POST /generate - استعلم عن المهمة المُعادة عبر
GET /jobs/{job_id}حتى تصبحstatusمساوية لـ"completed" - حسّن الفيديو بتعليمات متابعة عبر
POST /improve(اختياري وقابل للتكرار) - أضف تعليقًا صوتيًا عبر
POST /audioبعد رضاك عن العناصر البصرية - حسّن التعليق الصوتي عبر
POST /improve-narrationعند الحاجة
تبدأ طلبات التوليد والتحسين من 1.5 رصيد وتختلف حسب الإعداد المسبق. تكلف طلبات الصوت وتحسين التعليق الصوتي رصيدًا واحدًا. قراءة البيانات مجانية.
نقاط النهاية
POST /generate
ولّد فيديو جديدًا من طلب نصي. يُضمّن التعليق الصوتي افتراضيًا.
جسم الطلب:
{
"message": "اشرح الجاذبية",
"session_id": null,
"preferred_locale": "ar"
}
message(required): الطلب الذي يصف ما يجب تحريكه.session_id(optional): مرّر معرّف جلسة موجودًا لمتابعة محادثة.
الاستجابة:
{
"job_id": "abc-123",
"session_id": "def-456",
"status": "pending"
}
POST /improve
حسّن فيديو موجودًا أو عدّله. لا يتضمن الصوت — أضفه منفصلًا عبر /audio بعد جميع التعديلات.
جسم الطلب:
{
"session_id": "def-456",
"message": "أضف ألوانًا أكثر وأبطئ الحركة",
"preferred_locale": "ar"
}
الاستجابة:
{
"job_id": "ghi-789",
"session_id": "def-456",
"status": "pending"
}
POST /audio
أضف تعليقًا صوتيًا إلى فيديو موجود.
جسم الطلب:
{
"session_id": "def-456",
"message_id": "msg-123",
"high_quality": false,
"preferred_locale": "ar"
}
POST /improve-narration
حسّن التعليق الصوتي الموجود في فيديو.
جسم الطلب:
{
"session_id": "def-456",
"message_id": "msg-123",
"high_quality": true,
"mode": "better_narration",
"instruction": "اجعل الشرح أكثر بداهة للمبتدئين.",
"preferred_locale": "ar"
}
GET /jobs/{job_id}
استعلم عن حالة المهمة. يوضّح الحقل phase التقدم: brainstorming → crafting_vision → assembling_pieces → polishing → done
الاستجابة عند الاكتمال:
الاستجابة عند الاكتمال:
{
"job_id": "abc-123",
"status": "completed",
"phase": "done",
"estimated_time_remaining_seconds": 0,
"result": {
"video_url": "https://...",
"description": "اشرح الجاذبية",
"session_id": "def-456",
"message_id": "msg-789",
"duration_seconds": 24.6,
"has_audio": true,
"follow_up": "اجعل الشرح أكثر بداهة للمبتدئين."
}
}
قيم status الممكنة: pending وrunning وcompleted وfailed.
POST /jobs/{job_id}/cancel — ألغِ مهمة جارية أو معلّقة.
GET /sessions — اعرض جميع جلساتك.
GET /sessions/{session_id} — احصل على جلسة مع سجل الرسائل الكامل.
DELETE /sessions/{session_id} — احذف جلسة وجميع رسائلها.
GET /sessions/{session_id}/jobs
اعرض مهام جلسة. معامل الاستعلام اختياري: ?status=completed
GET /messages/{message_id} — احصل على رسالة واحدة باستخدام معرّفها.
GET /credits
احصل على رصيدك: balance وtotal_used وtotal_purchased وplan.
GET /me
احصل على معلومات المستخدم الحالي: id وemail وdisplay_name.
رموز الخطأ
401— مفتاح API مفقود أو غير صالح402— أرصدة غير كافية404— المورد غير موجود400— طلب غير صالح
استراتيجية الاستعلام
تستغرق المهام عادةً من 60 إلى 120 ثانية. استعلم عن GET /jobs/{job_id} كل 3–5 ثوانٍ. استخدم الحقل estimated_time_remaining_seconds لضبط التواتر. أوقف الاستعلام عندما تصبح status مساوية لـ completed أو failed.
مثال: سير عمل كامل
import requests, time
API_KEY = "dm_k_YOUR_KEY"
BASE = "https://api.deepmanim.com/api/v1"
headers = {"Authorization": f"Bearer {API_KEY}"}
# 1. التوليد
r = requests.post(f"{BASE}/generate", headers=headers, json={
"message": "اشرح الجاذبية",
"preferred_locale": "ar"
})
job_id = r.json()["job_id"]
session_id = r.json()["session_id"]
# 2. الاستعلام حتى الاكتمال
while True:
job = requests.get(f"{BASE}/jobs/{job_id}", headers=headers).json()
if job["status"] in ("completed", "failed"):
break
time.sleep(4)
# 3. الحصول على النتيجة
video_url = job["result"]["video_url"]
message_id = job["result"]["message_id"]
# 4. التحسين اختياريًا
r = requests.post(f"{BASE}/improve", headers=headers, json={
"session_id": session_id,
"message": "أضف ألوانًا أكثر وأبطئ الحركة",
"preferred_locale": "ar"
})
# استعلم عن job_id الجديد بالطريقة نفسها…
# 5. إضافة الصوت بعد التحسينات
r = requests.post(f"{BASE}/audio", headers=headers, json={
"session_id": session_id,
"message_id": message_id,
"high_quality": False,
"preferred_locale": "ar"
})
# استعلم عن job_id الجديد…
# 6. تحسين الجانب التعليمي للتعليق الصوتي اختياريًا
r = requests.post(f"{BASE}/improve-narration", headers=headers, json={
"session_id": session_id,
"message_id": message_id,
"high_quality": True,
"mode": "better_narration",
"instruction": "اجعل الشرح أكثر بداهة للمبتدئين.",
"preferred_locale": "ar"
})
# استعلم عن job_id الجديد…