# Pruna | P-Video 2 P-Video-2 turns reference images and prompts into AI video with native audio, sharper text, and strong lip sync for cinematic image-to-video clips. ## API Information - **Model Slug:** p-video-2 - **Branded URL:** https://www.eachlabs.ai/pruna/p-video/p-video-2 - **Provider:** Pruna - **Category:** Image to Video - **Output Type:** video - **Status:** active - **Base Cost:** $0.015–$0.05 per second, depending on resolution and draft - **Estimated Processing Time:** 90 seconds - **Interactive Demo:** https://www.eachlabs.ai/ai-models/p-video-2 ## Pricing - **Charge Type:** dynamic - **Estimate:** $0.015–$0.05 per second, depending on resolution and draft - **Pricing Details:** 720p · with draft: $0.015 - **Pricing Details:** 720p · no draft (default): $0.025 - **Pricing Details:** 1080p · with draft: $0.03 - **Pricing Details:** 1080p · no draft: $0.05 ## Input Schema | Parameter | Type | Required | Default | Constraints | Description | |-----------|------|----------|---------|-------------|-------------| | prompt | string | Yes | - | - | Text prompt for video generation. | | duration | integer | No | - | 1–20 | Optional duration in seconds from 1 to 20. Leave empty to let the model choose the length from the prompt. Ignored when audio is provided. | | image | string | No | - | - | Optional input image for image-to-video generation. Supports jpg, jpeg, png, and webp. | | audio | string | No | - | - | Optional input audio to condition generation. Supports flac, mp3, and wav. | | resolution | string | No | 720p | 720p, 1080p | Output video resolution. Supported values are 720p and 1080p. | | fps | integer | No | 24 | 24, 48 | Frames per second. Supported values are 24 and 48. | | aspect_ratio | string | No | 16:9 | 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, 1:1 | Output aspect ratio. Ignored when an input image is provided. | | seed | integer | No | - | - | Optional random seed for reproducible generation. | | draft | boolean | No | false | - | Generate a faster, lower-quality preview. Billed at half the standard per-second rate. | | save_audio | boolean | No | true | - | Save the generated video with audio. | | last_frame_image | string | No | - | - | Optional reference image for the final frame. | | prompt_upsampling | boolean | No | true | - | Enhance the prompt before video generation. | | disable_safety_filter | boolean | No | true | - | Disable the safety filter for prompts and input images. | ## Example Request ```bash curl -X POST https://api.eachlabs.ai/v1/prediction/ \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "p-video-2", "input": { "prompt": " Photorealistic throughout, single continuous shot, static locked off camera.\n\n 0 to 3s. Night. The cafe y by the cool glow of her\n laptop screen and small warm string lights outside the glass wall. She sits\n slumped with her chin resed, staring at the\n screen. She lowers her hand, reaches for the glass of iced coffee, lifts it\n and brings the straw to h\n\n 3 to 5s. She sips.\n\n 5 to 8s. The instant she rise. The sky beyond the\n glass wall shifts smoothly from black to deep blue, then to soft pink and\n warm gold. Low golden sunh the glass wall from\n behind her, spilling across the wooden table, the glass, her hair and her\n shoulders. The dark interten and open up, the cool\n laptop glow fades as warm daylight takes over. The olive trees outside catch\n the first light. The strithe brightening sky.\n\n 8 to 10s. Small birds flythe glass and flit between\n the olive trees. A soft natural rainbow arcs into view in the sky outside,\n seen through the glass wacolored light falling\n across the table. She lowers the glass, straightens up, lifts her head and\n breaks into a warm happy awake.\n\n She stays photographic aner face, freckles, auburn\n wavy hair and cream off shoulder knit dress unchanged. The cafe, the table,\n the laptop, the notebooksly the same, only the\n light changes. Warm cinematic golden hour lighting at the end. Camera\n completely static, no pano cuts. No text anywhere." } }' ``` ## Output Schema Response returned by `GET /v1/prediction/{id}` when the job completes: ```json { "status": "success", "predictionID": "string", "output": "string (URL of generated video)", "metrics": { "predict_time": "number (seconds)" } } ``` ## Polling ```bash curl https://api.eachlabs.ai/v1/prediction/{PREDICTION_ID} \ -H "Authorization: Bearer YOUR_API_KEY" ``` | Status | Meaning | |--------|---------| | `processing` | Still running — poll again | | `success` | Done — read `output` | | `error` | Failed — read `message` / `details` | ## Webhook (alternative to polling) Pass `"webhook_url": "https://your.host/path"` in the create request. Eachlabs POSTs this payload when the job ends: ```json { "exec_id": "prediction-uuid", "status": "succeeded", "output": "https://...", "error": "" } ``` `status` is `"succeeded"` or `"failed"`. `exec_id` equals the `predictionID` from create. Return 2xx within 30 seconds. ## Errors Error body: `{ "status": "error", "message": "...", "details": "..." }` | Code | Meaning | |------|---------| | `400` | Invalid input | | `401` | Missing / invalid `Authorization` bearer token | | `404` | Unknown model or prediction id | | `429` | Rate limit — 100 creates / min, 10 concurrent per key | | `5xx` | Retry with backoff | ## Usage Notes - API Base URL: `https://api.eachlabs.ai/v1` - Authentication: send `Authorization: Bearer YOUR_API_KEY`. Generate a key from the Eachlabs dashboard at https://www.eachlabs.ai/dashboard/api-keys. - File-typed parameters (`*_url`, `image_url`, `video_url`, `audio_url`, etc.) accept publicly-reachable HTTPS URLs only. Upload your asset first (GCS / S3 / your CDN) and pass the resulting URL. Data-URIs and localhost URLs are rejected. - For structured parameters (arrays / objects) send real JSON values, not stringified payloads. - Monetary values are reported in USD; per-token / per-megapixel rates may be billed in micro-cents internally. - Prefer `webhook_url` over polling for long-running predictions — see the Webhook Callback section.