# P video PrunaAI P-Video is a model that generates motion videos from still images by introducing natural movement, creating dynamic animated visuals from static inputs. ## API Information - **Model Slug:** p-video - **Branded URL:** https://www.eachlabs.ai/pruna/p-video/p-video - **Provider:** Pruna AI - **Category:** Image to Video - **Output Type:** video - **Status:** active - **Version:** 0.0.1 - **Base Cost:** 720p standard: $0.02/sec - **Estimated Processing Time:** 20 seconds - **Last Updated:** 2026-07-13 - **Interactive Demo:** https://www.eachlabs.ai/ai-models/p-video ## Pricing - **Charge Type:** dynamic - **Estimated Price (default example):** $0.1800 - **Pricing Details:** 720p standard: $0.02/sec ### Pricing Rules | Condition | Pricing | | --- | --- | | resolution == "720p" AND draft == "false" | 720p standard: $0.02/sec | | resolution == "720p" AND draft == "true" | 720p draft: $0.005/sec | | resolution == "1080p" AND draft == "false" | 1080p standard: $0.04/sec | | resolution == "1080p" AND draft == "true" | 1080p draft: $0.01/sec | ## Input Schema | Parameter | Type | Required | Default | Constraints | Description | |-----------|------|----------|---------|-------------|-------------| | prompt | string | Yes | - | - | Text prompt for video generation. | | image | string | No | - | - | Input image to generate video from (image-to-video). Supports jpg, jpeg, png, webp. | | audio | string | No | - | - | Input audio to condition video generation. Supports flac, mp3, wav. | | duration | integer | No | 9 | 1–10 | Duration of the video in seconds (1-10). Ignored when audio is provided. | | aspect_ratio | string | No | 16:9 | 16:9,9:16,4:3,3:4,3:2,2:3,1:1 | An enumeration. | | resolution | string | No | 720p | 720p,1080p | An enumeration. | | fps | integer | No | 24 | 24,48 | An enumeration. | | draft | boolean | No | false | - | Draft mode. Generates a lower-quality preview of the video. | | prompt_upsampling | boolean | No | true | - | Use prompt upsampling to enhance the prompt. | | save_audio | boolean | No | true | - | Save the video with audio. | | seed | integer | No | - | - | Random seed. Set for reproducible generation. | ## 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", "input": { "prompt": "The lion is singing." } }' ``` ## 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 | ## Overview PrunaAI's **P video** transforms static images into dynamic motion videos by adding natural movement, solving the challenge of bringing still visuals to life without complex editing. Part of the Pruna family, this **image-to-video** model excels in generating smooth animations from single inputs, distinguishing itself through optimized performance via Pruna's compilation techniques for faster inference. Available on each::labs, **P video** enables creators to produce engaging content quickly. Whether animating product shots or conceptual art, it delivers realistic motion while maintaining image fidelity, making it ideal for rapid prototyping in visual storytelling. ## 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.