Searching for an inpaint API vs SnapEdit comparison? SnapEdit is a consumer web app — you click, you paint, you export. PixelAPI is the REST API that developers call from their code: POST an image and a text prompt, pay $0.005 per image, get back a clean result with the object gone and the background filled. 500 free credits, no credit card.
Sign up, copy your key from the dashboard, and POST your image with a plain-English description of what to remove. The endpoint returns a job id; poll GET /v1/image/{id} until status=completed, then download the cleaned image from output_url.
# Text-prompt mode — describe what to remove curl -X POST https://api.pixelapi.dev/v1/image/remove-object \ -H "Authorization: Bearer YOUR_API_KEY" \ -F "[email protected]" \ -F "prompt=the telephone pole on the left" # Response: {"id": "uuid", "status": "queued", "operation": "remove-object", ...} # Poll until completed curl https://api.pixelapi.dev/v1/image/UUID \ -H "Authorization: Bearer YOUR_API_KEY" # Response: {"status": "completed", "output_url": "https://..."} # Mask mode — white=remove, black=keep curl -X POST https://api.pixelapi.dev/v1/image/remove-object \ -H "Authorization: Bearer YOUR_API_KEY" \ -F "[email protected]" \ -F "prompt=object in masked region" \ -F "[email protected]"
pip install pixelapi
---
from pixelapi import PixelAPI
client = PixelAPI(api_key="YOUR_API_KEY")
# Text-prompt mode
result = client.remove_object(image="photo.jpg", prompt="the telephone pole on the left")
result.save("photo_clean.jpg")
# Mask mode (white=remove, black=keep)
result = client.remove_object(image="photo.jpg", prompt="object in masked region", mask="mask.png")
result.save("photo_clean.jpg")
npm install pixelapi
---
import { PixelAPI } from "pixelapi";
const client = new PixelAPI({ apiKey: process.env.PIXELAPI_KEY });
// Text-prompt mode
const result = await client.removeObject({
image: "./photo.jpg",
prompt: "the telephone pole on the left",
});
await result.save("photo_clean.jpg");
// Mask mode
const masked = await client.removeObject({
image: "./photo.jpg",
prompt: "object in masked region",
mask: "./mask.png",
});
await masked.save("photo_clean.jpg");
composer require pixelapi/pixelapi
---
<?php
use PixelAPI\Client;
$client = new Client(getenv("PIXELAPI_KEY"));
// Text-prompt mode
$result = $client->removeObject([
"image" => "photo.jpg",
"prompt" => "the telephone pole on the left",
]);
file_put_contents("photo_clean.jpg", $result->getBody());
// Mask mode
$masked = $client->removeObject([
"image" => "photo.jpg",
"prompt" => "object in masked region",
"mask" => "mask.png",
]);
file_put_contents("photo_clean.jpg", $masked->getBody());
gem install pixelapi
---
require "pixelapi"
client = PixelAPI::Client.new(api_key: ENV["PIXELAPI_KEY"])
# Text-prompt mode
result = client.remove_object(image: "photo.jpg", prompt: "the telephone pole on the left")
File.binwrite("photo_clean.jpg", result.body)
# Mask mode
masked = client.remove_object(image: "photo.jpg", prompt: "object in masked region", mask: "mask.png")
File.binwrite("photo_clean.jpg", masked.body)
go get github.com/pixelapi/pixelapi-go
---
import "github.com/pixelapi/pixelapi-go"
client := pixelapi.New("YOUR_API_KEY")
// Text-prompt mode
result, err := client.RemoveObject("photo.jpg", pixelapi.RemoveObjectParams{
Prompt: "the telephone pole on the left",
})
if err != nil { panic(err) }
result.Save("photo_clean.jpg")
// Mask mode
masked, err := client.RemoveObject("photo.jpg", pixelapi.RemoveObjectParams{
Prompt: "object in masked region",
Mask: "mask.png",
})
if err != nil { panic(err) }
masked.Save("photo_clean.jpg")
SnapEdit is a subscription consumer tool — there is no developer API or per-call pricing. Here is how PixelAPI's inpaint API compares to every option with a machine-callable endpoint:
| Provider | Free tier | Per-image cost | Developer API? | Prompt or mask? |
|---|---|---|---|---|
| PixelAPI | 500 credits, no card | $0.025 | ✓ REST + SDKs | Both |
| cleanup.pictures | Unlimited at 720p | ~$0.05 (API) | Limited beta API | Brush only |
| SnapEdit | 10 images/mo | see snapedit.app/pricing | No public API | Brush only |
| watermarkremover.io | 2 images/day | $0.03/image (pack) | No API | Auto-detect only |
| Magic Eraser (magiceraser.io) | Limited | Subscription only | No public API | Brush only |
Pricing verified from each rival's public pricing page May 2026. PixelAPI's per-image price is set at exactly half cleanup.pictures' API rate — the cheapest rival with a machine-callable endpoint.
Unlike consumer apps that require manual brush strokes, PixelAPI gives you two programmatic modes that work without a GUI:
Describe the target object in plain English: "the red SUV parked on the right", "watermark in the lower-right corner", "the person in the background". The system locates the object automatically. No coordinates, no drawing.
Upload a PNG mask alongside the image: white pixels mark the area to remove, black pixels mark what to keep. Combine with a short prompt for best fill quality. Mask mode gives pixel-perfect control for irregular shapes and overlapping objects.
The removed region is filled with a plausible continuation of the surrounding scene — matching texture, lighting, and perspective. Output format matches your input (JPG → JPG, PNG → PNG, WebP → WebP).
The API processes images up to 20MB. Images wider than 6144px are auto-routed to high-memory workers. No internal downsampling, no quality loss outside the removed region.
Submit prompts in any language — Hindi, Spanish, French, German, Japanese, and more. Prompts are automatically translated to English before processing; you always get back the correct result.
If the job fails a quality check — blank output, corrupt fill, or processing error — credits are auto-refunded. You never pay for a broken result.
A practical guide for the two removal modes:
The Object Removal API powers these production use cases. Each links to a setup guide:
Remove clutter, power lines, neighbor's cars, and staging artifacts from listing photos at scale.
Strip mannequins, price tags, brand logos, and props before uploading to marketplaces.
Clean up backgrounds, remove photobombers, and fix frame-edge distractions.
Automate watermark removal from drafts, strip timestamps, sanitize metadata overlays.
Bulk-remove logo watermarks from your own licensed images before distribution.
Remove background props, utensils, and brand marks from menu photography.
Auto-clean product images on upload via Shopify webhook.
No-code object removal triggered from any Zapier workflow.
Drag-and-drop object removal in Make scenarios.
CMS image cleanup for product detail and collection pages.
Bulk catalog automation with the BC product API.
Adobe Commerce / Magento 2 pipeline integration.
Half the API price ($0.025 vs ~$0.05). Full REST API + SDKs vs a limited beta API. Text-prompt and mask modes.
Samsung Eraser is device-only (Galaxy phones). PixelAPI runs server-side — works with any client, any device, any platform.
Remini is a consumer app with no API. PixelAPI is API-first — built for pipelines, not manual editing sessions.
IMG.LY is a client-side SDK. PixelAPI runs server-side — no client bundle weight, no browser memory limits.
Default 60 requests/minute on the free tier, 600 requests/minute on paid tiers. Exceeding the limit returns HTTP 429 with a Retry-After header. Recommended pattern: exponential backoff starting at 2 seconds, doubling on each retry up to 30 seconds. The Python and Node.js SDKs handle this automatically.
Other status codes you may see:
400 vague_prompt — prompt did not name a concrete object. Fix: add a specific noun ("the bench on the left") or upload a mask.400 wrong_tool — text/watermark removal should use POST /v1/image/remove-text instead.402 Payment Required — insufficient credits. Top up at /pricing.503 Queue Full — rare; credits are auto-refunded. Retry after a few seconds.# Python SDK auto-retries 429 with exponential backoff from pixelapi import PixelAPI client = PixelAPI(api_key="...", max_retries=4) result = client.remove_object(image="bulk.jpg", prompt="the date stamp") # handles 429 automatically
SnapEdit is a consumer web app — you open it in a browser, brush over the object manually, and export. An inpaint API like PixelAPI is a REST endpoint you call from your own code. POST an image and a description of what to remove; your server gets back a cleaned image. No GUI, no seat licences, no monthly subscription. You pay per call and embed it anywhere: backend pipelines, mobile apps, Shopify webhooks, Zapier flows.
POST your image to https://api.pixelapi.dev/v1/image/remove-object with an Authorization: Bearer YOUR_KEY header, the image as multipart form data, and a prompt field naming the object to remove. The endpoint returns a job id immediately; poll GET /v1/image/{id} until status=completed and download the result from output_url. See the Quick Start section above for code in six languages.
PixelAPI charges $0.025 per image. SnapEdit is a subscription consumer tool without a public developer API — see snapedit.app/pricing for their current plans. New PixelAPI accounts get 500 free credits (≈20 free removals) with no credit card required.
Any identifiable object you can describe: people, vehicles, furniture, power lines, cables, watermarks, logos, price stickers, date stamps, shadows, background clutter, and more. Be specific in the prompt — "the telephone pole on the left" is better than "the pole". For pixel-exact control on complex shapes, use mask mode.
Yes. Pass the watermark or logo in your prompt: "the watermark in the bottom-right corner" or "the brand logo on the bag". For text-based overlays (date stamps, captions, phone numbers), use POST /v1/image/remove-text instead — it runs text-detection before inpainting for sharper results on small, dense text.
Both modes work. Text-prompt mode: POST image + prompt="the red car on the right" — no other tools needed. Mask mode: POST image + prompt + a PNG mask (white = area to erase, black = keep). Mask mode is more precise for irregular shapes or when you have an existing segmentation pipeline. Both cost $0.025/image.
Typical processing is 5–15 seconds depending on image dimensions and the complexity of the fill. There are no cold-start delays — servers are kept warm around the clock. Concurrent batch requests are processed in parallel up to your rate limit.
Input: JPG, PNG, or WebP, up to 20MB. Output: same format as the input, at the original resolution. The removed area is filled with a seamless continuation of the surrounding scene — no visible border, no color shift.
pip install pixelapi. Official SDKs also available for Node.js (npm install pixelapi), PHP (Composer), Ruby (Gem), and Go (go get). All SDKs handle authentication, async polling, and automatic 429 retry with exponential backoff — you just call the method and get the result.
60 requests/minute on the free tier, 600 requests/minute on paid tiers. HTTP 429 responses include a Retry-After header. Contact [email protected] for bulk limits above 600 req/min or dedicated throughput for high-volume pipelines.
Refine the prompt to name the object more precisely, or switch to mask mode for pixel-exact control. If the job fails a quality check on our end, credits are automatically refunded — you never pay for a broken result. If you consistently get unexpected fills on a specific image type, email support with an example and we will investigate.
Yes. Fire concurrent POST requests up to your rate limit; each returns a job id immediately. Poll them in parallel. The Python and Node.js SDKs include an async batch helper. For dedicated throughput above 10K images/day, contact [email protected] for bulk pricing.