# Pruna P-Video Avatar - Core.Today AI API > Pruna AI's talking-avatar video model — animates a single input image to speak provided text (voice_script) or an uploaded audio track, with selectable Gemini-family preset voices, language, and visual delivery prompt. - **Provider**: Pruna AI - **Model ID**: prunaai/p-video-avatar - **Category**: Video Generation - **Credits**: 870 per video, flat rate tiered by resolution - **Speed**: Medium - **Quality**: High ## Features - Talking-avatar animation from a single input image - Text-to-speech via 29 Gemini-family preset voices, or drive speech from an uploaded audio track - 10-language voice selection with adjustable delivery style via voice_prompt - Optional negative prompt and safety-filter/prompt-upsampling controls - Flat per-video pricing tiered only by resolution — not billed per second ## Use Cases - AI spokesperson / presenter videos for product launches - Automated explainer or onboarding videos from a script - Multilingual marketing avatars using the same source image - Turning an existing voiceover recording into a talking-avatar video via the audio input ## 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 - **image**: string - Input image (first frame). Supports jpg, jpeg, png, webp. ### Optional - **resolution**: string (default: 720p) - Resolution of the video. Options: 720p, 1080p - **audio**: string - Optional uploaded audio to drive avatar speech. If provided, this is used instead of voice_script and voice settings. - **voice**: string (default: Zephyr (Female)) - Voice to use when generating speech from voice_script. Options: Zephyr (Female), Puck (Male), Charon (Male), Kore (Female), Fenrir (Male), Leda (Female), Orus (Male), Aoede (Female), Callirrhoe (Female), Autonoe (Female), Enceladus (Male), Iapetus (Male), Umbriel (Male), Algenib (Male), Despina (Female), Erinome (Female), Laomedeia (Female), Achernar (Female), Algieba (Male), Schedar (Male), Gacrux (Female), Pulcherrima (Female), Achird (Male), Zubenelgenubi (Male), Vindemiatrix (Female), Sadachbia (Male), Sadaltager (Male), Sulafat (Female), Alnilam (Male), Rasalgethi (Male) - **voice_script**: string - Exact words the avatar should say. Required when no audio file is uploaded. - **voice_prompt**: string (default: Say the following.) - Optional style instructions for how to speak voice_script, such as tone, pacing, accent, or emotion. These instructions are not spoken. - **voice_language**: string (default: English (US)) - Language/accent target for generated speech. Options: English (US), English (UK), Spanish, French, German, Italian, Portuguese (Brazil), Japanese, Korean, Hindi - **seed**: integer - Random seed. Set for reproducible generation. - **video_prompt**: string (default: The person is talking.) - Optional visual prompt describing how the person should appear or behave while speaking. - **negative_prompt**: string - Disabled if empty.Mention what you do NOT want in the video, e.g. "subtitles, text, blurry, low quality, frames, watermark, titles, scene change". We recommend using multiple keywords at once. - **strength_negative_prompt**: number (default: 0.5) - Strength of the Negative Prompt. Optimal value can differ for different video lengths (Experimental Feature) - **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. - **disable_prompt_upsampling**: boolean (default: false) - When true, skip automatic enhancement of the visual video prompt and use video_prompt directly. - **no_op**: boolean (default: false) - Health check mode - returns status without inference. ## Examples ### AI presenter reading a script Animate a headshot photo to deliver a scripted message with a preset voice. ```json { "model": "prunaai/p-video-avatar", "input": { "image": "https://example.com/presenter-photo.jpg", "voice_script": "Welcome to our new product launch. Today we're excited to show you what we've been building.", "voice": "Kore (Female)", "voice_language": "English (US)", "resolution": "1080p" } } ``` ### Avatar driven by an existing voiceover Skip text-to-speech entirely and drive the avatar's lip-sync from an uploaded audio recording. ```json { "model": "prunaai/p-video-avatar", "input": { "image": "https://example.com/presenter-photo.jpg", "audio": "https://example.com/voiceover.mp3", "resolution": "720p" } } ``` ## 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 - If you already have a voiceover recording, upload it via `audio` instead of `voice_script` — it takes priority and skips text-to-speech. - `voice_script` is only required when no `audio` file is provided; leave it empty when driving the avatar from audio. - Because pricing is a flat per-video rate by resolution, a longer line of speech doesn't cost extra — only the resolution tier matters. - Use `voice_prompt` to shape delivery (tone, pacing, emotion) without changing the actual words in `voice_script`. ## Documentation https://replicate.com/prunaai/p-video-avatar