เรียกดูเอกสารสำหรับนักพัฒนา

REST API

อัปโหลดและแชร์ไฟล์

บทช่วยสอนนี้ใช้ไฟล์ในเครื่องหนึ่งไฟล์ชื่อ demo.mp4 และเปลี่ยนให้เป็นไฟล์แชร์ที่ใช้งานได้ URL ทำตามขั้นตอนตามลำดับ คำตอบแต่ละรายการจะให้ค่าที่ใช้โดยคำขอถัดไป

1

สร้างและบันทึกคีย์ API

เปิดการตั้งค่านักพัฒนาซอฟต์แวร์ เลือกการอัปโหลด:เขียน, files:read, shares:write และ shares:read จากนั้นสร้างคีย์ คัดลอกเลย ข้อมูลลับทั้งหมดจะแสดงเพียงครั้งเดียว

ขอบเขตที่ใช้ได้: การอัปโหลด: เขียน, files:read, shares:write และ shares:read

ผลลัพธ์ที่คาดหวัง:คุณมีความลับที่ขึ้นต้นด้วยคำนำหน้าคีย์ 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

ส่งไบต์วิดีโอ

อัปโหลด demo.mp4 โดยตรงไปยัง URL ชั่วคราว อย่าเพิ่มคีย์ Video2URL API ในคำขอ PUT นี้ ใช้ Content-Type ที่ส่งคืนโดยการตอบกลับ create-upload อัปโหลดไฟล์ Raw ไปยัง 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()