Cost per correct poster: Ideogram 4.5, GPT Image 2.5, Nano Banana 2.1
Price per call hides retries. Count images with every word right, divide the Sume usage.cost sum by that count, and compare three new models. Script included.

The cheapest model per call is not the cheapest per poster you can publish. Run the same text-heavy prompt several times on each model, count the images where every word is right, and divide the summed usage.cost by that count. This post gives the method and a script for Ideogram 4.5, GPT Image 2.5 and Nano Banana 2.1 on Sume, and reports no results, because I have not run it.
The list prices you start from
These are vendor list prices from the pages I read. They are not Sume's prices, which come from each model's endpoint record. They tell you only the order of magnitude and which pricing axis each vendor uses.
| Model | Vendor price unit | Figures read |
|---|---|---|
| Ideogram 4.5 | per image by quality | $0.03, $0.06, $0.22; size does not change it |
| GPT Image 2.5 | per million tokens | $8 input and $30 output per million |
| Nano Banana 2.1 | per image by size | $0.0336 at 1K, $0.0756 at 4K |
Define correct before you run
Fix the pass rule up front: every word spelled right, no extra characters, the date in the right place. Write the exact strings into the prompt. A rule you decide after seeing the images drifts toward whatever the favorite model produced.
The script
This Python script runs five samples per model and prints the total billed cost from usage.cost. You then enter how many were correct. It handles only the 200 path, so a 202 stops the run, in which case use the job result flow instead.
import os
import requests
URL = "https://api.sume.com/v1/images"
HEAD = {"Authorization": "Bearer " + os.environ["SUME_API_KEY"]}
PROMPT = "Poster, portrait. Headline OPEN MIC NIGHT, subline Every Friday 8 PM, footer 12 Harbor Street. Flat colours."
MODELS = ["ideogram/ideogram-v4.5", "openai/gpt-image-2.5", "google/nano-banana-2.1"]
def main():
for model in MODELS:
total = 0.0
for i in range(5):
body = {"model": model, "prompt": PROMPT, "aspect_ratio": "3:4"}
r = requests.post(URL, headers=HEAD, json=body, timeout=60)
if r.status_code != 200:
raise SystemExit("%s status %s" % (model, r.status_code))
data = r.json()
total += data["usage"]["cost"]
print(model, i, data["data"][0]["url"])
print(model, "total cost", round(total, 4))
main()Read the result
For each model, cost per correct poster is the total cost divided by the number of passes. If a model gets zero passes, its cost per correct poster is undefined, not zero; say so rather than dividing. Repeat with a second prompt before you decide, since five samples is a small test.
Caveats
Quality settings change both price and pass rate. Set quality explicitly for GPT Image 2.5, because omitting it defaults to high, and for Ideogram the default is medium. Sume has no seed in v1, so runs are not repeatable; the sample count is your only control.
Write the result as one line per model:
- Samples run, passes, total
usage.cost. - Cost per pass, or undefined if there were none.
- The quality setting and aspect ratio used.
Sources
Related posts
More in Comparisons
- Creatify Free makes 2 video ads a month; two Sume clips cost $5.52+
Creatify's Free plan lists 10 credits, enough for up to 2 video ads or 20 image ads. Two 15-second Sume avatar clips are $5.52 on standard, $7.35 on plus.
- Creatify max video length: 2 min on Starter, 10 on Pro, vs Sume
Creatify's page caps Starter videos at 2 minutes and Pro at 10. Sume caps one avatar job at 60 seconds, so 10 minutes is ten jobs: $110.40 to $330.00.
- Day to night exterior photo: GPT Image 2.5 or Ideogram 4.5?
Turn a daytime building photo into twilight: Ideogram 4.5 keeps the source shape at $0.075; GPT Image 2.5 needs aspect_ratio auto, $0.0835 at high.
- Does Sume have a real-time avatar API? No, here is what it has instead
Sume has no live avatar session. It has async avatar jobs: create an avatar, render a talking video, or lip-sync a still to audio. Routes, limits and prices.
Written by Sume