مسودة: يصف هذا التوثيق أوكتا فيديو كما ستكون عند الإطلاق، وقد لا تكون بعض الميزات متاحة بعد.
OctaVideoالتوثيق

الرفع عبر الواجهة البرمجية

ارفع ملفات الفيديو، أو استوردها من رابط أو من Google Drive أو OneDrive، ونظّمها في مجموعات.

يستطيع خادمك إضافة فيديوهات إلى المكتبة دون لوحة التحكم، برفع ملف أو بطلب أن تجلبه أوكتا فيديو.

ارفع ملفًا

POST https://api.octavideo.tech/api/v1/videos/upload
AccessKey: ovk_your_private_key
Content-Type: multipart/form-data

أرسل الفيديو بصيغة multipart/form-data في جزأين، بهذا الترتيب:

الحقل

النوع

أرسل title قبل file

تنقل أوكتا فيديو الملف إلى التخزين مباشرة أثناء وصوله، لذلك لا تقرأ الأجزاء إلا حتى الملف. أي title يُرسل بعد الملف يُتجاهَل، ويأخذ الفيديو اسم الملف بدلًا منه.

قد يستغرق الرفع حتى ساعتين، لذلك امنح عميل HTTP مهلة طويلة. يقرأ كل مثال المفتاح من متغيّر البيئة OCTAVIDEO_KEY:

curl -X POST "https://api.octavideo.tech/api/v1/videos/upload" \
  -H "AccessKey: $OCTAVIDEO_KEY" \
  -F "title=Lesson 1: Introduction" \
  -F "file=@lesson-1.mp4"

يستخدم مثال Python الحزمة الخارجية requests، وهي تضع حقول data قبل files. تبني هذه الحزمة جسم الطلب كاملًا في الذاكرة، لذلك استخدم عميلًا يدعم البث مع الملفات الكبيرة جدًا.

يعيد الرفع الناجح 201 Created مع الفيديو الجديد بحالة queued:

201 Created
{
  "data": {
    "id": "6f1c2b9e-4a7d-4f3e-9b8a-2d5c7e1f0a34",
    "library_id": "0b8e5d3a-1c2f-4e6a-8b7d-9f0a1b2c3d4e",
    "title": "Lesson 1: Introduction",
    "description": "",
    "encoding_status": "queued",
    "progress": 0,
    "duration_seconds": 0,
    "size_bytes": 412337152,
    "chapters": [],
    "created_at": "2026-10-25T09:30:00Z"
  }
}

يصبح الفيديو جاهزًا للتشغيل عند انتهاء المعالجة. اقرأ حالة المعالجة.

الحالةالرمزالمعنى
400bad_requestالجسم ليس multipart/form-data، أو أنه تالف.
400validation_failedجزء file مفقود، أو title أطول من 255 حرفًا.
401unauthorizedترويسة AccessKey مفقودة أو المفتاح غير صالح.
413payload_too_largeالملف أكبر من 10 GiB.

استورد من رابط

بدلًا من إرسال الملف، يمكنك أن تطلب من أوكتا فيديو جلبه:

POST https://api.octavideo.tech/api/v1/videos/import
AccessKey: ovk_your_private_key
Content-Type: application/json

الحقل

النوع

curl -X POST "https://api.octavideo.tech/api/v1/videos/import" \
  -H "AccessKey: $OCTAVIDEO_KEY" \
  -H "Content-Type: application/json" \
  -d '{"source": "url", "source_ref": "https://example.com/lessons/intro.mp4", "title": "Lesson 1: Introduction"}'

يجري الاستيراد في الخلفية. تكون الاستجابة 202 Accepted مع job_id والفيديو الجديد بحالة queued:

202 Accepted
{
  "data": {
    "job_id": "3c9d1e7a-5b2f-4a8e-9d6c-1f0b2a3c4d5e",
    "video": {
      "id": "6f1c2b9e-4a7d-4f3e-9b8a-2d5c7e1f0a34",
      "library_id": "0b8e5d3a-1c2f-4e6a-8b7d-9f0a1b2c3d4e",
      "title": "Lesson 1: Introduction",
      "description": "",
      "encoding_status": "queued",
      "progress": 0,
      "duration_seconds": 0,
      "size_bytes": 0,
      "chapters": [],
      "created_at": "2026-10-25T09:30:00Z"
    }
  }
}

احتفظ بقيمة id للفيديو: تتابع الاستيراد عبر الفيديو كما تتابع الرفع. إذا تعذّر جلب المصدر أو لم يكن فيديو صالحًا، تنتهي حالة الفيديو إلى failed مع failure_reason.

نظّم الفيديوهات في مجموعات

تضم المجموعة فيديوهات من مكتبة واحدة، مثل دروس دورة واحدة. أنشئها ثم أضف إليها الفيديوهات:

curl -X POST "https://api.octavideo.tech/api/v1/collections" \
  -H "AccessKey: $OCTAVIDEO_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name": "Arabic grammar, level 1"}'
  • يصل name للمجموعة إلى 100 حرف.
  • يضيف كل طلب من 1 إلى 100 فيديو، ويجب ألا تتكرر المعرّفات داخل الطلب الواحد.
  • يعرض GET /videos?collection_id= فيديوهات مجموعة واحدة، صفحة بعد صفحة.

عدّل فيديو

بعد إنشاء الفيديو يمكنك تعديله من خادمك أيضًا:

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

في هذه الصفحة