---
title: P-Video-2-Pro | Runware Docs
url: https://runware.ai/docs/models/prunaai-p-video-2-pro
description: Cinematic video generation with native audio and first and last frame control
---
# P-Video-2-Pro

![P-Video-2-Pro](https://assets.runware.ai/covers/prunaai-p-video-2-pro.jpg)

P-Video-2-Pro is Pruna AI's quality-tier video generation model built on MiniMax H3, creating clips from text or from a first frame with an optional last frame. It handles multi-beat camera moves, heavy physics like water, fire, and fabric, coherent full-body motion, and two-shot dialogue with lip sync, generating audio with every clip. It offers a speed or quality recipe, three levels of prompt expansion, durations from 5 to 15 seconds, and 480p or 768p output at 24 FPS.

- **Status**: live
- **ID**: `prunaai:p-video@2-pro`
- Try in Playground
- **Creator**: Pruna AI
- **Release Date**: September 17, 2026
- **Capabilities**: Text to Video, Image to Video, Checkpoint, Audio

## Pricing

$0.01 $0.02 from, per second · ~1m 6s per request

**Rates** (per second)

- 480p · Speed: `$0.01 $0.02`
- 480p · Quality: `$0.02 $0.04`
- 768p · Speed: `$0.0175 $0.035`
- 768p · Quality: `$0.0375 $0.075`

**4 example generations**

- [first-frame](https://runware.ai/docs/models/prunaai-p-video-2-pro/examples#example-tidal-accordion-music-video) · 768p · 5s: `$0.0904` (~18s)
- [text-to-video](https://runware.ai/docs/models/prunaai-p-video-2-pro/examples#example-bronze-foundry-art-pop-music-video) · 1344×768 · 10s: `$0.38` (~1m 9s)
- [text-to-video](https://runware.ai/docs/models/prunaai-p-video-2-pro/examples#example-self-rising-flood-barrier-demo) · 1344×768 · 10s: `$0.38` (~1m 23s)
- [first-last-frame](https://runware.ai/docs/models/prunaai-p-video-2-pro/examples#example-cryogenic-seed-vault-b-roll) · 768p · 15s: `$0.539` (~1m 3s)

times vary, measured end to end · [How pricing works](https://runware.ai/docs/platform/pricing)

## Compatibility & Validation

`inputs.frameImages` cannot be used with `width/height`.

---

`resolution` cannot be used with `width/height`.

---

`width` and `height` must be used together.

---

The following dimension combinations are supported:

| Configuration | Dimensions |
| --- | --- |
| `480p (~16:9)` | `832x480` |
| `480p (~9:16)` | `480x832` |
| `480p (4:3)` | `640x480` |
| `480p (3:4)` | `480x640` |
| `480p (~3:2)` | `704x480` |
| `480p (~2:3)` | `480x704` |
| `480p (1:1)` | `480x480` |
| `768p (~16:9)` | `1344x768` |
| `768p (~9:16)` | `768x1344` |
| `768p (4:3)` | `1024x768` |
| `768p (3:4)` | `768x1024` |
| `768p (3:2)` | `1152x768` |
| `768p (2:3)` | `768x1152` |
| `768p (1:1)` | `768x768` |

## Request Parameters

**API Options**

Platform-level options for task execution and delivery.

### [taskType](https://runware.ai/docs/models/prunaai-p-video-2-pro#request-tasktype)

- **Type**: `string`
- **Required**: true
- **Value**: `videoInference`

Identifier for the type of task being performed.

### [taskUUID](https://runware.ai/docs/models/prunaai-p-video-2-pro#request-taskuuid)

- **Type**: `string`
- **Required**: true
- **Format**: `UUID v4`

UUID v4 identifier for tracking tasks and matching async responses. Must be unique per task.

### [outputType](https://runware.ai/docs/models/prunaai-p-video-2-pro#request-outputtype)

- **Type**: `string`
- **Default**: `URL`

Video output type.

**Allowed values**: `URL`

### [outputFormat](https://runware.ai/docs/models/prunaai-p-video-2-pro#request-outputformat)

- **Type**: `string`
- **Default**: `MP4`

Specifies the file format of the generated output. The available values depend on the task type and the specific model's capabilities.

- \`MP4\`: Widely supported video container (H.264), recommended for general use.
- \`WEBM\`: Optimized for web delivery.
- \`MOV\`: QuickTime format, common in professional workflows (Apple ecosystem).

**Allowed values**: `MP4` `WEBM` `MOV`

### [outputQuality](https://runware.ai/docs/models/prunaai-p-video-2-pro#request-outputquality)

- **Type**: `integer`
- **Min**: `20`
- **Max**: `99`
- **Default**: `95`

Compression quality of the output. Higher values preserve quality but increase file size.

### [webhookURL](https://runware.ai/docs/models/prunaai-p-video-2-pro#request-webhookurl)

- **Type**: `string`
- **Format**: `uri`

Webhook URL that receives JSON responses via HTTP POST when generation tasks complete. For batch requests with multiple results, each completed item triggers a separate webhook call as it becomes available.

**Learn more** (1 resource):

- [Webhooks](https://runware.ai/docs/platform/webhooks) (platform)

### [deliveryMethod](https://runware.ai/docs/models/prunaai-p-video-2-pro#request-deliverymethod)

- **Type**: `string`
- **Default**: `async`

Determines how the API delivers task results.

**Allowed values**:

- `async` Returns an immediate acknowledgment with the task UUID. Poll for results using getResponse. Required for long-running tasks like video generation.

**Learn more** (1 resource):

- [Task Polling](https://runware.ai/docs/platform/task-polling) (platform)

### [uploadEndpoint](https://runware.ai/docs/models/prunaai-p-video-2-pro#request-uploadendpoint)

- **Type**: `string`
- **Format**: `uri`

Specifies a URL where the generated content will be automatically uploaded using the HTTP PUT method. The raw binary data of the media file is sent directly as the request body. For secure uploads to cloud storage, use presigned URLs that include temporary authentication credentials.

**Common use cases:**

- **Cloud storage**: Upload directly to S3 buckets, Google Cloud Storage, or Azure Blob Storage using presigned URLs.
- **CDN integration**: Upload to content delivery networks for immediate distribution.

```text
// S3 presigned URL for secure upload
https://your-bucket.s3.amazonaws.com/generated/content.mp4?X-Amz-Signature=abc123&X-Amz-Expires=3600

// Google Cloud Storage presigned URL
https://storage.googleapis.com/your-bucket/content.jpg?X-Goog-Signature=xyz789

// Custom storage endpoint
https://storage.example.com/uploads/generated-image.jpg
```

The content data will be sent as the request body to the specified URL when generation is complete.

### [safety](https://runware.ai/docs/models/prunaai-p-video-2-pro#request-safety)

- **Path**: `safety.checkContent`
- **Type**: `object (2 properties)`

Content safety checking configuration for video generation.

#### [checkContent](https://runware.ai/docs/models/prunaai-p-video-2-pro#request-safety-checkcontent)

- **Path**: `safety.checkContent`
- **Type**: `boolean`

Enable or disable content safety checking. Increases total generation time.

#### [mode](https://runware.ai/docs/models/prunaai-p-video-2-pro#request-safety-mode)

- **Path**: `safety.mode`
- **Type**: `string`
- **Default**: `fast`

Safety checking mode for video generation.

**Allowed values**:

- `fast` Checks key frames.
- `full` Checks all frames.

### [ttl](https://runware.ai/docs/models/prunaai-p-video-2-pro#request-ttl)

- **Type**: `integer`
- **Min**: `60`

Time-to-live (TTL) in seconds for generated content. Only applies when `outputType` is `URL`.

### [includeCost](https://runware.ai/docs/models/prunaai-p-video-2-pro#request-includecost)

- **Type**: `boolean`

Include task cost in the response.

### [numberResults](https://runware.ai/docs/models/prunaai-p-video-2-pro#request-numberresults)

- **Type**: `integer`
- **Min**: `1`
- **Max**: `4`
- **Default**: `1`

Number of results to generate. Each result uses a different seed, producing variations of the same parameters.

**Inputs**

Input resources for the task (images, audio, etc). These must be nested inside the \`inputs\` object.

### [frameImages](https://runware.ai/docs/models/prunaai-p-video-2-pro#request-inputs-frameimages)

- **Path**: `inputs.frameImages`
- **Type**: `array of strings or objects`
- **Min items**: `1`
- **Max items**: `2`

An array of frame-specific image inputs to guide video generation. Each item can be either a plain image input (UUID, URL, Data URI, or Base64) or an object that pairs an image with a target position in the video.

The `frameImages` parameter allows you to constrain specific frames within the video sequence, ensuring that particular visual content appears at designated points. Position can be specified using `frame` (named positions or frame indices) or `timestamp` (seconds), depending on model support. This is different from `referenceImages`, which provide overall visual guidance without constraining specific timeline positions.

When the `frame` parameter is omitted, automatic distribution rules apply:

- **1 image**: Used as the first frame.
- **2 images**: First and last frames.

**Examples**:

**Shorthand format:** When you don't need to specify a frame position, you can pass a plain image input directly.

```json
"frameImages": [
  "aac49721-1964-481a-ae78-8a4e29b91402"
]
```

**Object format:** When you need to specify a position, use an object with `image` and either `frame` or `timestamp` (model-dependent).

```json
"frameImages": [
  {
    "image": "aac49721-1964-481a-ae78-8a4e29b91402",
    "frame": "first"
  }
]
```

**First and last frames:** With two images, they automatically become the first and last frames of the video sequence. You can mix shorthand and object formats.

```json
"frameImages": [
  "aac49721-1964-481a-ae78-8a4e29b91402",
  {
    "image": "3ad204c3-a9de-4963-8a1a-c3911e3afafe",
    "frame": "last"
  }
]
```

**Format 1: string[]**:

- **Type**: `string`

Image input (UUID, URL, Data URI, or Base64).

**Format 2: object[]**:

#### [image](https://runware.ai/docs/models/prunaai-p-video-2-pro#request-inputs-frameimages-format-2-image)

- **Path**: `inputs.frameImages.image`
- **Type**: `string`
- **Required**: true

Image input (UUID, URL, Data URI, or Base64).

#### [frame](https://runware.ai/docs/models/prunaai-p-video-2-pro#request-inputs-frameimages-format-2-frame)

- **Path**: `inputs.frameImages.frame`
- **Type**: `object`

Target frame position for the image. Supports first and last frame.

**Allowed values**:

- `first` First frame of the video.
- `last` Last frame of the video.
- `0` Frame index 0 (first frame).
- `-1` Frame index -1 (last frame).

**Core Parameters**

Primary parameters that define the task output.

### [model](https://runware.ai/docs/models/prunaai-p-video-2-pro#request-model)

- **Type**: `string`
- **Required**: true
- **Value**: `prunaai:p-video@2-pro`

Identifier of the model to use for generation.

**Learn more** (3 resources):

- [Text To Image: Model Selection](https://runware.ai/docs/learn/text-to-image#model-selection) (learn)
- [Image Inpainting: Model Specialized Inpainting Models](https://runware.ai/docs/learn/image-inpainting#model-specialized-inpainting-models) (learn)
- [Image Outpainting: Other Critical Parameters](https://runware.ai/docs/learn/image-outpainting#other-critical-parameters) (learn)

### [positivePrompt](https://runware.ai/docs/models/prunaai-p-video-2-pro#request-positiveprompt)

- **Type**: `string`
- **Required**: true
- **Min**: `1`
- **Max**: `10000`

Text prompt describing elements to include in the generated output.

**Learn more** (1 resource):

- [Prompts](https://runware.ai/docs/learn/prompts) (learn)

### [width](https://runware.ai/docs/models/prunaai-p-video-2-pro#request-width)

- **Type**: `integer`
- **Paired with**: height

Width of the generated media in pixels.

**Learn more** (2 resources):

- [Dimensions](https://runware.ai/docs/learn/dimensions) (learn)
- [Image Outpainting: Dimensions Critical For Outpainting](https://runware.ai/docs/learn/image-outpainting#dimensions-critical-for-outpainting) (learn)

### [height](https://runware.ai/docs/models/prunaai-p-video-2-pro#request-height)

- **Type**: `integer`
- **Paired with**: width

Height of the generated media in pixels.

**Learn more** (2 resources):

- [Dimensions](https://runware.ai/docs/learn/dimensions) (learn)
- [Image Outpainting: Dimensions Critical For Outpainting](https://runware.ai/docs/learn/image-outpainting#dimensions-critical-for-outpainting) (learn)

### [resolution](https://runware.ai/docs/models/prunaai-p-video-2-pro#request-resolution)

- **Type**: `string`
- **Default**: `768p`

Resolution preset for the output. When used with input media, automatically matches the aspect ratio from the input.

**Allowed values**: `480p` `768p`

### [duration](https://runware.ai/docs/models/prunaai-p-video-2-pro#request-duration)

- **Type**: `integer`
- **Min**: `5`
- **Max**: `15`
- **Default**: `5`

Length of the generated video in seconds. The total number of frames produced is determined by duration multiplied by the model's frame rate (fps).

### [seed](https://runware.ai/docs/models/prunaai-p-video-2-pro#request-seed)

- **Type**: `integer`
- **Min**: `0`
- **Max**: `2147483647`

Random seed for reproducible generation. When not provided, a random seed is generated in the unsigned 32-bit range.

**Settings**

Technical parameters to fine-tune the inference process. These must be nested inside the \`settings\` object.

### [mode](https://runware.ai/docs/models/prunaai-p-video-2-pro#request-settings-mode)

- **Path**: `settings.mode`
- **Type**: `string`
- **Default**: `speed`

Generation recipe.

**Allowed values**:

- `speed` Faster generation.
- `quality` Slower generation for higher quality.

### [promptUpsampling](https://runware.ai/docs/models/prunaai-p-video-2-pro#request-settings-promptupsampling)

- **Path**: `settings.promptUpsampling`
- **Type**: `string`
- **Default**: `turbo`

Prompt expansion before generation.

**Allowed values**:

- `off` Uses the prompt as written.
- `turbo` Fast prompt expansion.
- `max` Most detailed prompt expansion.

## Response Parameters

### [taskType](https://runware.ai/docs/models/prunaai-p-video-2-pro#response-tasktype)

- **Type**: `string`
- **Required**: true
- **Value**: `videoInference`

Identifier for the type of task this response belongs to.

### [taskUUID](https://runware.ai/docs/models/prunaai-p-video-2-pro#response-taskuuid)

- **Type**: `string`
- **Required**: true
- **Format**: `UUID v4`

UUID v4 identifier echoed from the original request, used to match async responses to their tasks.

### [videoUUID](https://runware.ai/docs/models/prunaai-p-video-2-pro#response-videouuid)

- **Type**: `string`
- **Required**: true
- **Format**: `UUID v4`

UUID of the output video.

### [videoURL](https://runware.ai/docs/models/prunaai-p-video-2-pro#response-videourl)

- **Type**: `string`
- **Format**: `uri`

URL of the output video.

### [videoBase64Data](https://runware.ai/docs/models/prunaai-p-video-2-pro#response-videobase64data)

- **Type**: `string`

Base64-encoded video data.

### [videoDataURI](https://runware.ai/docs/models/prunaai-p-video-2-pro#response-videodatauri)

- **Type**: `string`
- **Format**: `uri`

Data URI of the output video.

### [seed](https://runware.ai/docs/models/prunaai-p-video-2-pro#response-seed)

- **Type**: `integer`

The seed used for generation. If none was provided, shows the randomly generated seed.

### [NSFWContent](https://runware.ai/docs/models/prunaai-p-video-2-pro#response-nsfwcontent)

- **Type**: `boolean`

Flag indicating if NSFW content was detected.

### [cost](https://runware.ai/docs/models/prunaai-p-video-2-pro#response-cost)

- **Type**: `float`

Task cost in USD. Present when `includeCost` is set to `true` in the request.

## Examples

### text-to-video (text-to-video)

[Watch video](https://assets.runware.ai/examples/prunaai-p-video-2-pro/efbce013-2ec4-44b5-8170-c43cd611efea.mp4)

```json
{
  "taskType": "videoInference",
  "taskUUID": "0884d40d-8de1-4b68-9ad6-2236ca6c6923",
  "model": "prunaai:p-video@2-pro",
  "positivePrompt": "Create a finished cinematic music-video segment set inside a working artisan bell foundry at night. One continuous 10-second shot in landscape composition. A female art-pop vocalist in a sculptural soot-black dress and reflective silver foundry apron walks slowly between rows of enormous unfinished bronze bells while two artisans work safely in the deep background. The visual palette is molten orange, oxidized teal, charcoal black, and cold cyan skylight. Furnace light flickers across textured brick, suspended smoke, bronze surfaces, and the singer’s face.\n\nBegin with a low, wide tracking shot gliding past clay bell molds as a narrow stream of molten bronze pours into a mold at a controlled distance. Rise smoothly into a medium frontal shot as the vocalist enters frame and sings directly toward camera with precise natural lip synchronization: “I learned the shape of thunder from the hands that held the flame.” During the lyric, arc halfway around her while a suspended bell behind her begins a slow, physically convincing swing. Tiny orange sparks drift through the air and her dress fabric responds naturally to the warm industrial airflow. On the final word, pull back to reveal the scale of the foundry as an artisan strikes a finished bell once; the singer stops beneath it and looks upward while the bell continues to sway.\n\nGenerate synchronized original audio: dark industrial art-pop at 96 BPM with a restrained analog synth pulse, bowed bass, muted hammer impacts, furnace roar, chain creaks, and resonant bronze percussion. The vocalist has a clear intimate female alto voice and sings the specified lyric once, beginning around 2 seconds and ending around 8 seconds. The final bell strike lands exactly on “flame,” then blooms into a deep metallic decay through the last frame. Realistic foundry ambience remains audible beneath the music. Premium music-video cinematography, subtle film grain, volumetric smoke, controlled highlights, believable molten-metal physics, coherent full-body movement, no cuts, no slow motion, no text, no subtitles, no logos.",
  "width": 1344,
  "height": 768,
  "duration": 10,
  "settings": {
    "mode": "quality",
    "promptUpsampling": "max"
  }
}
```

---

### text-to-video (text-to-video)

[Watch video](https://assets.runware.ai/examples/prunaai-p-video-2-pro/df7ab519-cfb8-472c-b94a-3bd773987d03.mp4)

```json
{
  "taskType": "videoInference",
  "taskUUID": "90a1672d-015a-44a0-8d9a-4dbf40ec4f62",
  "model": "prunaai:p-video@2-pro",
  "positivePrompt": "A polished 10-second landscape product demonstration filmed in a realistic architectural testing facility. Center the scene on a full-scale garage doorway fitted with a recessed stainless-steel self-rising flood barrier. Begin with a low three-quarter view from the dry interior side as shallow floodwater rushes toward the doorway from an outdoor test channel. The camera makes a slow lateral dolly toward a clear side cutaway in the threshold, revealing water entering the underground chamber. As the chamber fills, the buoyant aluminum gate rises smoothly from the floor in one continuous mechanically credible motion. Track upward with the gate as rubber edge seals compress against the vertical guides with a firm final lock. Finish by arcing slightly around the raised barrier: turbulent water surges against the wet side while the clean concrete floor behind it remains completely dry. Crisp commercial documentary cinematography, cool gray concrete, brushed metal, safety-yellow guide rails, overcast daylight, realistic water physics, detailed splashes and reflections, clear visual cause and effect, no captions or interface graphics. Synchronized audio: rushing water grows louder as it reaches the doorway, hollow chamber filling sounds, a smooth mechanical rise, rubber compression, and a solid metallic locking clunk. Calm professional male voice-over says exactly: “As floodwater enters the chamber, buoyancy lifts the gate automatically, sealing the opening without power or manual setup.”",
  "width": 1344,
  "height": 768,
  "duration": 10,
  "settings": {
    "mode": "quality",
    "promptUpsampling": "max"
  }
}
```

---

### first-frame (first-frame)

[Watch video](https://assets.runware.ai/examples/prunaai-p-video-2-pro/2e2ed012-e927-40f7-be93-a4a3591f4f60.mp4)

```json
{
  "taskType": "videoInference",
  "taskUUID": "381a1792-f9c8-4f33-81d6-62762b87da44",
  "model": "prunaai:p-video@2-pro",
  "positivePrompt": "Continue directly from the supplied first frame as a polished maritime folk-electronica music-video shot. The accordionist sharply opens the bellows on the first beat, then strides toward camera along the slick oyster-farm walkway while playing with confident, rhythmically accurate hand movement. Her yellow overalls and loose hair whip in the sea wind. The camera tracks backward at low eye level, then makes a smooth quarter-arc around her right side as she passes an oyster basket. On the final beat, her boot lands in a shallow puddle, sending a crisp fan of water toward the lens while several nearby gulls lift into the mist behind her. Preserve the realistic dawn location, slate-blue water, pale peach horizon and bold yellow wardrobe accent. Natural full-body motion, coherent fingers and accordion bellows, convincing wind, fabric and splash physics, cinematic 28mm perspective, subtle handheld energy without shake, no cuts, no slow motion, no text or logos. Generate synchronized audio: driving folk-electronica with a dry kick drum, pulsing bass, bright button-accordion stabs matching her bellows, boot impacts and puddle splash in sync, restrained coastal wind and distant gull wings; no spoken dialogue.",
  "resolution": "768p",
  "duration": 5
}
```

---

### first-last-frame (first-last-frame)

[Watch video](https://assets.runware.ai/examples/prunaai-p-video-2-pro/0ad5ee69-d399-412a-ae31-1c85b27cc4b4.mp4)

```json
{
  "taskType": "videoInference",
  "taskUUID": "8b0a5193-b84f-4d52-bd74-d8bcda87ed4c",
  "model": "prunaai:p-video@2-pro",
  "positivePrompt": "Create one continuous 15-second documentary b-roll shot connecting the supplied first and last frames inside a subzero agricultural seed archive. Preserve the technician's exact identity, clothing, proportions, cabinet aisle, lighting, and canister design throughout. Begin on the wide first-frame composition as she pulls the frosted specimen drawer fully open. The camera makes a slow, stable dolly forward and gently arcs from her side toward an over-the-shoulder angle. She examines the organized canisters, selects one small cylindrical canister, closes the drawer with her hip, then walks two measured steps to the adjacent stainless scanning bench. Track her naturally without cuts. Her insulated parka creases and settles realistically, her gloved hands maintain a secure grip, faint breath vapor appears in the cold air, and small frost crystals loosen from the canister. End precisely in the supplied medium-close final composition as she lowers the canister into the scanner cradle and a soft green confirmation light appears. Clinical observational cinematography for a climate resilience documentary or agricultural technology report; credible facility details, cool cyan and brushed-steel palette contrasted by the burnt-orange parka, restrained depth of field, physically accurate motion, no posing, no dialogue, no logos, no readable text. Synchronized location sound only: constant low refrigeration hum and ventilation, muted drawer-rail rumble, a soft metal latch click, insulated footsteps, fabric rustle, a delicate canister clink, and one quiet scanner confirmation beep at the final placement.",
  "resolution": "768p",
  "duration": 15,
  "settings": {
    "mode": "quality",
    "promptUpsampling": "turbo"
  },
  "inputs": {
    "frameImages": [
      {
        "image": "https://assets.runware.ai/assets/inputs/97b16648-7dd4-4c33-9f69-c5eaeb91c8e5.jpg",
        "frame": "first"
      },
      {
        "image": "https://assets.runware.ai/assets/inputs/01606cce-e96b-42cc-8245-1c91f62c475a.jpg",
        "frame": "last"
      }
    ]
  }
}
```