API Reference
ادمج قدرات الفيديو في أي تطبيق. API بسيط يعمل مع أي backend — Node.js، Laravel، Python، وغيرها.
المصادقة
كل الطلبات تحتاج API Key في الـ header. احصل على مفتاحك من لوحة التحكم.
Header
X-API-Key: msk_live_••••••••••••••••
curl https://api.mena-stream.com/api/v1/rooms \ -H "X-API-Key: msk_live_YOUR_KEY" \ -H "Content-Type: application/json"
Base URL
https://api.mena-stream.com/api/v1
أكواد الأخطاء
| Code | المعنى |
|---|---|
| 401 | API key missing or invalid |
| 402 | Usage limit reached — upgrade plan |
| 403 | Account inactive |
| 404 | Room not found |
| 410 | Room expired or closed |
| 422 | Validation error |
| 500 | Server error |
إنشاء غرفة
POST
/v1/rooms
إنشاء غرفة فيديو جديدة
الـ Body Parameters:
| الحقل | النوع | الحالة | الوصف |
|---|---|---|---|
| name | string | required | اسم الغرفة (max 255) |
| max_participants | integer | optional | الحد الأقصى للمشاركين (2-500، افتراضي 50) |
| expires_in | integer | optional | انتهاء الصلاحية بالدقائق (5-1440، افتراضي 60) |
201 Created
curl -X POST https://api.mena-stream.com/api/v1/rooms \ -H "X-API-Key: msk_live_YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{ "name": "Team Meeting", "max_participants": 10, "expires_in": 60 }'
الانضمام للغرفة
POST
/v1/rooms/{roomId}/join
الحصول على Token للانضمام
| Field | Type | Status | Description |
|---|---|---|---|
| display_name | string | required | اسم العرض (max 100) |
| role | string | optional | moderator | participant (افتراضي participant) |
curl -X POST https://api.mena-stream.com/api/v1/rooms/ROOM_ID/join \ -H "X-API-Key: msk_live_YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{ "display_name": "Ahmed", "role": "moderator" }'
بيانات الغرفة
GET
/v1/rooms/{roomId}
200 OK
curl https://api.mena-stream.com/api/v1/rooms/ROOM_ID \ -H "X-API-Key: msk_live_YOUR_KEY"
قائمة المشاركين
GET
/v1/rooms/{roomId}/participants
200 OK
{
"data": [
{
"id": "01JXXX...",
"display_name": "Ahmed",
"role": "moderator",
"joined_at": "2026-06-06T09:00:00+00:00"
}
],
"total": 1
}
إغلاق الغرفة
DEL
/v1/rooms/{roomId}
200 OK
curl -X DELETE https://api.mena-stream.com/api/v1/rooms/ROOM_ID \ -H "X-API-Key: msk_live_YOUR_KEY" // Response { "ok": true }
Node.js — مثال كامل
// npm install node-fetch import fetch from 'node-fetch'; const API_KEY = 'msk_live_YOUR_KEY'; const BASE = 'https://api.mena-stream.com/api/v1'; const headers = { 'X-API-Key': API_KEY, 'Content-Type': 'application/json' }; // 1. Create room const room = await fetch(`${BASE}/rooms`, { method: 'POST', headers, body: JSON.stringify({ name: 'My Meeting', expires_in: 60 }), }).then(r => r.json()); // 2. Generate join token for user const join = await fetch(`${BASE}/rooms/${room.id}/join`, { method: 'POST', headers, body: JSON.stringify({ display_name: 'Ahmed', role: 'moderator' }), }).then(r => r.json()); // 3. Send token to frontend — it connects via SDK console.log(join.token); // JWT token console.log(join.ws_url); // wss://api.mena-stream.com/ws/?token=...
Laravel — مثال كامل
// config/services.php 'mena_stream' => [ 'key' => env('MENA_STREAM_API_KEY'), 'base' => 'https://api.mena-stream.com/api/v1', ], // In your controller use Illuminate\Support\Facades\Http; class MeetingController extends Controller { public function create() { $http = Http::withHeaders([ 'X-API-Key' => config('services.mena_stream.key'), ])->baseUrl(config('services.mena_stream.base')); // Create room $room = $http->post('/rooms', [ 'name' => 'Team Standup', 'expires_in' => 30, ])->json(); // Generate token for current user $join = $http->post("/rooms/{$room['id']}/join", [ 'display_name' => auth()->user()->name, 'role' => 'moderator', ])->json(); return view('meeting', [ 'room' => $room, 'token' => $join['token'], 'wsUrl' => $join['ws_url'], ]); } }
Python — مثال كامل
# pip install requests import requests API_KEY = "msk_live_YOUR_KEY" BASE = "https://api.mena-stream.com/api/v1" headers = {"X-API-Key": API_KEY, "Content-Type": "application/json"} # Create room room = requests.post(f"{BASE}/rooms", headers=headers, json={"name": "My Meeting", "expires_in": 60} ).json() # Join room join = requests.post(f"{BASE}/rooms/{room['id']}/join", headers=headers, json={"display_name": "Ahmed", "role": "moderator"} ).json() print(join["token"]) # Send to frontend
JavaScript SDK
SDK مفتوح المصدر للـ frontend — يتصل بالغرفة عبر WebSocket ويدير الكاميرا والميكروفون.
// Install npm install @mena-stream/client // Usage import { MenaStreamClient } from '@mena-stream/client'; const client = new MenaStreamClient({ wsUrl: join.ws_url }); const session = await client.join({ displayName: 'Ahmed' }); // Enable camera const stream = await session.enableCamera(); videoElement.srcObject = stream; // Listen for other participants session.addEventListener('newProducer', ({ detail }) => { // New participant joined });