A production REST API that removes any object — watermark, logo, person, cable, text overlay, or unwanted element — from an image and fills the gap with seamlessly inpainted background. One HTTP call, one text prompt. $0.0125 per image. 5,000 free credits (7-day trial), no credit card.
Describe the unwanted element in plain English and POST your image. The API segments the target, removes it, and fills the remaining area with AI-generated content that blends naturally with the surrounding background. No manual masking, no Photoshop, no per-seat licensing.
Sign up, copy your key from the dashboard, and POST your image with a description of what to remove. The endpoint returns a generation id; poll until status=completed, then download the cleaned image from output_url.
curl -X POST https://api.pixelapi.dev/v1/image/remove-object \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "image=@product.jpg" \
-F "prompt=the watermark in the top-right corner"
# Response: {"generation_id": "uuid", "status": "queued", ...}
# Poll until completed
curl https://api.pixelapi.dev/v1/image/UUID \
-H "Authorization: Bearer YOUR_API_KEY"
# Response: {"status": "completed", "output_url": "https://..."}
pip install pixelapi
---
from pixelapi import PixelAPI
client = PixelAPI(api_key="YOUR_API_KEY")
result = client.remove_object(
image="product.jpg",
prompt="the watermark in the top-right corner"
)
result.save("product_clean.jpg")
npm install pixelapi
---
import { PixelAPI } from "pixelapi";
const client = new PixelAPI({ apiKey: process.env.PIXELAPI_KEY });
const result = await client.removeObject({
image: "./product.jpg",
prompt: "the watermark in the top-right corner"
});
await result.save("product_clean.jpg");
composer require pixelapi/pixelapi
---
<?php
use PixelAPI\Client;
$client = new Client(getenv("PIXELAPI_KEY"));
$result = $client->removeObject([
"image" => "product.jpg",
"prompt" => "the watermark in the top-right corner"
]);
file_put_contents("product_clean.jpg", $result->getBody());
gem install pixelapi
---
require "pixelapi"
client = PixelAPI::Client.new(api_key: ENV["PIXELAPI_KEY"])
result = client.remove_object(
image: "product.jpg",
prompt: "the watermark in the top-right corner"
)
File.binwrite("product_clean.jpg", result.body)
go get github.com/pixelapi/pixelapi-go
---
import "github.com/pixelapi/pixelapi-go"
client := pixelapi.New("YOUR_API_KEY")
result, err := client.RemoveObject("product.jpg",
pixelapi.RemoveObjectParams{Prompt: "the watermark in the top-right corner"})
if err != nil { panic(err) }
result.Save("product_clean.jpg")
When segmentation data is already available (from a prior detection step, a designer-drawn selection, or an automated pipeline), upload a black-and-white mask alongside the image. White pixels mark the area to remove; everything else is preserved exactly.
curl -X POST https://api.pixelapi.dev/v1/image/remove-object \ -H "Authorization: Bearer YOUR_API_KEY" \ -F "image=@scene.jpg" \ -F "mask=@mask.png" # mask.png: white = area to remove, black = keep
| Provider | Free tier | Per-image cost | Developer API |
|---|---|---|---|
| PixelAPI | 5,000 credits (7-day trial), no card | $0.0125 | REST API · text prompt + mask |
| cleanup.pictures (Clipdrop) | 100 credits (trial) | see cleanup.pictures/pricing | API available (contact Jasper.ai for rates) |
| snapedit | 10 credits/month | ~$0.015 (Standard) / ~$0.008 (Pro) — subscription only | see developer.snapedit.app |
| watermarkremover.io | 3 credits/month | see watermarkremover.io/pricing | Consumer app — API available with subscription |
| magic eraser (MagicStudio) | Limited free use | see magicstudio.com/magiceraser | Consumer-focused, no public developer API |
PixelAPI per-image cost verified from internal pricing audit (October 2026). Rival pricing verified from each provider's public pricing page October 2026. Where rivals do not publish per-call API rates, their pricing page is linked directly.
The removed area is filled with AI-generated content that matches the surrounding background — no transparent hole, no blurry smear. Works on textured backgrounds, gradients, and scenes with perspective.
Send a JPG and get a JPG back. Send a PNG and get a PNG back. WebP is also supported. No format conversion step needed downstream.
The API processes images at native resolution and returns the full-size result. No internal downsampling or resolution cap for standard images.
Every job returns a stable generation_id. You can re-fetch the result URL at any time via GET /v1/image/{id} without re-processing or re-charging.
The AI object removal API powers these production workflows. Each link goes to a setup guide for that industry:
Remove people, vehicles, and seasonal clutter from listing exteriors and interior shots at scale.
Strip watermarks and price tags from supplier images, remove props from flat lays before publishing.
Clean up UGC, remove distracting elements, and prepare images for templated formats.
Automate removal of agency watermarks, date stamps, and metadata overlays at bulk scale.
Repurpose client photography across regions by removing locale-specific signage and text.
Remove tags, pins, and styling clips from garment photos before publishing to the storefront.
Strip staging accessories, remove stickers, and clean crowded showroom shots.
Remove dealer logos, dealer lot signage, and reflections from vehicle photography.
Clean third-party product images before listing on Amazon, eBay, and Etsy.
More use-case guides: all industries →
Auto-clean product images on upload via webhook — remove watermarks before the listing goes live.
Trigger object removal from Google Drive, Dropbox, or any Zapier-connected app with no code.
Drag-and-drop object removal in Make scenarios — connect to your CMS, PIM, or DAM.
Strip watermarks from CMS-sourced images before publishing to Webflow collection pages.
Automated product-image cleanup on WooCommerce stores via REST hook.
Drop the SDK into a Next.js API route and serve cleaned images server-side.
cleanup.pictures is a consumer web tool backed by Clipdrop. PixelAPI offers a REST API with text-prompt targeting, mask mode, parallel batch processing, and usage-based pay-as-you-go billing.
Magic Eraser is designed for manual, browser-based brush selection. PixelAPI is fully automated — no brush, no UI, just a text description or mask in an HTTP call.
Adobe Firefly's removal tool is locked to the Creative Cloud ecosystem. PixelAPI is a standalone REST endpoint — no Adobe account, no seat licence, no per-user overhead.
IMG.LY is an SDK embedded in your frontend. PixelAPI processes server-side, keeping large payloads off the client device and avoiding per-seat SDK licensing.
20 requests/minute on the free trial, 60 on Starter, 120 on Pro, and 300 on Scale, with 3/10/20/50 parallel jobs respectively. Exceeding the rate limit returns HTTP 429 with a Retry-After header. Recommended: exponential backoff starting at 2 s, doubling on each retry up to 30 s. The Python and Node SDKs handle this automatically.
# Python SDK auto-retries 429 with backoff
from pixelapi import PixelAPI
client = PixelAPI(api_key="...", max_retries=4)
result = client.remove_object(
image="bulk.jpg",
prompt="the price tag",
) # auto-retries on 429
Common error responses:
| HTTP status | error code | Meaning |
|---|---|---|
| 400 | mask_empty | Mask supplied is entirely black — white pixels must mark the area to remove. |
| 400 | (message) | No prompt and no mask provided — describe what to remove or upload a mask. |
| 402 | trial_ended_subscribe | 7-day trial ended. Subscribe to continue — purchased credits unlock immediately on any paid plan. |
| 413 | (message) | Image exceeds the plan upload size limit. Compress or resize before uploading. |
| 429 | (header) | Rate limit exceeded. Respect the Retry-After header value in seconds. |
POST your image to https://api.pixelapi.dev/v1/image/remove-object with your API key and a prompt field describing the target — e.g. "the watermark", "the person on the left", or "the power lines in the sky". The endpoint returns a generation id; poll GET /v1/image/{id} until status=completed and download the result from output_url. Full code examples in six languages are in the Quick Start section above.
$0.0125 per image (12.5 credits at $0.001/credit). New accounts get 5,000 free credits on a 7-day trial with no credit card required — enough for 400 object removal jobs to evaluate on real production images before spending anything.
Anything you can describe: watermarks, copyright logos, text overlays, people, vehicles, cables, power lines, trash cans, price tags, props, foreign-language signs, furniture, and more. The prompt-based targeting means you don't need to prepare a mask for each new target class — just change the description.
Two modes: (1) text prompt — describe the target in plain English and the API handles segmentation automatically; (2) mask upload — post a black-and-white PNG alongside your image where white pixels mark the exact area to erase. Mask mode is ideal when a prior detection step already provides bounding-box or pixel-level selection data.
Typical end-to-end time is 5–15 seconds depending on image resolution and the size of the removed region. Infrastructure is kept warm 24/7 — no cold starts. On Pro and Scale plans, multiple jobs run concurrently so batch pipelines are not bottlenecked by sequential processing.
The API returns the cleaned image in the same format as the input — JPG in, JPG out; PNG in, PNG out; WebP in, WebP out. The removed area is seamlessly inpainted with AI-generated content that matches the surrounding background, producing a natural-looking fill rather than a transparent hole or a blur patch.
Yes — upload a black-and-white PNG mask in the mask field (white = area to remove, black = keep). The mask must not be entirely black; a fully-black mask returns HTTP 400 before any credits are deducted. Mask mode is the right choice when your pipeline already produces segmentation data from an upstream detection step.
20 requests/minute on the free trial, 60 on Starter, 120 on Pro, and 300 on Scale, with 3/10/20/50 concurrent jobs respectively. HTTP 429 responses carry a Retry-After header. For bulk pipelines exceeding Scale limits, email support@pixelapi.dev with your expected volume.
Yes — pip install pixelapi. Official SDKs are also available for Node.js (npm install pixelapi), PHP (Composer), Ruby (Gem), and Go (go get github.com/pixelapi/pixelapi-go). All SDKs handle authentication, async polling, retry-on-429 with backoff, and binary file download automatically.
Output quality is checked automatically before the result is delivered. Blank or corrupted outputs are detected and the job is marked status=failed — the 12.5 credits are auto-refunded and the error_message field on the generation record explains the reason. You never pay for a broken result.