Media tools

Remove background API: transparent PNG cutouts with Sume RMBG 1.0

Send a public HTTPS image URL to POST /v1/rmbg-1.0/remove and get back a PNG with an alpha channel, at one price per image whatever its size.

4 min readSume
All posts

To remove the background from an image with the Sume API, send a public HTTPS image_url to POST /v1/rmbg-1.0/remove. Sume RMBG 1.0 (sume/rmbg-1.0) runs it as a job, and the completed result is a Sume-hosted PNG with an alpha channel, so the removed background is transparent.

RMBG 1.0 is specified in the OpenAPI document behind the Sume API reference. The API reference and Core concepts docs pages cover jobs, results, and billing. All were read on 2026-09-26.

How do I call the remove background API?

Send JSON with the image's URL. image_url is the only required field. There is no model field: Sume selects the model. The same body also works at POST /v1/models/sume/rmbg-1.0/runs.

Common RMBG 1.0 request fields. The full schema is in the Sume API reference, read 2026-09-26.
FieldRequiredWhat it does
image_urlYesPublic HTTPS image URL to remove the background from.
modeNoasync (the default), sync, subscribe, or webhook.
wait_timeout_secondsNoBlocking wait for sync or subscribe, 0–30 seconds.
webhook_urlNoPublic HTTPS callback URL, up to 2,048 characters.
metadataNoYour own object, stored with the job request.
curl -X POST https://api.sume.com/v1/rmbg-1.0/remove \
  -H "Authorization: Bearer $SUME_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: rmbg-portrait-001" \
  -d '{
    "image_url": "https://example.com/inputs/portrait.png",
    "mode": "async"
  }'

What does the result contain?

A completed job exposes PNG artifacts with alpha, mirrored to Sume. Fetch GET /v1/jobs/:id/result once result_ready is true; until then it answers 409 job_not_completed. Video API media inputs and outputs explains the same URL-in, Sume-URL-out pattern for other jobs.

  • Each artifact has an opaque id, a type, a url under media.sume.com, and a content_type. width, height, and size_bytes can also be set.
  • The artifact path is opaque. Store the URL, but do not parse it for ids.

What happens if I cut out an image that is already transparent?

When the input already has substantial fully transparent pixels, as in a typical re-cutout, Sume first flattens it onto mid-gray #808080 so the edges stay clean. It is still one billed removal. Opaque inputs are unchanged.

Should I wait for the cutout or poll for it?

Every mode returns the job id in the first response.

  • sync or subscribe holds the request for up to wait_timeout_seconds. If the job is not done by then, the response is still 2xx with the current job state and polling URLs: poll status_url rather than resubmitting.
  • async returns at once with status_url, result_url, events_url, and cancel_url.
  • webhook returns at once and sends a signed callback when the job completes, fails, or is canceled. There are no progress callbacks.
  • POST /v1/jobs/:id/cancel works before generation starts. After that it returns 409 job_generation_already_started.

How much does background removal cost?

API pricing lists background removal at $0.0225 per image, plus a 5.5% agent fee by default. The pricing basis in the public catalog, GET /v1/catalog, adds that the price does not vary by image size.

Sume reserves the estimate when you submit, captures it when the job succeeds, and refunds a job that fails or is canceled before capture. If the balance cannot cover the estimate, the submit returns 402 and no job starts.

What does RMBG 1.0 not do?

It works on one image you already have. Generating a new image is a different endpoint, covered in Image generation API with reference images. Other limits:

  • No model choice. Model ids are not accepted in the request.
  • No output format option. The result is a PNG with alpha.
  • One image per job: image_url is a single URL.
  • No file bytes. Sume fetches the URL, and localhost, private-network, non-HTTPS, and non-image responses are rejected before generation submission.
  • No progress callbacks. Webhooks fire only on job.completed, job.failed, and job.canceled.

Sources

Related posts

Written by Sume