واجهة قوالب FreeRap

أنشئ فيديو من قالب باستخدام صورة مرجعية. أنشئ مهمة ثم استعلم عن حالتها للحصول على الفيديو النهائي.

عنوان الخدمةhttps://freerapvideo.com

البدء السريع

نفّذ طلبك الأول في أربع خطوات. شغّل هذه الأوامر في الطرفية أو على الخادم.

  1. أنشئ مفتاح API

    افتح الإعدادات ← API وأنشئ مفتاحًا. احفظ قيمة sk_ الكاملة في متغير بيئة على الخادم.

    إنشاء مفتاح API
    Shell
    export FREERAP_API_KEY='YOUR_API_KEY'

  2. اختر القالب والإعدادات

    اجلب دليل القوالب العام واختر slug وزوج model/resolution من rows. راجع name وimageSlots وdefaultDurationSec. لا يتطلب الدليل مفتاح API.

    GET /api/template-prices
    curl https://freerapvideo.com/api/template-prices

  3. أنشئ مهمة فيديو

    يستخدم المثال bulin مع صورة واحدة وpro / 720p. تأكد من تسعير هذا الزوج واستبدل الصورة بعنوان HTTPS عام لصورتك، ثم احفظ data.taskId من الرد.

    POST · cURL
    curl --request POST \
      'https://freerapvideo.com/api/v1/templates/bulin/generations' \
      --header "Authorization: Bearer $FREERAP_API_KEY" \
      --header 'Content-Type: application/json' \
      --data '{
        "reference_image_urls": ["https://cdn.example.com/face.jpg"],
        "model": "pro",
        "resolution": "720p"
      }'

  4. احصل على النتيجة

    استبدل TASK_ID بقيمة data.taskId. استعلم كل 30 ثانية تقريبًا حتى success أو failed أو canceled. عند النجاح، اقرأ data.videos.

    GET · cURL
    curl 'https://freerapvideo.com/api/v1/generations/TASK_ID' \
      --header "Authorization: Bearer $FREERAP_API_KEY"

المصادقة

أرسل ترويسة Authorization إلى واجهتي المهام باستخدام مفتاح sk_ الكامل من الإعدادات ← API. يعاد HTTP 401 عند غياب المفتاح أو عدم صلاحيته. لا تكشف المفتاح في كود المتصفح.

HTTP
Authorization: Bearer <API_KEY>

قواعد الواجهة

يوفر القالب النص والفيديو المرجعي والموسيقى. يرسل العميل الصورة المرجعية وإعدادات التوليد. لا تُدعم عناوين الاستدعاء الراجع؛ استعلم عن المهمة للحصول على النتيجة.

تعيد الطلبات الناجحة HTTP 200 وcode 0 وmessage ok وكائن data. تعيد أخطاء الطلب code -1 وmessage. قد يشير data.status إلى فشل التوليد رغم نجاح الاستعلام.

إنشاء مهمة

POST/api/v1/templates/{campaign}/generations

يبدأ توليد فيديو غير متزامن لقالب نشط. يؤكد HTTP 200 إنشاء المهمة، ويكون الفيديو قيد المعالجة.

الترويسات المطلوبة: Authorization: Bearer <API_KEY> وContent-Type: application/json.

معاملات المسار

إنشاء مهمة: معاملات المسار
الحقلالنوعمطلوبالوصف
campaignstringنعممعرّف slug لقالب نشط مثل bulin. اعثر عليه عبر GET /api/template-prices.

جسم الطلب

تستخدم التكاملات الجديدة reference_image_urls وmodel وresolution. الحقول التالية مشتركة بين جميع القوالب.

إنشاء مهمة: جسم الطلب
الحقلالنوعمطلوبالوصف
reference_image_urlsstring[]نعمعدد N بالضبط من روابط صور HTTPS العامة غير الفارغة، وفق imageSlots للقالب. يقابل العنصر الأول @Image1 والثاني @Image2 وهكذا. يُحفظ الترتيب وكل العناصر مطلوبة.
modelstringلاbasic | pro | ultra. الافتراضي pro. يجب أن يكون مسعّرًا للقالب والدقة المختارين.
resolutionstringلا480p | 720p | 1080p. الافتراضي 720p. يدعم basic الدقتين 480p و720p. يدعم pro وultra أيضًا 1080p. يجب أن يكون الزوج مسعّرًا.

متطلبات الصورة المرجعية

يجب أن تحتوي reference_image_urls على N روابط HTTPS عامة بالضبط؛ N هي قيمة imageSlots للقالب من GET /api/template-prices (من 1 إلى 5). يجب أن تكون كل صورة JPEG أو PNG أو WebP وبحجم أقصى افتراضي 10 MB وعلى المنفذ 443. تؤدي السلاسل الفارغة وnull والعناصر الناقصة أو الزائدة إلى HTTP 400. ينزّل الخادم الصور ويحفظها بالترتيب. لا تُقبل الملفات المحلية أو العناوين الخاصة أو الروابط التي تتطلب مصادقة.

إعدادات القالب

يدعم basic دقتي 480p و720p؛ ويدعم pro وultra أيضًا 1080p. تتاح فقط التركيبات المسعّرة للقالب. يعرض GET /api/template-prices التركيبات وبيانات القالب. يتحكم القالب بالمدة والنسبة؛ احذف duration وaspect_ratio. تؤدي image_url وeffect وslots وprompt وreference_video_urls وcallBackUrl والحقول غير المعروفة إلى HTTP 400.

يحدد القالب النسبة 9:16 أو 16:9 أو adaptive. تتبع adaptive نسبة فيديو القالب المرجعي. لا ترسل aspect_ratio وإلا تعاد HTTP 400. تحدد المطالبة المحفوظة والوسائط والمدة وعدد الصور تأثيرًا ثابتًا.

GET /api/template-prices

رد ناجح

القيم للتوضيح فقط. مبلغ 30 رصيدًا ليس سعرًا ثابتًا؛ اعتمد على السعر الذي يعيده طلبك.

HTTP 200 · JSON
{
  "code": 0,
  "message": "ok",
  "data": {
    "taskId": "550e8400-e29b-41d4-a716-446655440000",
    "status": "processing",
    "credits_estimate": 30,
    "credits_charged": 30
  }
}

إنشاء مهمة: حقول الرد
الحقلالنوعمطلوبالوصف
data.taskIdstring (uuid)نعممعرّف UUID للمهمة يعيده طلب الإنشاء.
data.statusstringنعمتكون دائمًا processing عند نجاح الإنشاء.
data.credits_estimateintegerنعمسعر المهمة بالأرصدة، يُحجز عند الإنشاء.
data.credits_chargedintegerنعمالأرصدة المحجوزة أثناء المعالجة، والمبلغ النهائي بعد أي استرداد عند انتهاء المهمة.
صور مرجعية متعددة

إذا كان imageSlots = 3، أرسل ثلاثة روابط بالضبط بترتيب مراجع المطالبة. استبدل YOUR_TEMPLATE_SLUG بمعرّف القالب. لا يعني المثال أن Bulin أو Dame Hombro يتطلبان ثلاث صور. لا توجد معاملات للموضع أو effect أو slots.

POST · cURL
curl --request POST \
  'https://freerapvideo.com/api/v1/templates/YOUR_TEMPLATE_SLUG/generations' \
  --header "Authorization: Bearer $FREERAP_API_KEY" \
  --header 'Content-Type: application/json' \
  --data '{
    "reference_image_urls": ["https://cdn.example.com/image-1.jpg", "https://cdn.example.com/image-2.jpg", "https://cdn.example.com/image-3.jpg"],
    "model": "pro",
    "resolution": "720p"
  }'

الأخطاء · HTTP 400 / 401 / 402 / 403 / 404 / 429 / 500 / 503

الاستعلام عن مهمة

GET/api/v1/generations/{taskId}

يعيد حالة مهمة أُنشئت عبر API وتخص مستخدم المفتاح. لا يوجد جسم للطلب. استخدم مفتاح الإنشاء أو مفتاحًا صالحًا آخر للمستخدم نفسه.

الاستعلام عن مهمة: معاملات المسار
الحقلالنوعمطلوبالوصف
taskIdstring (uuid)نعممعرّف UUID للمهمة يعيده طلب الإنشاء.

رد ناجح

HTTP 200 · JSON
{
  "code": 0,
  "message": "ok",
  "data": {
    "taskId": "550e8400-e29b-41d4-a716-446655440000",
    "status": "success",
    "campaign": "bulin",
    "costCredits": 30,
    "credits_estimate": 30,
    "credits_charged": 30,
    "createdAt": "2026-10-31T00:00:00.000Z",
    "videos": [
      "https://media.example.com/generated/video.mp4"
    ]
  }
}

الاستعلام عن مهمة: حقول الرد
الحقلالنوعمطلوبالوصف
data.taskIdstring (uuid)نعممعرّف UUID للمهمة يعيده طلب الإنشاء.
data.statusstringنعمpending | processing | success | failed | canceled. راجع جدول الحالات أدناه.
data.campaignstringلامعرّف القالب العام. قد يغيب عن المهام القديمة.
data.credits_estimateintegerنعمسعر المهمة بالأرصدة، يُحجز عند الإنشاء.
data.credits_chargedintegerنعمالأرصدة المحجوزة أثناء المعالجة، والمبلغ النهائي بعد أي استرداد عند انتهاء المهمة.
data.costCreditsintegerنعمحقل توافق بالقيمة نفسها الموجودة في credits_charged.
data.createdAtstring (date-time)نعموقت الإنشاء بصيغة ISO 8601 وبتوقيت UTC.
data.videosstring[]نعمعناوين الفيديوهات المستضافة لدى FreeRap عند النجاح؛ مصفوفة فارغة في بقية الحالات.
data.errorstringلاوصف الخطأ عند توفره. يغيب أثناء pending أوprocessing، وليس رمز خطأ ثابتًا.

حالات المهمة

حالات المهمة
الحالةنهائيةالوصف
pendingلافي قائمة الانتظار. واصل الاستعلام.
processingلاقيد التوليد. واصل الاستعلام.
successنعماكتملت. اقرأ videos وتوقف عن الاستعلام.
failedنعمفشلت. اقرأ error إن وجد وتوقف عن الاستعلام.
canceledنعمأُلغيت. توقف عن الاستعلام.

استعلم كل 30 ثانية تقريبًا وتوقف عند الحالة النهائية. انتهاء مهلة الاستعلام لا يعني فشل التوليد؛ استعلم عن المهمة نفسها مجددًا.

رد فشل التوليد

يعني HTTP 200 وcode 0 نجاح الاستعلام فقط. قد يفشل التوليد؛ افحص data.status دائمًا. تعيد المهمة الفاشلة مصفوفة videos فارغة وقد تتضمن error.

HTTP 200 · JSON
{
  "code": 0,
  "message": "ok",
  "data": {
    "taskId": "550e8400-e29b-41d4-a716-446655440000",
    "status": "failed",
    "campaign": "bulin",
    "costCredits": 0,
    "credits_estimate": 30,
    "credits_charged": 0,
    "createdAt": "2026-10-31T00:00:00.000Z",
    "videos": [],
    "error": "Video generation failed."
  }
}

الأخطاء · HTTP 401 / 404 / 429 / 500

الأخطاء

تستخدم أخطاء الطلب حالة HTTP خارج 2xx والجسم التالي. تكون code دائمًا -1؛ ميّز الفئات بحالة HTTP. message نص توضيحي وليس معرّف خطأ ثابتًا للبرامج.

HTTP 402 · JSON
{
  "code": -1,
  "message": "Insufficient credits."
}

الأخطاء
حالة HTTPالواجهةالسببالإجراء
400POSTJSON أو حقول أو صورة أو نموذج أو دقة أو مدة غير صالحة.صحح الطلب قبل إعادة المحاولة.
401POST / GETمفتاح API مفقود أو غير صالح.راجع ترويسة Authorization والمفتاح.
402POSTرصيد FreeRap غير كافٍ. لا تبدأ المهمة.أضف أرصدة ثم أنشئ المهمة.
403POSTلا يوجد سعر للقالب مع هذا الزوج من النموذج والدقة.اختر زوجًا مسعّرًا من /api/template-prices.
404POST / GETالقالب غير متاح، أو المهمة مفقودة أو محذوفة أو غير متاحة للمستخدم أو لم تُنشأ عبر API.تحقق من slug ومعرّف المهمة والحساب. توقف عن الاستعلام عن مهمة غير متاحة.
429POST / GETتجاوز معدل الطلبات أو حد 30 مهمة قيد التنفيذ.التزم بـRetry-After إن وُجدت أو انتظر انتهاء المهام الجارية.
500POST / GETخطأ غير متوقع في الخادم.أعد الاستعلام لاحقًا. قد يكون الإنشاء قد بدأ؛ تجنب تكرار الإرسال.
503POSTتسعير الأرصدة أو التخزين أو خدمة التوليد غير متاحة.أعد المحاولة لاحقًا وتواصل مع الدعم إن استمر الخطأ.

الأرصدة والحدود

تُحجز الأرصدة عند الإنشاء. أثناء pending أوprocessing تساوي credits_charged قيمة credits_estimate. عند النجاح يُحتفظ بالمبلغ. عند الفشل أو الإلغاء يُرد الحجز بعد خصم رسوم الفشل إن ضُبطت، وافتراضيًا هي 0. تعرض credits_charged في الحالة النهائية المبلغ المحتفظ به.

يسمح كل مفتاح بما يصل إلى 30 مهمة pending أوprocessing. على كل نسخة خادم، الحد هو طلب إنشاء واحد وخمسة استعلامات في الثانية لكل مفتاح. قد يتضمن HTTP 429 ترويسة Retry-After بالثواني؛ إن غابت، انتظر قبل إعادة المحاولة.

لا تدعم طلبات الإنشاء مفتاح منع التكرار. قد تكون المهمة قد أُنشئت حتى عند انتهاء مهلة POST أو ظهور خطأ خادم. تجنب إعادة الإرسال آليًا دون تحقق، فقد يسبب مهام ورسومًا مكررة.