Skip to content

Remove Background

AI-powered background removal with optional effects (blur, shadow, gradient, custom background).

API Endpoint

POST /api/v1/tools/remove-background

Processing: Asynchronous (returns 202, poll /api/v1/jobs/{jobId}/progress for status via SSE)

Model bundle: background-removal (4-5 GB)

Parameters

ParameterTypeRequiredDefaultDescription
filefileYes-Image file (multipart)
modelstringNo-AI model variant to use
backgroundTypestringNo"transparent"One of: transparent, color, gradient, blur, image
backgroundColorstringNo-Hex color for solid background
gradientColor1stringNo-First gradient color
gradientColor2stringNo-Second gradient color
gradientAnglenumberNo-Gradient angle in degrees
blurEnabledbooleanNo-Enable background blur effect
blurIntensitynumberNo-Blur intensity (0-100)
shadowEnabledbooleanNo-Enable drop shadow on subject
shadowOpacitynumberNo-Shadow opacity (0-100)
outputFormatstringNo-Output format: png, webp, or avif
edgeRefineintegerNo-Edge refinement level (0-3)
decontaminatebooleanNo-Remove color bleed from edges

Example Request

bash
curl -X POST http://localhost:13490/api/v1/tools/remove-background \
  -F "[email protected]" \
  -F 'settings={"backgroundType":"transparent","edgeRefine":2,"outputFormat":"png"}'

Response

Initial Response (202 Accepted)

json
{
  "jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "async": true
}

Progress (SSE at /api/v1/jobs/{jobId}/progress)

event: progress
data: {"phase":"processing","stage":"Removing background...","percent":50}

Final Result (via SSE)

json
{
  "phase": "complete",
  "percent": 100,
  "result": {
    "jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "downloadUrl": "/api/v1/download/{jobId}/photo_mask.png",
    "maskUrl": "/api/v1/download/{jobId}/photo_mask.png",
    "originalUrl": "/api/v1/download/{jobId}/photo_original.png",
    "originalSize": 245000,
    "processedSize": 180000,
    "filename": "photo.jpg",
    "model": "rembg"
  }
}

Effects Endpoint (Phase 2)

POST /api/v1/tools/remove-background/effects

Re-applies background effects without re-running the AI model. Uses cached mask and original from Phase 1.

Parameters

ParameterTypeRequiredDefaultDescription
settingsJSONYes-JSON with effect settings (see below)
backgroundImagefileNo-Custom background image (when backgroundType is image)

Settings JSON fields

FieldTypeRequiredDescription
jobIdstringYesJob ID from Phase 1
filenamestringYesOriginal filename from Phase 1
backgroundTypestringNotransparent, color, gradient, blur, image
backgroundColorstringNoHex color for solid background
gradientColor1stringNoFirst gradient color
gradientColor2stringNoSecond gradient color
gradientAnglenumberNoGradient angle in degrees
blurEnabledbooleanNoEnable background blur
blurIntensitynumberNoBlur intensity (0-100)
shadowEnabledbooleanNoEnable drop shadow
shadowOpacitynumberNoShadow opacity (0-100)
outputFormatstringNopng, webp, or avif

Example Request

bash
curl -X POST http://localhost:13490/api/v1/tools/remove-background/effects \
  -F 'settings={"jobId":"a1b2c3d4-...","filename":"photo.jpg","backgroundType":"color","backgroundColor":"#FF5500","outputFormat":"png"}'

Response (200 OK)

json
{
  "jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "downloadUrl": "/api/v1/download/{jobId}/photo_nobg.png",
  "processedSize": 195000
}

Notes

  • Requires the background-removal model bundle to be installed (4-5 GB).
  • Phase 1 caches the transparent mask and original image so that Phase 2 (effects) can re-apply different backgrounds instantly without re-running the AI model.
  • Supports HEIC/HEIF, RAW, TGA, PSD, EXR, and HDR input formats via automatic decoding.
  • EXIF rotation is auto-corrected before processing.