Quick Fix

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

Endpoints

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% padding
  • feather=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 Swin2SR
  • scale=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 key
  • 402 — Plan limit reached (buy credits or upgrade)
  • 403 — API access not enabled on your plan
  • 413 — File too large (> 20 MB)
  • 415 — Unsupported Content-Type
  • 429 — Rate limit exceeded
  • 504 — 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.