Cost to remove backgrounds and upscale 500 product photos by API
Sume bills background removal at $0.0225 an image and upscale at $0.20, both flat. 500 photos through both steps cost $111.25; the table and a submit loop.

Cutting out and upscaling a product photo on Sume costs $0.2225 per image: $0.0225 for the background removal and $0.20 for the upscale. Both prices are flat per image, so 100 photos cost $22.25, 500 cost $111.25 and 1,000 cost $222.50, and the order of the two steps does not change the total. The amounts come from Sume's rate card at /pricing/api.
What does change is how long the batch takes. A catalog of 500 photos is 1,000 paid jobs, and your plan's concurrency decides how fast they drain. This post gives the cost table, the part of the bill that is easy to miscount, and a loop that submits the first step without exceeding your balance.
What are the two prices?
Background removal (POST /v1/rmbg-1.0/remove) is $0.0225 per image: Sume's catalog lists the basis as the provider's $0.018 per image at the standard margin. It returns a PNG with alpha. Image upscale (POST /v1/image-upscale-1.0/upscale) is $0.20 per image, described as reserving about 16 megapixels of generative output, with upscale_factor defaulting to 2 and output_format defaulting to png.
Because the upscale price is flat, there is no cheaper tier for a small input and no surcharge for a larger factor in the published rate. The catalog band for each is a single number: 3 cents for removal and 20 cents for upscale, at minimum, estimate and maximum alike.
What does a catalog cost?
Each row multiplies the photo count by the flat rates. The totals assume every photo goes through both steps once and no job fails.
| Photos | Remove background ($0.0225) | Upscale ($0.20) | Both steps |
|---|---|---|---|
| 10 | $0.225 | $2.00 | $2.225 |
| 100 | $2.25 | $20.00 | $22.25 |
| 500 | $11.25 | $100.00 | $111.25 |
| 1,000 | $22.50 | $200.00 | $222.50 |
| 5,000 | $112.50 | $1,000.00 | $1,112.50 |
What is easy to miscount?
Three things move the real bill away from the table. First, retries: a failed job releases its reservation, but a job you resubmit by hand is a new paid job, so send an Idempotency-Key per photo and reuse it only for an exact retry. Second, the upscale line dominates, at 90 percent of the per-photo price, so skipping the upscale for photos that are already large enough saves more than any other choice. Third, an input that already has transparent pixels is flattened onto mid-gray before removal; the docs state this is still one billed removal, so a re-cutout of an old PNG costs the same $0.0225.
None of this depends on step order. Whether you cut out first and upscale the PNG, or upscale first and cut out, the rate card gives the same $0.2225.
- Filter out photos that are already large enough before the upscale step.
- Use one idempotency key per photo and step, for example
rmbg-sku-1042. - Reserve before you submit: the amount held is the flat price, so multiply count by rate.
- Check
GET /v1/usage?job_id=...after a run to see captured, held and refunded amounts.
What if only some photos need the upscale?
Run the numbers on your own mix before you commit. Say 500 photos all need a cutout but only 300 are small enough to need an upscale: that is 500 x $0.0225 = $11.25 plus 300 x $0.20 = $60.00, so $71.25 instead of $111.25, a saving of $40. A catalog of 1,500 photos, three angles for each of 500 products, costs $33.75 for the cutouts and $300.00 for the upscales if every image is enlarged, which is $333.75 in total.
Because every price is flat, you can total a run before it starts and compare the figure with GET /v1/balance. If the wallet is short, the cheapest saving is to drop the upscale step for images that already meet your marketplace's minimum size, not to lower quality.
How long will 1,000 jobs take?
Concurrency sets the pace. The docs list Free at 1 concurrent job, Pro at 4, Startup at 8 and Scale at 20, each with a queue of five times that, never less than three. A Pro workspace holds 24 accepted jobs at once, so a script that fires 1,000 submits can hit 429 queue_full once about 24 are waiting or running. Wait for jobs to finish, then continue with the same idempotency key. The Generation admission docs describe that pattern; the loop below stops at the first refusal so you can retry from where it stopped.
Before you start, check the balance against the full figure for both steps, not just the first. A run that stops halfway on a 402 leaves cut-out files you paid for and no upscales, which is a fine place to resume from but a poor place to discover that the wallet was short. Keep the list of finished image ids so a restart skips them rather than paying twice.
import os, requests
H = {"Authorization": f"Bearer {os.environ['SUME_API_KEY']}",
"Content-Type": "application/json"}
photos = ["https://example.com/p1.jpg", "https://example.com/p2.jpg"]
for i, url in enumerate(photos):
r = requests.post(
"https://api.sume.com/v1/rmbg-1.0/remove",
headers={**H, "Idempotency-Key": f"rmbg-photo-{i}"},
json={"image_url": url, "mode": "async"},
timeout=60,
)
print(i, r.status_code)
if r.status_code in (402, 429):
print(r.json()["error"]["code"], "stop and retry later")
break
r.raise_for_status()Sources
Related posts
More in Pricing
- Does AI video API billing round up? Sume's ceil rules per endpoint
A 5.2 s clip is billed as 6 s. Which Sume endpoints round seconds or minutes up, which prorate, and worked examples from the published rates.
- H3 Max Recast 768p or 1080p: draft cheap, publish in HD
Sume bills H3 Max Recast at $0.375 a second at 768p and $0.5625 at 1080p. Budget a 768p test pass and one 1080p final, and what each plan costs.
- H3 Max Recast 768p vs 1080p: price per second and per clip
fal lists H3 Max Recast at $0.30 a second for 768p and $0.45 for 1080p. On Sume the same two tiers cost $0.375 and $0.5625 a second; per-clip math for 5-30 s.
- Ideogram 4 self-hosting: $300 a month licence vs per-image API
Ideogram's self-serve licence is $300 a month for up to 10,000 images, before GPU time. Where it beats a per-image API such as Sume's, and where it does not.
Written by Sume