REST API · Live

Inpaint API vs SnapEdit — Object Removal Built for Developers

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.

$0.025 / image 5–15s typical 500 free credits No credit card Text prompt or mask 20MB max input
Get an API key (free) Quick start See pricing API docs

Quick start — remove any object in one API call

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")

Inpaint API vs SnapEdit: Pricing Comparison

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:

ProviderFree tierPer-image costDeveloper API?Prompt or mask?
PixelAPI 500 credits, no card $0.025 ✓ REST + SDKs Both
cleanup.picturesUnlimited at 720p~$0.05 (API)Limited beta APIBrush only
SnapEdit10 images/mosee snapedit.app/pricingNo public APIBrush only
watermarkremover.io2 images/day$0.03/image (pack)No APIAuto-detect only
Magic Eraser (magiceraser.io)LimitedSubscription onlyNo public APIBrush 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.

Two ways to specify what to remove

Unlike consumer apps that require manual brush strokes, PixelAPI gives you two programmatic modes that work without a GUI:

Text-prompt mode

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.

Mask mode

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.

What you get back

Seamlessly filled image

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).

Full resolution preserved

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.

Multilingual prompts supported

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.

Credits only charged on success

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.

When to use prompt mode vs mask mode

A practical guide for the two removal modes:

Common workflows

The Object Removal API powers these production use cases. Each links to a setup guide:

Real estate photos

Remove clutter, power lines, neighbor's cars, and staging artifacts from listing photos at scale.

E-commerce listings

Strip mannequins, price tags, brand logos, and props before uploading to marketplaces.

Social media

Clean up backgrounds, remove photobombers, and fix frame-edge distractions.

Stock photo cleanup

Automate watermark removal from drafts, strip timestamps, sanitize metadata overlays.

Watermark removal

Bulk-remove logo watermarks from your own licensed images before distribution.

Food delivery apps

Remove background props, utensils, and brand marks from menu photography.

Integrations & SDKs

Shopify

Auto-clean product images on upload via Shopify webhook.

Zapier

No-code object removal triggered from any Zapier workflow.

Make.com

Drag-and-drop object removal in Make scenarios.

Webflow

CMS image cleanup for product detail and collection pages.

BigCommerce

Bulk catalog automation with the BC product API.

Magento

Adobe Commerce / Magento 2 pipeline integration.

Comparison vs alternatives

vs cleanup.pictures

Half the API price ($0.025 vs ~$0.05). Full REST API + SDKs vs a limited beta API. Text-prompt and mask modes.

vs Samsung Eraser

Samsung Eraser is device-only (Galaxy phones). PixelAPI runs server-side — works with any client, any device, any platform.

vs Remini Remove

Remini is a consumer app with no API. PixelAPI is API-first — built for pipelines, not manual editing sessions.

vs IMG.LY Remove

IMG.LY is a client-side SDK. PixelAPI runs server-side — no client bundle weight, no browser memory limits.

Rate limits & error handling

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:

# 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

Frequently asked questions

What is the difference between an inpaint API and SnapEdit?

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.

How do I remove an object from an image via API?

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.

How much does it cost vs SnapEdit?

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.

What kinds of objects can I remove?

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.

Can I remove watermarks and logos?

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.

Do I have to describe the object, or can I use a mask?

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.

How fast is the object removal?

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.

What input and output formats are supported?

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.

Is there a Python SDK?

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.

What are the rate limits?

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.

What if the removal doesn't look right?

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.

Can I process images in bulk?

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.

Start free — 500 credits, no card Read full API docs Compare all plans