# PixVerse Modify PixVerse Modify edits existing videos using text prompts with optional reference images and masks, enabling subject swaps, object addition or removal, lighting and environment changes, text replacement, and style transformations within the same clip. ## API Information - **Model Slug:** pixverse-modify - **Branded URL:** https://www.eachlabs.ai/pixverse/pixverse-features/pixverse-modify - **Provider:** PixVerse - **Category:** Video to Video - **Output Type:** video - **Status:** active - **Version:** 0.0.1 - **Base Cost:** Per-second pricing scales with quality:• 360p — $0.040• 540p — $0.050• 720p — $0.0601080p is not supported.Example: a 5-second 720p edit = $0.30. - **Estimated Processing Time:** 200 seconds - **Last Updated:** 2026-04-27 - **Interactive Demo:** https://www.eachlabs.ai/ai-models/pixverse-modify ## Pricing - **Charge Type:** dynamic - **Pricing Details:** Per-second pricing scales with quality:• 360p — $0.040• 540p — $0.050• 720p — $0.0601080p is not supported.Example: a 5-second 720p edit = $0.30. ### Pricing Rules | Condition | Pricing | | --- | --- | | Rule 1 | Per-second pricing scales with quality:• 360p — $0.040• 540p — $0.050• 720p — $0.0601080p is not supported.Example: a 5-second 720p edit = $0.30. | ## Input Schema | Parameter | Type | Required | Default | Constraints | Description | |-----------|------|----------|---------|-------------|-------------| | video_url | string | Yes | - | mp4, mov, webm | URL of the video to modify. The video will be uploaded to PixVerse for processing. | | prompt | string | Yes | - | - | Use @selection0/@selection1/... to reference masks, @img0/@img1/... to reference uploaded images. Example: '@selection0 subject is replaced with @img0' | | quality | string | Yes | 540p | 360p,540p,720p | Output video resolution quality. Options: 360p, 540p, 720p. Default: 540p. | | reference_image_urls | array | No | - | - | Reference images (referenced as @img0, @img1 in prompt). Up to 10. | | mask_urls | array | No | - | - | Mask URLs for selection (referenced as @selection0, etc.). Up to 3. | | keyframe_id | integer | No | 1 | - | Frame index in the video where the edit applies. | ## Example Request ```bash curl -X POST https://api.eachlabs.ai/v1/prediction/ \ -H "X-API-Key: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "pixverse-modify", "input": { "video_url": "https://cdn-us.eachlabs.ai/uploads/161eb685-7551-4ed6-95cd-0f9ebda81c38.mp4", "prompt": "Keep the original ferry, camera angle, and movement. Change the weather to heavy rain with dark storm clouds. Add strong wind affecting the sea, creating rough waves. Enhance water splashes and realistic rain hitting the surface. Reduce visibility slightly with atmospheric fog. Adjust lighting to dark, moody cinematic tones. Ensure natural physics, realistic motion, and no distortion.", "quality": "720p" } }' ``` ## 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 "X-API-Key: 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 `X-API-Key` | | `404` | Unknown model or prediction id | | `429` | Rate limit — 100 creates / min, 10 concurrent per key | | `5xx` | Retry with backoff | ## Overview **PixVerse Modify Overview** PixVerse Modify is a powerful video-to-video AI model from Pixverse that transforms existing video clips using text prompts, optional reference images, and masks for precise edits like subject swaps, object addition or removal, lighting changes, and style transformations. Part of the PixVerse family, it excels in maintaining subject consistency across the clip while enabling targeted modifications without regenerating the entire video. This makes it ideal for creators needing quick, coherent video edits on each::labs (eachlabs.ai). Unlike basic video generators, PixVerse Modify leverages reference-driven editing for reliable identity preservation in dynamic scenes. ## Usage Notes - API Base URL: `https://api.eachlabs.ai/v1` - Authentication: send `X-API-Key: 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.