Video Generation API
Generate AI videos using providers like Luma, Runway, and Pollo through a unified API with session-based generation and WebSocket real-time updates.
Quick Start
🎬 Generate Videos with AI
MCPHub's Video Generation API supports both direct generation and session-based workflows for creating multiple videos with shared parameters.
Production Endpoint
https://api.mcphub.com/api/v3/videos/generateSession-Based
Support for continuous generation with WebSocket updates
Generate a Video
Python
import requests
# Get your JWT token first
token_response = requests.post(
"https://api.mcphub.com/api/v3/user/token",
headers={"X-User-Id": "your-user-id"}
)
token = token_response.json()["data"]["accessToken"]
# Generate a video
response = requests.post(
"https://api.mcphub.com/api/v3/videos/generate",
headers={
"Authorization": f"Bearer {token}",
"Content-Type": "application/json"
},
json={
"prompt": "A serene mountain landscape at sunset with clouds moving",
"model": "luma-ray-2.0-flash",
"duration": 5,
"aspect_ratio": "16:9"
}
)
result = response.json()
print(f"Video ID: {result['video_id']}")
print(f"Status: {result['status']}")
print(f"Credits used: {result['credits_used']}")TypeScript/JavaScript
// Get your JWT token first
const tokenResponse = await fetch('https://api.mcphub.com/api/v3/user/token', {
method: 'POST',
headers: { 'X-User-Id': 'your-user-id' }
});
const { data: { accessToken } } = await tokenResponse.json();
// Generate a video
const response = await fetch('https://api.mcphub.com/api/v3/videos/generate', {
method: 'POST',
headers: {
'Authorization': `Bearer ${accessToken}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({
prompt: 'A serene mountain landscape at sunset with clouds moving',
model: 'luma-ray-2.0-flash',
duration: 5,
aspect_ratio: '16:9'
})
});
const result = await response.json();
console.log(`Video ID: ${result.video_id}`);
console.log(`Status: ${result.status}`);
console.log(`Credits used: ${result.credits_used}`);cURL
# Get JWT token first
curl -X POST "https://api.mcphub.com/api/v3/user/token" \
-H "X-User-Id: your-user-id"
# Generate video
curl -X POST "https://api.mcphub.com/api/v3/videos/generate" \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"prompt": "A serene mountain landscape at sunset with clouds moving",
"model": "luma-ray-2.0-flash",
"duration": 5,
"aspect_ratio": "16:9"
}'Session-Based Generation
For generating multiple videos with shared parameters and real-time updates via WebSocket:
Python Example
import requests
import websocket
import json
# 1. Create a video generation session
session_response = requests.post(
"https://api.mcphub.com/api/v3/videos/sessions",
headers={
"Authorization": f"Bearer {token}",
"Content-Type": "application/json"
},
json={
"prompt": "Mountain landscapes",
"model": "luma-ray-2.0-flash",
"duration_minutes": 30,
"max_videos": 10,
"interval_seconds": 60
}
)
session_id = session_response.json()["session_id"]
websocket_url = session_response.json()["websocket_url"]
# 2. Connect to WebSocket for real-time updates
def on_message(ws, message):
data = json.loads(message)
if data["type"] == "video_generated":
print(f"New video: {data['video_url']}")
ws = websocket.WebSocketApp(
websocket_url,
on_message=on_message
)
ws.run_forever()Available Models
Luma AI
luma-ray-2.0-flashluma-ray-2.0
Fast & high-quality video generation
Other Providers
runway-gen3pollo-video-1.0
Various quality & price options
📋 Get Full Model List
Retrieve all available video generation models and their pricing:
GET https://api.mcphub.com/api/v3/media-pricing/models?media_type=videoAPI Endpoints
/api/v3/videos/generateGenerate a video from a text prompt
Request Body
prompt (required) - Text description of the videomodel (required) - Model ID to useduration (optional) - Video duration in secondsaspect_ratio (optional) - e.g., "16:9", "9:16", "1:1"/api/v3/videos/sessionsCreate a video generation session
Request Body
prompt (required) - Base prompt for sessionmodel (required) - Model ID to useduration_minutes (optional) - Session duration (default: 30)max_videos (optional) - Max videos to generate (default: 50)interval_seconds (optional) - Seconds between generations (default: 60)/api/v3/videos/sessions/:session_idGet session details and generated videos
/api/v3/videos/sessions/:session_id/stopStop a running session
/api/v3/videos/historyGet your video generation history
Response Format
{
"success": true,
"video_id": "vid_abc123",
"video_url": "https://...",
"thumbnail_url": "https://...",
"model": "luma-ray-2.0-flash",
"processing_time": 45.2,
"credits_used": 100.0,
"remaining_credits": 900.0,
"duration": 5,
"aspect_ratio": "16:9",
"prompt": "A serene mountain landscape at sunset with clouds moving",
"status": "completed",
"created_at": "2025-11-12T10:30:00Z"
}WebSocket Real-Time Updates
When using sessions, connect to the WebSocket URL to receive real-time updates:
WebSocket Message Types
video_generatedNew video has been generated
session_statusSession status update (active, completed, cancelled)
generation_progressProgress update for current generation
Authentication
The Video Generation API uses JWT token authentication:
Get User ID
Sign in and get your user ID from your account
Request JWT Token
POST to /api/v3/user/token with X-User-Id header
Use Token
Include token in Authorization header for all API requests
Next Steps
📚 Related Docs
- • Image Generation API - Generate AI images
- • API Reference - Complete API documentation
- • Pricing - Video generation costs
🚀 Get Started
- • Try in Dashboard - Generate videos in the UI
- • Add Credits - Purchase credits
- • View History - Track your generations