Pixverse Swap
Playground
Try it on WavespeedAI!PixVerse Swap replaces backgrounds, people, and objects directly inside existing videos for quick scene changes and creative edits with natural-looking results. Ready-to-use REST inference API, best performance, no cold starts, affordable pricing.
Features
PixVerse Swap — Video Swap Model
PixVerse Swap generates high-quality video clips by swapping the person, objects, or background of a source video using a reference image. It preserves the original motion, timing, and camera work while replacing the visual target with the new look from the image.
What it does
- Takes a source video (performance, camera motion, timing).
- Takes a reference image (new person, object, or background).
- Replaces the selected target in the video with the content from the image.
- Keeps motion, expressions, and framing consistent so the edit feels natural.
Ideal for:
- Turning talking-head videos into stylized or character performances
- Swapping outfits, props, or featured products
- Dropping your subject into new scenes without reshooting
Inputs and Controls
-
video (required) Source clip whose motion, expressions, and timing you want to keep.
-
image (required) Reference image that defines the new person, object, or background.
-
resolution
- 360p
- 540p
- 720p
-
mode
- person – Replace the main person in the video with the person or character from the image.
- object – Replace a key object (for example, smartphone, product, prop) with the object in the image.
- background – Keep the subject but replace the scene behind them using the reference image.
Pricing
| Resolution | Swap price per second |
|---|---|
| 360p | $0.090 |
| 540p | $0.090 |
| 720p | $0.120 |
- P.S: $0.020 per request for mask selection (charged once per job).
How to Use
-
Upload or paste the URL of your source video.
-
Upload or paste the URL of the reference image that contains the new person, object, or background.
-
Choose the resolution (360p, 540p, or 720p) according to your quality and cost needs.
-
Select the mode:
- person for full character swap,
- object for prop/product replacement,
- background to move your subject into a different environment.
-
Click Run and wait for the processed video to appear in the preview panel.
-
Review the result and download if you are satisfied.
Notes
- An uploaded video in supported formats (mp4, mov)
- Max resolution: 1920
- Max file size: 50MB
- Max duration: 30 seconds
Authentication
For authentication details, please refer to the Authentication Guide.
API Endpoints
Submit Task & Query Result
# Submit the task
curl --location --request POST "https://api.wavespeed.ai/api/v3/pixverse/swap" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer ${WAVESPEED_API_KEY}" \
--data-raw '{
"resolution": "720p",
"mode": "person"
}'
# Get the result
curl --location --request GET "https://api.wavespeed.ai/api/v3/predictions/${requestId}/result" \
--header "Authorization: Bearer ${WAVESPEED_API_KEY}"
Parameters
Task Submission Parameters
Request Parameters
| Parameter | Type | Required | Default | Range | Description |
|---|---|---|---|---|---|
| video | string | Yes | - | The video to be swapped. | |
| image | string | Yes | - | The model generates video with the picture passed in as the first frame.Base64 encoded strings in data:image/jpeg; base64,{data} format for incoming images, or URLs accessible via the public network. The uploaded image needs to meet the following conditions: Format is JPG/JPEG/PNG; The aspect ratio is greater than 2:5 and less than 5:2; Short side pixels greater than 300px; The image file size cannot exceed 20MB. | |
| resolution | string | No | 720p | 360p, 540p, 720p | Video quality (360p/540p/720p). |
| mode | string | No | person | person, object, background | The swap mode to use Default value: person |
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| code | integer | HTTP status code (e.g., 200 for success) |
| message | string | Status message (e.g., “success”) |
| data.id | string | Unique identifier for the prediction, Task Id |
| data.model | string | Model ID used for the prediction |
| data.outputs | array | Array of URLs to the generated content (empty when status is not completed) |
| data.urls | object | Object containing related API endpoints |
| data.urls.get | string | URL to retrieve the prediction result |
| data.has_nsfw_contents | array | Array of boolean values indicating NSFW detection for each output |
| data.status | string | Status of the task: created, processing, completed, or failed |
| data.created_at | string | ISO timestamp of when the request was created (e.g., “2023-04-01T12:34:56.789Z”) |
| data.error | string | Error message (empty if no error occurred) |
| data.timings | object | Object containing timing details |
| data.timings.inference | integer | Inference time in milliseconds |