POST /remove and Poof detects that it is a video, accepts it as a job and processes every frame in the background. Poll the job, then download the finished file from its result_url.
The matting model is the one used for images, with a motion-aware temporal stabiliser so the edges do not flicker from frame to frame. It works best on a clearly separated subject: people, products, pets, talking heads and social clips.
How it works
- Submit the video with
file(upload, up to 100 MB) orurl(publichttpslink, up to 500 MB). The response is202 Acceptedwith a job that already tells you the clip’s duration and the credits charged. - Poll
GET /jobs/{id}every 2 to 5 seconds untilstatusiscompletedorfailed. Polling is free and not rate limited. - Download
result_url. It is a direct CDN link that needs no API key and stays valid for 24 hours (expires_at).
poofbg 0.3.0 or later and @poof-bg/js 1.2.0 or later. The API reference has the same flow with plain requests and fetch.
Pick an output
The output formats table lists the codec, alpha and audio for every
format and channels combination.
Limits
Use
size to make the output smaller. For video it caps the longest side: preview 640 px, medium 1280 px, hd 1920 px (1080p), and full (the default) keeps the source resolution up to 4096 px. The aspect ratio is kept and nothing is upscaled. 4K jobs take about 1.5 times as long as 1080p, so pass size=hd when you do not need 4K. 4K files are large: send them by url (up to 500 MB) rather than as an upload. crop, padding, width, height and fit are image-only and are rejected for video.
Credits
The duration is rounded up to the next whole second, so the minimum is 5 credits. A 12.4 second clip at 29.97 fps costs 65 credits. The charge does not depend on
format, channels, size or resolution: 4K costs the same as 1080p. The free plan’s 100 monthly credits cover 20 seconds of video.
Credits are charged when the job is accepted, and the 202 response shows the exact amount. A failed job is refunded automatically, and rejected requests (4xx) are never billed.
Processing time and queueing
Jobs run on a shared GPU pool and you can submit several at once. When the pool is busy a job waits inqueued with progress at 0 before it starts, so allow for that in your timeouts: the SDK helpers wait up to 10 minutes by default. See Queueing.