---
title: Editing video with P-Video-Edit — P-Video-Edit | Runware Docs
url: https://runware.ai/docs/models/prunaai-p-video-edit/guides/editing-video
description: "How to edit a finished clip with Pruna P-Video-Edit: one source video, one written instruction, and the motion, framing and audio the model holds while it changes what you named."
---
### [Introduction](https://runware.ai/docs/models/prunaai-p-video-edit/guides/editing-video#introduction)

A finished clip is hard to change. Video models generate rather than revise, so asking for a different apron colour means running the prompt again and accepting **a different take**, with different motion and a different performance. The version you already approved does not survive the round trip.

P-Video-Edit works on the clip you already have. You send **one source video and one written instruction**, and the model returns that same footage with the change you named applied. The motion, the framing, the lighting and the audio all carry through.

**Source**:

[Watch video](https://runware.ai/docs/assets/source-kitchen.C4yBZ2l_.mp4)

*Source clip, 8 seconds*

**Edited**:

[Watch video](https://runware.ai/docs/assets/output-hero.Cji-6nAn.mp4)

*One instruction: the apron changes, the take does not*

> **Prompt**: Change only the navy apron to a terracotta orange apron. Preserve its cut, its folds and the way it moves with her. Keep the woman, her face, her hands, the counter, the kitchen, the camera and the lighting unchanged.

Play it with the sound on. Her voice and the room tone come back with the file, because **the audio is carried over rather than regenerated**.

This guide covers the request, what the source clip decides about the output, how to write an instruction the model can act on, how far an instruction can reach, keeping or dropping the audio, and the edits this model will not do.

### [The request](https://runware.ai/docs/models/prunaai-p-video-edit/guides/editing-video#the-request)

An edit is one video and one instruction, sent as a `videoInference` task.

**TypeScript**:

```typescript
import { createClient } from '@runware/sdk'

const client = await createClient({ apiKey: process.env.RUNWARE_API_KEY })
await client.connect()

const [result] = await client.run({
  model: 'prunaai:p-video@edit',
  positivePrompt: 'Change only the navy apron to a terracotta orange apron. Preserve its cut, its folds and the way it moves with her. Keep the woman, her face, her hands, the counter, the kitchen, the camera and the lighting unchanged.',
  inputs: {
    video: 'https://vm.runware.ai/video/os/a14d18/ws/2/vi/1c9d3e57-4a82-4b16-9f30-6d5e2a7c8b41.mp4'
  },
  deliveryMethod: 'async'
})
```

**Python**:

```python
import asyncio
import os

from runware import Runware

async def main():
    async with Runware(api_key=os.environ["RUNWARE_API_KEY"]) as client:
        results = await client.run({
            "model": "prunaai:p-video@edit",
            "positivePrompt": "Change only the navy apron to a terracotta orange apron. Preserve its cut, its folds and the way it moves with her. Keep the woman, her face, her hands, the counter, the kitchen, the camera and the lighting unchanged.",
            "inputs": {
                "video": "https://vm.runware.ai/video/os/a14d18/ws/2/vi/1c9d3e57-4a82-4b16-9f30-6d5e2a7c8b41.mp4"
            },
            "deliveryMethod": "async"
        })

asyncio.run(main())
```

**cURL**:

```bash
curl https://api.runware.ai/v1 \
  -H "Authorization: Bearer $RUNWARE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '[
    {
      "taskType": "videoInference",
      "taskUUID": "b7c4e1a9-3f28-4d60-9a15-8e2c7d4b0f36",
      "model": "prunaai:p-video@edit",
      "positivePrompt": "Change only the navy apron to a terracotta orange apron. Preserve its cut, its folds and the way it moves with her. Keep the woman, her face, her hands, the counter, the kitchen, the camera and the lighting unchanged.",
      "inputs": {
        "video": "https://vm.runware.ai/video/os/a14d18/ws/2/vi/1c9d3e57-4a82-4b16-9f30-6d5e2a7c8b41.mp4"
      },
      "deliveryMethod": "async"
    }
  ]'
```

**CLI**:

```bash
runware run prunaai:p-video@edit \
  positivePrompt="Change only the navy apron to a terracotta orange apron. Preserve its cut, its folds and the way it moves with her. Keep the woman, her face, her hands, the counter, the kitchen, the camera and the lighting unchanged." \
  inputs.video=https://vm.runware.ai/video/os/a14d18/ws/2/vi/1c9d3e57-4a82-4b16-9f30-6d5e2a7c8b41.mp4 \
  deliveryMethod=async
```

**JSON**:

```json
{
  "taskType": "videoInference",
  "taskUUID": "b7c4e1a9-3f28-4d60-9a15-8e2c7d4b0f36",
  "model": "prunaai:p-video@edit",
  "positivePrompt": "Change only the navy apron to a terracotta orange apron. Preserve its cut, its folds and the way it moves with her. Keep the woman, her face, her hands, the counter, the kitchen, the camera and the lighting unchanged.",
  "inputs": {
    "video": "https://vm.runware.ai/video/os/a14d18/ws/2/vi/1c9d3e57-4a82-4b16-9f30-6d5e2a7c8b41.mp4"
  },
  "deliveryMethod": "async"
}
```

**Response**:

```json
[
  {
    "taskType": "videoInference",
    "taskUUID": "b7c4e1a9-3f28-4d60-9a15-8e2c7d4b0f36",
    "videoUUID": "5e8f1a2b-7c93-4d05-b61e-3f4a8c9d2071",
    "videoURL": "https://vm.runware.ai/video/os/a14d18/ws/2/vi/5e8f1a2b-7c93-4d05-b61e-3f4a8c9d2071.mp4"
  }
]
```

Two fields are required and the rest are optional:

- `inputs.video` is the source, passed as a URL or as the UUID of an earlier task. It accepts **one clip of up to 15 seconds**, and there is no second video slot.
- `positivePrompt` is the instruction, and it is **the whole interface**. There is no mask and no timeline, so everything you want scoped has to be scoped in words.
- `inputs.referenceImages` accepts up to four stills that steer an edit the words alone cannot pin down, covered in [reference images](https://runware.ai/docs/models/prunaai-p-video-edit/guides/reference-images).
- `settings.audio` decides whether the source audio comes back with the edit. It defaults to `true`.
- `seed` accepts an integer from 0 to 2147483647 and makes a rerun reproducible.
- `settings.draft` trades quality for speed and cost, covered in [draft mode](https://runware.ai/docs/models/prunaai-p-video-edit/guides/draft-mode).
- `settings.promptUpsampling` rewrites your instruction before it runs and defaults to `true`, covered in [prompt upsampling](https://runware.ai/docs/models/prunaai-p-video-edit/guides/prompt-upsampling).

There is **no `width`, `height`, `resolution` or `fps` parameter** anywhere in the request. Framing and length come from the clip you sent, and **the output size is not yours to choose at all**, which the next section covers.

### [What the source clip decides](https://runware.ai/docs/models/prunaai-p-video-edit/guides/editing-video#what-the-source-clip-decides)

Two properties carry over and a third does not. **The aspect ratio and the duration come back exactly as they went in**, so a 9:16 vertical clip returns 9:16 and an 8-second source returns 8 seconds of video, always at 25 fps.

**The source resolution does not carry through.** The model snaps the result to a fixed size for its aspect ratio, and that size never exceeds **848 pixels on the long edge** however large the clip you sent was. A 16:9 source comes back 848 × 480 whether it went in at 720p, 1080p or 4K, and a 9:16 source comes back 480 × 848. The full table of sizes per aspect ratio is in the [model reference](https://runware.ai/docs/models/prunaai-p-video-edit).

Two things follow. Framing and length are **upstream decisions**, settled in the footage you bring because no field here changes either. And the cost is **knowable before you call**, since billing runs per second of output and the output is always as long as the input, so a 15-second source is a 15-second bill whether the instruction touches one apron or the whole room.

> [!WARNING]
> Plan the downscale into your pipeline. An edit is **not a round trip you can run on a delivery master**, because the file that comes back is capped at 848 pixels on its long edge. Where the finished clip has to ship at full resolution, treat the edit as an intermediate and put an upscale after it.

### [Writing the edit instruction](https://runware.ai/docs/models/prunaai-p-video-edit/guides/editing-video#writing-the-edit-instruction)

An instruction has a job to do in two halves: **name the change, then name what survives it**. The model is deciding what to hold constant at the same time as it decides what to alter, and an instruction that stops after the change leaves the second half to its judgment.

**[Target]** Change only the instructor's teal long-sleeve top, **[Change]** to a warm terracotta, **[Fidelity]** Preserve the fit of the top, its folds and its movement, **[Preserve]** Keep the instructor, her leggings, the mat, the studio, the camera and the daylight unchanged

The word doing the most work is **"only"**. It marks the edit as scoped rather than as a description of a video you want, and dropping it invites the model to read the whole sentence as a brief. The same source below, asked twice.

[Watch video](https://runware.ai/docs/assets/source-studio.dmBcxjfg.mp4)

*Source, a teal top*

[Watch video](https://runware.ai/docs/assets/output-vague.C--DBN9P.mp4)

*Broad instruction*

> **Prompt**: Make her outfit warmer.

[Watch video](https://runware.ai/docs/assets/output-anchored.BhzS5TO4.mp4)

*Named target, named change, named preserve*

> **Prompt**: Change only the instructor's teal long-sleeve top to a warm terracotta. Preserve the fit of the top, its folds and its movement. Keep the instructor, her leggings, the mat, the studio, the camera and the daylight unchanged.

"Warmer" is a judgment call, and "outfit" is a bigger noun than you meant, so the leggings change along with the top. The second instruction lands on one garment because it **names the target, the new value and the things that keep their own colour**.

Describe the **finished state rather than the operation**. "Change only the apron to terracotta" gives the model a frame to render, where "apply a colour shift to the apron" gives it an edit to interpret.

### [One principal change per run](https://runware.ai/docs/models/prunaai-p-video-edit/guides/editing-video#one-principal-change-per-run)

Pruna's guidance is to keep each call to **a single change**, and it is the safer default rather than a hard limit. Stacking four changes into the instruction below landed all four, so treat the rule as a reliability margin you spend rather than a wall you hit.

**Source**:

[Watch video](https://runware.ai/docs/assets/source-studio.dmBcxjfg.mp4)

*Source*

**One change**:

[Watch video](https://runware.ai/docs/assets/output-anchored.BhzS5TO4.mp4)

*One change*

> **Prompt**: Change only the instructor's teal long-sleeve top to a warm terracotta. Preserve the fit of the top, its folds and its movement. Keep the instructor, her leggings, the mat, the studio, the camera and the daylight unchanged.

**Four changes**:

[Watch video](https://runware.ai/docs/assets/output-stacked.B4j4cw8k.mp4)

*Four changes*

> **Prompt**: Change the top to terracotta, change the mat to dark green, change the floor to polished concrete, and add a tall potted plant in the corner of the studio.

The reason to split anyway is **control rather than fidelity**. A stacked instruction gives you one result to accept or reject, where separate passes let you keep the change that worked and rerun only the one that did not. That costs a full render per pass, so it is a trade against the per-second billing.

### [Changing an attribute](https://runware.ai/docs/models/prunaai-p-video-edit/guides/editing-video#changing-an-attribute)

The narrowest edit changes **one property of one thing already in the frame**. Colour, material and finish all work the same way, because the object and its motion are already filmed and only its surface has to be re-rendered.

**Leather**:

[Watch video](https://runware.ai/docs/assets/source-sneaker.Dx1qHv_c.mp4)

*Source packshot*

**Suede**:

[Watch video](https://runware.ai/docs/assets/output-material.vSf08eYx.mp4)

*The upper re-rendered as suede*

> **Prompt**: Change only the smooth white leather upper of the sneaker to light grey suede. Preserve the panel seams, the laces, the sole and the way the highlight travels across it as it turns. Keep the turntable, its rotation speed, the background and the studio lighting unchanged.

A material change asks for more than a colour change, because the surface has to respond differently to the light that is already in the shot. **Naming the optical behaviour is what sells it**, so the instruction asks for the highlight to keep travelling across the upper rather than just asking for suede. One shoot becomes a colourway or a material run this way, which is the volume case for catalogue and listing work.

### [Changing the environment](https://runware.ai/docs/models/prunaai-p-video-edit/guides/editing-video#changing-the-environment)

The widest edit runs the other way and **keeps the subject while replacing what surrounds it**. The performance, the framing and the camera move are all preserved, so the same take can be delivered against more than one backdrop.

[Watch video](https://runware.ai/docs/assets/source-runner.EtT1RbQC.mp4)

*Source, an overcast park path*

[Watch video](https://runware.ai/docs/assets/output-environment.H87VMsDo.mp4)

*A new setting*

> **Prompt**: Change the setting to a city waterfront promenade at dusk, with the river and lit buildings behind her and the path running along the water. Keep the runner, her clothing, her stride, her position in the frame and the camera move unchanged.

[Watch video](https://runware.ai/docs/assets/output-relight.BI-haRKQ.mp4)

*The same place, relit*

> **Prompt**: Change only the lighting to low warm golden-hour sun raking in from the left, with long soft shadows falling across the path. Keep the runner, her clothing, her stride, the trees, the path and the camera move unchanged.

Relighting is the same instruction at a shorter reach. It leaves the geography alone and changes only how the scene is lit, which is the safer of the two, since **a relight has nothing to invent behind the subject**. A setting swap has to build a plausible background that tracks with the camera for the whole clip, so it is the more demanding request and the one worth checking frame by frame.

### [Keeping or dropping the audio](https://runware.ai/docs/models/prunaai-p-video-edit/guides/editing-video#keeping-or-dropping-the-audio)

`settings.audio` defaults to `true`, so **the source audio rides along unless you turn it off**. For the hero clip that means her voice and the room tone survive an edit that only ever touched a garment.

```json
{
  "settings": {
    "audio": false
  }
}
```

Setting it to `false` returns the edit as a silent file. Reach for that when a score or a voiceover is going to be laid over the result anyway, since **dropping a track you are about to replace saves you muting it downstream**.

**Source, with sound**:

[Watch video](https://runware.ai/docs/assets/source-office.CCI5tSYt.mp4)

*Source clip, her voice and the room tone on the track*

**Edited, silent**:

[Watch video](https://runware.ai/docs/assets/output-silent.Cue3zK-f.mp4)

*Same edit with settings.audio false, returned silent*

> **Prompt**: Change only the navy polo shirt to a burgundy one. Preserve its collar, its fit and the way it moves with her. Keep the woman, her face, her hands, the desk, the monitor, the office, the camera and the lighting unchanged.

### [Where the model stops](https://runware.ai/docs/models/prunaai-p-video-edit/guides/editing-video#where-the-model-stops)

The model edits **what is in the frame, not how the frame was shot**. Asking for a different camera is asking for footage that was never filmed, and the model will attempt it rather than refuse. What comes back is a new view invented from nothing, so **the request lands and the room does not**: geometry drifts, surfaces wash out, and none of it is the space you shot.

**Source**:

[Watch video](https://runware.ai/docs/assets/source-livingroom.mL6g7Ngy.mp4)

*Source clip, a dolly across the room*

**Camera change requested**:

[Watch video](https://runware.ai/docs/assets/output-camera.BnnPlSus.mp4)

*The overhead arrives, the room does not survive it*

> **Prompt**: Change the camera to a slow overhead crane shot looking straight down at the room from the ceiling.

> [!WARNING]
> Four kinds of request fall outside what this model does. **Camera changes** (a new angle, a different move, a zoom) are attempted and not refused, but the model has to invent a view the footage never held, so what returns is a different room rather than yours from elsewhere. **Rewriting text** is the least reliable of all: replacement wording comes back misspelled on a caption, mirrored on a curved label, and often untouched in another language, and no amount of rephrasing moves it. **Whole-scene rewrites** that amount to a new plot or a new video are a generation job rather than an edit. **Adding an object that carries its own motion**, or one with an unusual silhouette, is unreliable, and an object placed into a moving hand is the hardest case of all.

Reading the limits the other way tells you what the model is for. Anything already present in the footage can be recoloured, retextured, removed or restyled, because **the motion for it has already been filmed**. Taking something out of the frame entirely is its own job, covered in [removing objects](https://runware.ai/docs/models/prunaai-p-video-edit/guides/removing-objects). That guide is also where text belongs: **deleting a caption is reliable even though rewriting one is not**, so strip the copy there and set the new wording yourself.

### [Tips](https://runware.ai/docs/models/prunaai-p-video-edit/guides/editing-video#tips)

1. **Say "only".** One word marks the instruction as a scoped edit instead of a description of a video, and it is the difference between recolouring a garment and regrading the frame.
    
2. **Close with what stays.** List the subject, the setting, the camera and the light at the end of every instruction. The model is choosing what to preserve whether or not you tell it.
    
3. **Describe the finished state.** Name the result you want to see rather than the operation you want performed.
    
4. **Prefer one principal change per call.** Stacking works more often than the guidance suggests, but separate passes let you keep what landed and rerun only what did not.
    
5. **Settle framing and length upstream, and expect the size to drop.** Aspect ratio and duration are inherited and no request field overrides them, but the output is capped at 848 pixels on the long edge, so a high-resolution master buys you nothing here.
    
6. **Budget from the source length.** Billing runs per second of output, and output length always equals input length, so a shorter source is a cheaper edit regardless of what you ask for.