{ "model_id": "pruna/p-video", "provider_id": "pruna", "name": "P-Video", "description": "Pruna's P-Video is a premium video generation model supporting text-to-video, image-to-video, and audio-conditioned generation up to 1080p at 24 or 48 fps, with configurable duration up to 20 seconds.", "task": "Text-to-Video", "tags": [ "Video Generation", "Text-to-Video", "Image-to-Video" ], "context_length": null, "max_output_tokens": null, "schema_version": "1.0.0", "pricing": { "Default (per second)": 0.02, "@720p (per second)": 0.02, "@1080p (per second)": 0.04, "@720p draft (per second)": 0.005, "@1080p draft (per second)": 0.01 }, "examples": [ { "name": "Neon City Drift", "description": "Generate a short cinematic clip from a text prompt in draft mode for fast, low-cost previews.", "input": { "prompt": "A sports car drifting through a neon-lit city at night, cinematic aerial shot", "duration": 5, "resolution": "720p", "aspect_ratio": "16:9", "draft": true }, "output": { "video": "https://examples.aig.cloudflare.com/pruna/p-video/neon-city-drift.mp4" }, "raw_response": { "state": "Completed", "result": { "video": "https://examples.aig.cloudflare.com/pruna/p-video/neon-city-drift.mp4" }, "gatewayMetadata": { "keySource": "Unified" } }, "code_snippets": [ { "label": "typescript", "language": "typescript", "code": "const response = await env.AI.run(\n 'pruna/p-video',\n {\n prompt: 'A sports car drifting through a neon-lit city at night, cinematic aerial shot',\n duration: 5,\n resolution: '720p',\n aspect_ratio: '16:9',\n draft: true,\n },\n)\nconsole.log(response)" }, { "label": "curl", "language": "bash", "code": "curl https://api.cloudflare.com/client/v4/accounts/$CLOUDFLARE_ACCOUNT_ID/ai/run \\\n --header \"Authorization: Bearer $CLOUDFLARE_API_TOKEN\" \\\n --header \"Content-Type: application/json\" \\\n --data '{\n \"model\": \"pruna/p-video\",\n \"input\": {\n \"prompt\": \"A sports car drifting through a neon-lit city at night, cinematic aerial shot\",\n \"duration\": 5,\n \"resolution\": \"720p\",\n \"aspect_ratio\": \"16:9\",\n \"draft\": true\n }\n}'" } ] } ], "default_example": null, "code_snippets": [], "supports_async": false, "zdr": false, "zdr_comment": null, "external_info": "https://docs.api.pruna.ai/guides/quickstart", "terms": null, "cover_image_url": null, "metadata": { "Resolutions": "720p, 1080p", "Frame Rates": "24, 48 fps", "Max Duration": "20s" }, "request_formats": null, "providers": null, "provider_details": [ { "id": "pruna", "pricing": { "default": 0.02, "720p": 0.02, "1080p": 0.04, "720p_draft": 0.005, "1080p_draft": 0.01 } } ], "banner": null, "created_at": "2026-06-18 16:10:42", "schema": { "input": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "prompt": { "type": "string", "description": "Text prompt for video generation." }, "image": { "description": "Input image to generate video from (image-to-video). HTTP(S) URL or data URI. Supports jpg, jpeg, png, webp. When provided, aspect_ratio is ignored.", "type": "string" }, "audio": { "description": "Input audio to condition video generation. HTTP(S) URL or data URI. Supports flac, mp3, wav. When provided, duration is ignored.", "type": "string" }, "duration": { "default": 5, "description": "Duration of the video in seconds (1-20). Ignored when audio is provided.", "type": "integer", "minimum": 1, "maximum": 20 }, "resolution": { "default": "720p", "description": "Video resolution.", "type": "string", "enum": [ "720p", "1080p" ] }, "fps": { "default": 24, "description": "Frames per second: 24 or 48.", "anyOf": [ { "type": "number", "const": 24 }, { "type": "number", "const": 48 } ] }, "aspect_ratio": { "default": "16:9", "description": "Aspect ratio of the video. Ignored when an input image is provided.", "type": "string", "enum": [ "16:9", "9:16", "4:3", "3:4", "3:2", "2:3", "1:1" ] }, "seed": { "description": "Random seed for reproducible generation.", "type": "integer", "minimum": -9007199254740991, "maximum": 9007199254740991 }, "draft": { "default": false, "description": "Draft mode. Generates a lower-quality preview of the video.", "type": "boolean" }, "save_audio": { "default": true, "description": "Save the video with audio.", "type": "boolean" }, "last_frame_image": { "description": "Reference image for the last frame of the video. HTTP(S) URL or data URI.", "type": "string" }, "prompt_upsampling": { "default": true, "description": "Use prompt upsampling to enhance the prompt.", "type": "boolean" }, "disable_safety_filter": { "default": true, "description": "Disable safety filter for prompts and input images.", "type": "boolean" } }, "required": [ "prompt", "duration", "resolution", "fps", "aspect_ratio", "draft", "save_audio", "prompt_upsampling", "disable_safety_filter" ], "additionalProperties": {} }, "output": { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "video": { "type": "string", "format": "uri", "description": "Presigned URL for the generated video." } }, "required": [ "video" ], "additionalProperties": {} } } }