v1.0 — متاح

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)
200 OK
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
});
code GitHub rocket_launch ابدأ مجاناً