# Pruna P-Video 2 - Core.Today AI API > Pruna's quality-focused successor to P-Video. Generates video from text, a starting image, or an audio track, with native-speech lip-sync, sharp close-ups and strong identity consistency, up to 1080p / 48 fps, plus a low-cost draft mode for fast iteration. - **Provider**: Pruna AI - **Model ID**: prunaai/p-video-2 - **Category**: Video Generation - **Credits**: 350 per second — 720p 70/s, 720p draft 35/s, 1080p 140/s, 1080p draft 70/s; duration 1-20s (default 5s at 720p = 350) - **Speed**: Fast - **Quality**: High ## Features - Native speech with lip-sync — write the dialogue in the prompt - Text-to-video, image-to-video and audio-conditioned generation in one endpoint - Built-in draft mode at half the standard per-second price - 720p or 1080p, 24 or 48 fps, 1-20 second clips - First- and last-frame control via image and last_frame_image ## Use Cases - Talking-character clips with spoken dialogue and matching lip movement - Cheap draft passes to lock a prompt before the final render - Animating product or portrait photos with consistent identity - Music- or narration-driven clips that follow an uploaded audio track - 1080p hero shots for ads and landing pages ## API Endpoint Base URL: https://api.core.today/v1 Create Prediction: POST /predictions Get Status: GET /predictions/{job_id} ## Authentication Header: X-API-Key: YOUR_API_KEY ## Input Parameters ### Required - **prompt**: string - Text prompt for video generation. Describe subject, action and scene; add camera, lighting, style and dialogue as needed ### Optional - **image**: string - Input image to generate video from (image-to-video). Supports jpg, jpeg, png, webp - **last_frame_image**: string - Reference image for the last frame of the video. Supports jpg, jpeg, png, webp - **audio**: string - Input audio to condition generation (flac, mp3, wav). The output length follows the audio, so duration is ignored - **duration**: integer (default: 5) - Duration of the video in seconds (1-20). Defaults to 5 when omitted. Ignored when audio is provided - **aspect_ratio**: string (default: 16:9) - Aspect ratio of the video. Ignored when an input image is provided Options: 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 1:1 - **resolution**: string (default: 720p) - Resolution of the video (1080p doubles the per-second price) Options: 720p, 1080p - **fps**: integer (default: 24) - Frames per second. 24 fps is recommended at 1080p, 48 fps at 720p for smoother motion Options: 24, 48 - **draft**: boolean (default: false) - Draft mode: a faster, lower-quality preview at half the standard price - **prompt_upsampling**: boolean (default: true) - Use prompt upsampling to enhance the prompt - **disable_safety_filter**: boolean (default: true) - Disable safety filter for prompts (and input image). When disabled, prompts are not checked for unsafe content before generation. - **save_audio**: boolean (default: true) - Save the video with audio (keep on for native speech) - **seed**: integer - Random seed. Set for reproducible generation ## Examples ### Cinematic Text-to-Video (720p) A 5-second 720p clip at standard quality — 5s at 70/s = 350 credits ```json { "model": "prunaai/p-video-2", "input": { "prompt": "A lone astronaut walks steadily toward the camera across a vast rust-colored alien desert under a colossal ringed gas giant. The camera tracks backward at walking speed. Cinematic, photorealistic, continuous single shot.", "duration": 5, "resolution": "720p", "aspect_ratio": "16:9", "fps": 24, "draft": false, "save_audio": true } } ``` ### 1080p Hero Shot Full-quality 1080p render — 5s at 140/s = 700 credits ```json { "model": "prunaai/p-video-2", "input": { "prompt": "A lone astronaut walks steadily toward the camera across a vast rust-colored alien desert. A colossal ringed gas giant dominates the sky. Epic sense of scale, dramatic backlighting, cinematic film grain.", "duration": 5, "resolution": "1080p", "aspect_ratio": "16:9", "fps": 24, "seed": 678 } } ``` ## Response Format ```json { "job_id": "abc123", "status": "pending | processing | completed | failed", "result": "URL or data (when completed)" } ``` ## Usage Flow 1. POST /predictions with model and input -> receive job_id 2. GET /predictions/{job_id} -> poll until status is completed or failed 3. Result contains output URL(s) ## Tips - Iterate with draft: true (35/s at 720p) and re-render the winning prompt with draft off - For native speech and lip-sync, write the dialogue directly in the prompt, keep save_audio on and don't provide an audio input - Billing is per second of the requested duration — a 20s 720p clip costs 1,400 credits, so request only the length you need - When you pass audio, the output follows the audio length and duration is ignored — trim the audio first - Prefer 24 fps at 1080p for stability, or 48 fps at 720p for smoother motion ## Documentation https://replicate.com/prunaai/p-video-2