الرفع عبر الواجهة البرمجية
ارفع ملفات الفيديو، أو استوردها من رابط أو من 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:
{
"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"
}
}يصبح الفيديو جاهزًا للتشغيل عند انتهاء المعالجة. اقرأ حالة المعالجة.
| الحالة | الرمز | المعنى |
|---|---|---|
400 | bad_request | الجسم ليس multipart/form-data، أو أنه تالف. |
400 | validation_failed | جزء file مفقود، أو title أطول من 255 حرفًا. |
401 | unauthorized | ترويسة AccessKey مفقودة أو المفتاح غير صالح. |
413 | payload_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:
{
"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=فيديوهات مجموعة واحدة، صفحة بعد صفحة.
عدّل فيديو
بعد إنشاء الفيديو يمكنك تعديله من خادمك أيضًا:
- تحديث تفاصيل الفيديو: العنوان والوصف.
- ضبط فصول الفيديو: حتى 200 فصل بترتيب زمني.
- التفريغ النصي للفيديو: ابدأ تفريغ الكلام المنطوق فيه.