تصفح مستندات المطور

REST API

تحميل ومشاركة الملفات

يأخذ هذا البرنامج التعليمي ملفًا محليًا واحدًا يسمى العرض التوضيحي.mp4 ويحوله إلى مشاركة عمل URL. أكمل الخطوات بالترتيب؛ توفر كل استجابة قيمة يستخدمها الطلب التالي.

1

إنشاء وحفظ مفتاح API

افتح إعدادات المطور، وحدد التحميلات: كتابة، والملفات: قراءة، والمشاركات: كتابة، والمشاركة: قراءة، ثم قم بإنشاء المفتاح. انسخه الآن، فالسر الكامل يظهر مرة واحدة فقط.

النطاقات المتاحة: التحميلات: كتابة، الملفات: قراءة، المشاركات: كتابة، والمشاركة: قراءة.

النتيجة المتوقعة:لديك سر يبدأ بالبادئة الرئيسية Video2URL. اجعل الأمر خاصًا.
2

قم بإعداد المحطة الخاصة بك

ضع المفتاح في متغير بيئة بحيث لا يظهر في كل أمر أو في سجل الصدفة الخاص بك. استبدل العنصر النائب قبل الضغط على Enter.

Terminal
read -s VIDEO2URL_API_KEY
echo "key loaded"
النتيجة المتوقعة:يقوم الأمر بطباعة المفتاح المحمل، وليس السر نفسه.
3

إنشاء مهمة تحميل

أخبر Video2URL باسم الملف الدقيق ونوع MIME وحجم البايت. يؤدي هذا إلى إرجاع تحميل R2 مؤقت URL؛ لم يتم تحميل الفيديو بعد.

POST /api/v1/uploads

curl
curl -sS -X POST https://video2url.com/api/v1/uploads \
  -H "Authorization: Bearer $VIDEO2URL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"filename":"demo.mp4","mimeType":"video/mp4","sizeBytes":1048576}'
النتيجة المتوقعة:استجابة JSON تحتوي على data.uploadId وdata.upload.url. احفظ كلا القيمتين للخطوات التالية.
Save response values
export UPLOAD_ID="paste data.uploadId here"
export UPLOAD_URL="paste data.upload.url here"
4

إرسال بايت الفيديو

قم بتحميل العرض التوضيحي.mp4 مباشرة إلى URL المؤقت. لا تقم بإضافة مفتاح Video2URL API إلى طلب PUT هذا. استخدم نوع المحتوى الذي تم إرجاعه بواسطة استجابة الإنشاء والتحميل. قم بتحميل الملف الأولي إلى URL المحدد مسبقًا باستخدام نوع المحتوى الذي تم إرجاعه.

curl · PUT
curl --fail-with-body -X PUT "$UPLOAD_URL" \
  -H "Content-Type: video/mp4" \
  --data-binary @demo.mp4
النتيجة المتوقعة:يقوم خادم التحميل بإرجاع HTTP 200. نص الاستجابة الفارغ أمر طبيعي.
5

أكمل التحميل وتحقق منه

بعد نجاح PUT، اطلب من Video2URL التحقق من الكائن المخزن وإنشاء سجل الملف. لا تستدعي هذه الخطوة قبل انتهاء عملية PUT.

POST /api/v1/uploads/{uploadId}/complete · GET /api/v1/uploads/{uploadId}

curl
curl -sS -X POST "https://video2url.com/api/v1/uploads/$UPLOAD_ID/complete" \
  -H "Authorization: Bearer $VIDEO2URL_API_KEY"
النتيجة المتوقعة:تحتوي الاستجابة على data.file.fileId. حفظ FILE_ID؛ فهو يحدد الملف المكتمل.
Save FILE_ID
export FILE_ID="paste data.file.fileId here"
6

قم بإنشاء المشاركة النهائية URL

قم بإنشاء رابط غير مدرج من FILE_ID. غير مدرج يعني أن أي شخص لديه URL يمكنه فتحه، ولكن لم يتم وضعه في دليل عام.

  • العنوان اختياري.
  • كلمة المرور اختيارية.
  • الرؤية اختيارية.
  • إعدادات الرؤية الافتراضية هي غير مدرجة.

POST /api/v1/shares · GET / DELETE /api/v1/shares/{shareId}

curl
curl -sS -X POST https://video2url.com/api/v1/shares \
  -H "Authorization: Bearer $VIDEO2URL_API_KEY" \
  -H "Content-Type: application/json" \
  -d "{"fileId":"$FILE_ID","visibility":"unlisted"}"
النتيجة المتوقعة:يحتوي الرد على سجل المشاركة وURL. افتح SHARE_URL في نافذة متصفح خاصة للتحقق منه.
Open SHARE_URL
export SHARE_URL="paste the returned share URL here"
open "$SHARE_URL" # macOS; use xdg-open on Linux

JavaScript & Python

قم بإنشاء أضيق مفتاح تحتاجه. قم بالتدوير عن طريق إنشاء بديل ونشره قبل إلغاء المفتاح القديم. إذا انتهى الوصول المدفوع، فستظل المفاتيح محفوظة ولكن تتوقف المكالمات مؤقتًا؛ يؤدي تجديد الخطة المؤهلة إلى استعادة إمكانية الوصول.

JavaScript
const response = await fetch('https://video2url.com/api/v1/uploads', {
  method: 'POST',
  headers: { Authorization: `Bearer ${process.env.VIDEO2URL_API_KEY}`, 'Content-Type': 'application/json' },
  body: JSON.stringify({ filename: 'demo.mp4', mimeType: 'video/mp4', sizeBytes: file.size }),
});
const created = await response.json();
Python
import os, requests
headers = {"Authorization": f"Bearer {os.environ['VIDEO2URL_API_KEY']}"}
created = requests.post("https://video2url.com/api/v1/uploads", headers=headers, json={"filename": "demo.mp4", "mimeType": "video/mp4", "sizeBytes": 1048576})
created.raise_for_status()
with open("demo.mp4", "rb") as video:
    requests.put(created.json()["data"]["upload"]["url"], data=video).raise_for_status()