Video Eraser
Playground
Try it on WavespeedAI!Remove unwanted objects, people, or elements from videos while preserving quality; supports many formats and 10-minute files. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.
Features
WaveSpeedAI Video Object Remover
WaveSpeedAI Video Object Remover is a video inpainting model that removes unwanted objects, people, logos, and watermarks from your clips. You provide a video, a binary mask indicating the region to edit, and an optional text prompt that describes what should be removed. The model fills the masked area with temporally consistent background content, producing a clean, natural-looking result.
Key Features
- Object / person / watermark removal from video
- Mask-based control over the exact region to edit
- Optional text prompt to clarify what should be removed
- Temporally consistent inpainting to avoid flicker
- Ideal for static overlays, logos, subtitles, and watermarks
- Supports typical short-form and mid-length videos
Pricing
- Minimum charge: $0.15 for any clip up to 5 seconds.
- Effective rate: $0.03 per second for durations above 5 seconds, capped at 600 seconds (10 minutes).
- Clips longer than 600 seconds are billed as if they were 600 seconds.
Example costs:
| Duration | Total price |
|---|---|
| 5 s | $0.15 |
| 10 s | $0.30 |
| 20 s | $0.60 |
| 60 s | $1.80 |
| 600 s | $18.00 |
How to Use
- Upload your video.
- Prepare and upload a mask_image where the area to remove is white and everything else is black.
- (Optional) Enter a short prompt describing what to remove and the surrounding context.
- Submit the job.
- Review the preview and download the cleaned video from the WaveSpeedAI dashboard.
Tips for Best Results
- Use a precise mask that closely hugs the unwanted object.
- For static watermarks or corner logos, limit the mask to just that overlay area.
- Keep clips reasonably short when editing fast motion or complex scenes.
- If artifacts appear, try tightening the mask, shortening the clip, or simplifying the prompt.
- It works better for removing static objects or watermarks. If the people in the video are moving too much, the effect may be greatly reduced.
Remove Anything Tool box:
- Image Eraser – fast, general-purpose image inpainting that cleanly removes objects while preserving local texture and lighting.
- BRIA Eraser – premium semantic eraser that intelligently understands scene context for high-fidelity, artifact-free edits.
- Video Watermark Remover – temporally consistent video inpainting that removes logos and overlays without flicker across frames.
- Image Watermark Remover – targeted watermark and logo cleaner optimized for text, corner badges, and overlay graphics.
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/wavespeed-ai/video-eraser" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer ${WAVESPEED_API_KEY}" \
--data-raw '{}'
# 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 for generating the output. | |
| prompt | string | No | - | The text prompt for specifying the objects or areas to be removed from the video. | |
| mask_image | string | No | - | The mask image to indicate the area to be erased. The area to be erased should be in white color and the area to be kept should be in black color. |
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 |
Result Request Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| id | string | Yes | - | Task ID |
Result Response Parameters
| Parameter | Type | Description |
|---|---|---|
| code | integer | HTTP status code (e.g., 200 for success) |
| message | string | Status message (e.g., “success”) |
| data | object | The prediction data object containing all details |
| data.id | string | Unique identifier for the prediction, the ID of the prediction to get |
| data.model | string | Model ID used for the prediction |
| data.outputs | string | 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.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 |