الفيديو والموسيقى
Markdownتوليد مقاطع الفيديو والموسيقى: ينشئ الطلب مهمة، وتُسترجع النتيجة باستخدام معرّفها.
الدليل الكامل
https://api.ailoot.ai/v1/videos# احتفظ بـ Request ID؛ يستخدمه الدعم للعثور على طلبك.
# أنشئ المهمة مرة واحدة؛ الحلقة أدناه تقرأ حالتها فقط.
curl --fail-with-body --max-time 120 -D video-create-headers-v1.txt \
https://api.ailoot.ai/v1/videos \
-H "Authorization: Bearer $AILOOT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"grok-imagine-video-1.5","prompt":"بحيرة هادئة","seconds":"8","size":"1280x720"}' \
-o video-create-v1.json || exit 1
VIDEO_ID=$(jq -er '.id // .request_id' video-create-v1.json) || exit 1
VIDEO_STATUS=""
# تقرأ هذه الحلقة المهمة الأصلية فقط، ولا تُعيد إرسال طلب إنشائها مطلقًا.
for ATTEMPT in $(seq 1 60); do
curl --fail-with-body --max-time 30 \
"https://api.ailoot.ai/v1/videos/$VIDEO_ID" \
-H "Authorization: Bearer $AILOOT_API_KEY" \
-o video-status-v1.json || exit 1
VIDEO_STATUS=$(jq -r '.status // empty' video-status-v1.json)
# result_pending_check: true (تظل الحالة in_progress): جارٍ التحقّق من النتيجة. توقّف؛ لا تُنشئ المهمة مرة أخرى مطلقًا.
if jq -e '.result_pending_check == true' video-status-v1.json >/dev/null; then
cat video-status-v1.json
echo "The result is being checked. Do not create the job again: check GET /v1/videos/$VIDEO_ID later or contact support with the Request ID." >&2
exit 1
fi
case "$VIDEO_STATUS" in
done|completed) break ;;
queued|in_progress|pending|processing) sleep 5 ;;
# failed أو أي حالة أخرى: اعرضها وتوقّف. لا تُنشئ المهمة مرة أخرى مطلقًا.
*) cat video-status-v1.json; exit 1 ;;
esac
done
case "$VIDEO_STATUS" in
done|completed) ;;
*) echo "The job is not finished yet (status: ${VIDEO_STATUS:-none}). Check it later: GET /v1/videos/$VIDEO_ID" >&2; exit 1 ;;
esac
curl --fail-with-body --max-time 120 -L --max-redirs 3 \
"https://api.ailoot.ai/v1/videos/$VIDEO_ID/content" \
-H "Authorization: Bearer $AILOOT_API_KEY" -o video-v1.mp4
# بعد انتهاء مهلة طلب الإنشاء، تحقّق من Request ID في سجل الاستخدام قبل تشغيل هذا السكربت مجددًا.curl https://api.ailoot.ai/v1/music/generations \
-H "Authorization: Bearer $AILOOT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "google/lyria", "prompt": "بيانو وتشيلّو هادئان، دون غناء"}' // معرّف المهمة في الحقل id أو request_id
{ "id": "…", … }
// تختلف الصيغة بحسب النموذج: خذ المعرّف
// من استجابة الإنشاء كما هو.المصادقة
- Authorizationheaderمطلوب
المفتاح بصيغة
Bearer sk-…. يمكن أيضاً استخدام الترويساتx-api-keyأوx-goog-api-key.
الفيديو: جسم الطلب
- modelstringمطلوب
نموذج الفيديو:
google/omni-1.1-flash,grok-imagine-video,happyhorse-1.1-t2v,MiniMax-Hailuo-2.3,grok-imagine-video-1.5,happyhorse-1.1-r2v,grok-imagine-video-1.5-preview,happyhorse-1.1-i2v. - promptstringمطلوب
وصف مقطع الفيديو.
- duration / secondsinteger / stringاختياري
تختلف المدة بحسب العائلة: Grok من 1 إلى 15 ثانية، وMiniMax 6/10 ثوانٍ بدقة 768P أو 6 ثوانٍ بدقة 1080P، وHappyHorse من 3 إلى 15؛ وGoogle Omni 4/6/8/10. لا تنقل حقول عائلة إلى عائلة أخرى.
- resolution / sizestringاختياري
Grok: 480p/720p/1080p (يدعم video-1.5 دقة 1080p)، أو size بقيم 1280x720/720x1280/1920x1080/1080x1920. MiniMax: 768P/1080P. HappyHorse: 480P/720P/1080P. Google Omni: 360p/720p.
- image / first_frame_image / image_urlsstring / arrayاختياري
تختلف حقول الصور المصدرية بحسب العائلة والوضع. يتطلب MiniMax Fast حقل first_frame_image. HappyHorse t2v يعمل دون images؛ وi2v يتطلب صورة واحدة بالضبط دون ratio؛ وr2v يقبل من 1 إلى 9 صور.
يتضمن الرد معرّف المهمة (الحقل id أو request_id). استخدمه كما هو دون تحليله، فالصيغة تختلف بحسب النموذج. الحالة والملف الجاهز:
https://api.ailoot.ai/v1/videos/{id}https://api.ailoot.ai/v1/videos/{id}/contentتعمل العناوين نفسها أيضاً بالبادئة /v1/videos/generations/{id}. تختلف حالة المهمة المكتملة وحقول الرد بحسب النموذج؛ اعتمد على حقل الحالة واسترجع الملف عبر /content.
الإنشاء ← الحالة ← التنزيل
احفظ رد الإنشاء وRequest ID الخاص به. في MiniMax/HappyHorse تدل على الاكتمال القيمة status: completed، ويتضمن الرد content_url, data[] وusage. في Grok تكون status: done مع video.url. يعيد Google Omni 202 queued، ثم in_progress مع Retry-After، ثم completed أوpartial/content_revoked. لا تعتبر كل رد 200 فيديو جاهزاً. إذا احتوى رد الحالة على result_pending_check: true (status بينما تكون in_progress)، فالنتيجة قيد التحقق. لا تنشئ المهمة مجدداً؛ تحقق منها لاحقاً عبر GET /v1/videos/{id} أو تواصل مع الدعم مع إرفاق Request ID.
/content قد يعيد MP4 مباشرةً أو يعيد التوجيه إلى ملف ذي رابط موقّع. إذا تضمن الرد عدة نتائج في data[]، فاحفظ كل نتيجة: تُحسب تكلفة جميع النتائج التي تم تسليمها. لا يمكن إلغاء مهمة الفيديو أو حذفها عبر API. حذف الملف الجاهز يغلق الوصول إليه، لكنه لا يلغي التوليد.
تُحسب التكلفة بحسب ثواني الفيديو الجاهز بالدقة المحددة أو لكل مقطع، كما هو موضح في الكتالوج. تُحجز التكلفة الكاملة عند إنشاء المهمة.
الموسيقى
https://api.ailoot.ai/v1/music/generations- modelstringمطلوب
google/lyria,google/lyria-3-clip-preview. - promptstringمطلوب
وصف المقطوعة: النوع الموسيقي والآلات والمزاج.
في الرد، data[] — روابط إلى المقاطع الجاهزة. قد يعيد النموذج عدة مقاطع لطلب واحد؛ وتُحسب تكلفة كل مقطع تم تسليمه.