API Docs
Simple synchronous HTTP API for background removal and upscaling. Available on Pro and Business plans.
Authentication
Every request needs a Bearer token in the Authorization header. Generate one in your API keys dashboard.
curl -H "Authorization: Bearer qf_live_..." \
--data-binary @photo.jpg \
-H "Content-Type: image/jpeg" \
https://46-224-45-79.sslip.io/api/v1/remove-bg \
--output output.pngEndpoints
POST /api/v1/remove-bg — Remove background, return transparent PNG.
POST /api/v1/upscale — 2× or 4× upscale, return PNG.
POST /api/v1/remove-bg
Body: binary image bytes (not multipart).
Content-Type: image/jpeg, image/png, or image/webp. Max 20 MB.
Query parameters (all optional):
hair=1— use the BiRefNet-matting model for fine hair/fur edges (slower)auto_crop=1— crop output tightly to the subject with 5% paddingfeather=0.8— edge softness in px (0 = razor sharp, 3 = very soft)
Response: 200 OK with image/png body. Job id returned in X-Quickfix-Job-Id header.
POST /api/v1/upscale
Body: binary image bytes.
Query parameters:
scale=2(default) — 2× upscale using lightweight Swin2SRscale=4— 4× upscale using BSRGAN-trained Swin2SR (slower)
Response: 200 OK with image/png body.
Rate limits
- Pro: 60 requests/minute
- Business: 600 requests/minute
Over the limit returns 429 Too Many Requests.
Errors
401— Missing or invalid API key402— Plan limit reached (buy credits or upgrade)403— API access not enabled on your plan413— File too large (> 20 MB)415— UnsupportedContent-Type429— Rate limit exceeded504— Processing took longer than the API's wait window
Examples
Node.js
import { readFile, writeFile } from "node:fs/promises";
const body = await readFile("photo.jpg");
const res = await fetch("https://46-224-45-79.sslip.io/api/v1/remove-bg?hair=1", {
method: "POST",
headers: {
"authorization": "Bearer qf_live_...",
"content-type": "image/jpeg",
},
body,
});
const out = Buffer.from(await res.arrayBuffer());
await writeFile("output.png", out);Python
import requests
with open("photo.jpg", "rb") as f:
body = f.read()
r = requests.post(
"https://46-224-45-79.sslip.io/api/v1/remove-bg",
params={"hair": 1},
headers={
"authorization": "Bearer qf_live_...",
"content-type": "image/jpeg",
},
data=body,
)
with open("output.png", "wb") as f:
f.write(r.content)Webhooks (Business)
Webhook-based async processing is on the roadmap — contact support if you need it now.