Changelog
What's new
Changes to the API, the SDKs and the dashboard, newest first. Entries tagged Changed are the ones worth reading if you have an integration running.
A second cutout engine for flat product photography
One new parameter. Your existing calls are untouched unless you add it.
- Added
Flat products shot in a lightbox, like packaging film, paper and sheet goods, could come back with a faint light edge where the background met the product. A second engine fixes that. Add engine=product-v1 to a request on POST /remove, /remove-url, /mask, /smart-crop or /studio-shot.
- Added
It is a choice, not an upgrade. On flat, opaque products it is clearly better. On hair, fur, plants and pale or translucent subjects it is clearly worse, and can erase parts of the subject, so leave it off for those. Send nothing and you get exactly what you got before.
- Added
What it costs you: about 25 seconds per image instead of a few seconds, because it runs a second refinement pass at full resolution. Price per image is unchanged, output is full resolution, and it needs a paid plan. Free-tier keys and the playground get a 402.
- Changed
Cold start timing is now documented honestly. The GPU scales to zero when idle, so the first request after a quiet period can take a minute or more depending on the endpoint and image size: the container wakes and loads model weights, then your image is processed. Requests after that are seconds. Nothing about this is new, our docs previously understated it, and it is worth a generous timeout and one retry on your first call rather than treating it as an outage.
Reach for it
- Packaging, film, foil and printed sheets
- Paper, card, fabric swatches and flat-lays
- Product photographed on a lightbox or seamless backdrop
- A pale product against a pale background
Leave it off
- People, portraits and headshots
- Hair, fur and pets
- Plants, flowers and foliage
- Glass, smoke and anything translucent
# multipart endpoints: /remove, /mask, /smart-crop, /studio-shot
curl -X POST "https://useknockout--api.modal.run/remove" \
-H "Authorization: Bearer $TOKEN" \
-F "file=@packaging.jpg" \
-F "engine=product-v1" \
-o cutout.png
# /remove-url takes it in the JSON body instead
curl -X POST "https://useknockout--api.modal.run/remove-url" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com/packaging.jpg","engine":"product-v1"}' \
-o cutout.pngAPI v0.13.0
Two opt-in detection-quality parameters for product photography, and a transparency bug fix. Defaults are byte-identical to before.
- Added
New detect parameter on POST /remove, /remove-url, /smart-crop and /studio-shot. Values are standard (default) and high_recall. High recall runs a second model pass and unions the masks, recovering product regions that a single pass misses on low-contrast shots such as a pale product on a pale surface. It only ever adds to the mask. Latency roughly doubles, and it requires a paid plan: free-tier requests get a 402.
- Added
New decontaminate parameter (boolean, default false) on the same four endpoints, available on every tier. It re-classifies pixels near the mask edge using per-image color models, removing background the model kept, like the strip of base paper a product sits on or lightbox rig fragments. One trade-off to know: it can trim the dark underside edge of stacked products, and it helps least on white-on-white shots. For flat e-commerce product shots we recommend detect=high_recall plus decontaminate=true together.
- Fixed
POST /studio-shot with transparent=true was halving alpha values on semi-transparent edge pixels, making cutout edges twice as faint as they should be. Edges now come back at correct opacity.
- Fixed
POST /remove-url now validates edge and detect values before fetching the source URL, so an invalid value returns 400 immediately without downloading your image.
Teams
Invite developers to your account without sharing your login or your billing.
- Added
Team members. Invite a developer or admin by email from the new Team page in the dashboard. Developers can create and revoke API keys on your plan; admins can also manage members. Billing stays visible to the account owner only.
- Added
Keys created by a team member bill to the account owner and appear in the owner's key list, with the creator recorded on the key. Invites are single-use links valid for 7 days, sent by email or shareable directly.
Dashboard
Usage reporting rebuilt around what an operations team actually checks, plus one metric correction worth reading if you track latency.
- Fixed
Cold starts were being reported as warm calls. The dashboard classified anything under 30 seconds as a warm request, so a typical 4-8 second cold start was counted as normal and the latency tile could read "no cold starts" directly above a multi-second median. The threshold is now 2 seconds and cold starts are reported as a labelled count and percentage. If your latency tile looks worse today, the number did not change: the labelling did.
- Added
Time range selector on Overview: 24 hours, 7 days, 30 days, or month to date. Every figure, the chart and the endpoint table follow the selection, and each metric shows a change against the equal-length preceding window.
- Added
Spend alerts. Set a monthly budget on the Billing page and we email you once when estimated spend passes it. This notifies, it does not block calls.
- Added
Per-key spend in dollars on the Usage page, so multi-client accounts can attribute cost per API key, plus a statement preview whose line items mirror the three billing meters.
- Fixed
Accounts above 5,000 calls in a month saw understated totals: figures were computed from a capped sample rather than the full month. Call counts and quota are now exact at any volume, and where a breakdown still comes from a sample the page says so.
- Fixed
A failed database read used to render as "no calls yet, $0.00 spend", indistinguishable from genuinely zero usage. Load failures now say so explicitly.
API v0.12.0
Cleaner cutout edges, parameter parity on /remove-url, and one range correction.
- Added
New edge parameter on POST /remove and POST /remove-url. Values are soft (default) and hard. Hard commits partially transparent edge pixels for a crisper cut on products and objects; keep soft for hair and fur, where hardening makes wispy strands look crunchy. Default output is unchanged.
- Added
POST /remove-url now accepts the same options as multipart /remove: quality, max_dim, width, height, despill, watermark, watermark_opacity, preset and edge, all in the JSON body.
- Changed
Free-tier calls to /remove-url that include despill, watermark or preset now return 402 instead of silently ignoring those fields. No SDK sends them today, so this should affect nobody, but it is a behavior change.
- Changed
POST /headshot bg_blur accepts an intensity from 2 to 100 as well as true/false. Note that the value 1 remains a legacy alias for true, so the intensity scale starts at 2.
- Fixed
POST /video/remove smoothing is now clamped to 95. At exactly 100 the temporal filter reused the first frame's mask for the whole clip, producing a frozen matte rather than maximum smoothing. Requests sending 96-100 now behave as 95. Lower the value for fast-moving subjects.
Site and playground
- Added
Live demo key on the playground: reveal a working token and run a real request without signing up.
- Fixed
API key management was unreachable on phones. The dashboard navigation was desktop-only, so there was no route to the keys, usage or overview pages below 1024px. A mobile navigation drawer now covers every dashboard page.
API v0.11.0
- Added
Video background removal: POST /video/remove with asynchronous jobs polled at GET /jobs/{job_id}. Real alpha channel on prores4444 and webm.
- Added
Billing transparency in the dashboard: exact spend derived from recorded billing units rather than an estimate.
API v0.10.0
- Added
POST /collage for multi-image composition.
- Changed
Endpoint reference refreshed across the docs, including Real-ESRGAN defaults, studio-shot parameters and automatic EXIF orientation correction.
Knockout Plus
- Added
Knockout Plus at $10/month including 250 images, then $0.02 per image. Adds layered PSD export, saved presets, edge despill and custom watermarks.
- Added
Restricted API keys: scope a token to specific endpoints, recommended for production.
Versioning and deprecation
Endpoints are additive by default. New parameters carry a default that preserves existing output, so an integration that ignores them keeps working unchanged.
A breaking change means removing an endpoint or parameter, changing a default in a way that alters output, or narrowing an accepted range. We announce those here, and give at least 30 days notice before they take effect on paid tiers.
Fixes that correct wrong behavior ship immediately and are tagged Fixed. The smoothing clamp in v0.12.0 is an example: values above 95 produced a frozen matte, so the range was corrected rather than preserved.
Questions about a change, or need longer notice for a migration? Email hi@useknockout.com.