Generate a video
Creates a video generation job from a text prompt. This is an asynchronous operation that returns immediately with a job ID. Use the retrieve endpoint to check the status and get the video URL when generation is complete.
Bearer token authentication. Use your MPilot virtual-key JWT or admin JWT.
Virtual keys (prefixed with sk-bf-) can also be passed here.
In: header
Model identifier in format provider/model
Text prompt describing the video to generate
Optional reference image for image-to-video. OpenAI and Gemini require a base64 data URL (e.g., data:image/png;base64,...). Runway and Replicate accept both data URLs and plain URLs.
Duration of the video in seconds as a string (e.g., "4")
Resolution of the generated video (e.g., 1280x720, 720x1280, 1920x1080)
Text describing what to avoid in the generated video
Seed for reproducible generation
Source video URI for video-to-video generation (provider-specific, e.g. GCS URI)
Enable audio generation in the video (supported by select providers/models)
Fallback models to try if primary model fails
Response Body
curl -X POST "https://loading/{AI_GATEWAY_URL}/v1/videos" \ -H "Content-Type: application/json" \ -d '{ "model": "string", "prompt": "string" }'{
"id": "string",
"object": "video",
"model": "string",
"status": "queued",
"progress": 100,
"prompt": "string",
"remixed_from_video_id": "string",
"seconds": "string",
"size": "string",
"created_at": 0,
"completed_at": 0,
"expires_at": 0,
"videos": [
{
"type": "url",
"url": "http://example.com",
"base64": "string",
"content_type": "string"
}
],
"error": {
"code": "string",
"message": "string"
},
"content_filter": {
"filtered_count": 0,
"reasons": [
"string"
]
},
"extra_fields": {
"request_type": "string",
"provider": "openai",
"model_requested": "string",
"model_deployment": "string",
"latency": 0,
"chunk_index": 0,
"raw_request": {},
"raw_response": {},
"cache_debug": {
"cache_hit": true,
"cache_id": "string",
"hit_type": "string",
"requested_provider": "string",
"requested_model": "string",
"provider_used": "string",
"model_used": "string",
"input_tokens": 0,
"threshold": 0,
"similarity": 0
}
}
}{
"event_id": "string",
"type": "string",
"is_bifrost_error": true,
"status_code": 0,
"error": {
"type": "string",
"code": "string",
"message": "string",
"param": "string",
"event_id": "string"
},
"extra_fields": {
"provider": "openai",
"model_requested": "string",
"request_type": "string"
}
}{
"event_id": "string",
"type": "string",
"is_bifrost_error": true,
"status_code": 0,
"error": {
"type": "string",
"code": "string",
"message": "string",
"param": "string",
"event_id": "string"
},
"extra_fields": {
"provider": "openai",
"model_requested": "string",
"request_type": "string"
}
}