Cost per approved ad image: divide usage.cost by what you keep
Cost per image is not what you pay per approved image. Sum usage.cost over your batches, divide by images kept, and see which model earns its price.

Cost per approved image is total usage.cost divided by the number of images you kept, and it can rank models differently from the price list. Say a model costs $0.04 per image and gives one keeper in two: that is $0.08 per approved image. A $0.06 model with three keepers in four also lands at $0.08. Only your own review counts decide it.
The Image API docs say cost is the USD amount billed to your wallet, and failed or cancelled generations are not billed, so failures do not enter the sum.
What do I need to log?
For each call, three things: the model id, usage.cost from the response and how many of the returned images a reviewer approved. Token counts are always 0 in v1, so ignore them. The numbers below are made up to show the arithmetic, not Sume prices.
What does the calculation look like?
Group the rows by model, add costs and kept images, and divide. Skip any model with no keepers rather than dividing by zero.
from collections import defaultdict
rows = [ # model, usage.cost billed, images returned, images kept
("model-a", 0.16, 4, 2),
("model-a", 0.16, 4, 1),
("model-b", 0.24, 4, 3),
("model-b", 0.24, 4, 3),
]
spend, kept, made = defaultdict(float), defaultdict(int), defaultdict(int)
for model, cost, n, k in rows:
spend[model] += cost
kept[model] += k
made[model] += n
for model in sorted(spend):
if kept[model] == 0:
print(model, "no keepers")
continue
per_kept = spend[model] / kept[model]
rate = kept[model] / made[model]
print(f"{model}: ${per_kept:.3f} per approved, {rate:.0%} kept")How big a sample is enough?
Twenty or so images per model is a starting point, not a proof. Keep the prompt set fixed across models and have the same person review, otherwise you are measuring the reviewer.
Where can I cross-check the spend?
The usage ledger lists reserved, captured and refunded rows, and GET /v1/usage accepts a job_id filter, so you can match your own sum to the wallet for any single job.
Sources
Related posts
More in Pricing
- Cost per keeper AI video clip: retakes and failed jobs
One usable AI clip costs the clip price divided by your keep rate: at 25 percent, a $0.75 clip costs $3.00 per keeper. Includes a Python function.
- Cost to render a 30-minute video on Sume: a $3.00 ceiling
Sume Timeline reserves $0.10 per output minute and caps a render at 1,800 seconds, so 30 minutes reserves at most $3.00. Length table and the free plan call.
- A daily 15-second AI video for 30 days: monthly cost
Posting one 15-second AI video a day for 30 days is 450 generated seconds: $5.63 on Grok Imagine Video 1.5, $56.25 on Wan 3.0 720p, $94.50 on Kling 3 audio on.
- Does a bigger Sume plan make each video cheaper? Rates vs concurrency
Sume bills usage at each model's published rate on every plan. Pro, Startup and Scale differ in monthly price and concurrency: 4, 8 and 20 jobs, Free allows 1.
Written by Sume