Monthly AI media budget calculator in Python, from live Sume prices
Build a monthly budget for images and voiceovers by reading list prices from the Sume image and TTS router catalogs, then applying list x 1.25 and the 5.5% fee.

A monthly budget calculator for AI media is a few lines of code if you read the prices instead of copying them into a spreadsheet. Sume publishes a catalog per router: GET /v1/image-router/models, GET /v1/tts-router/models and GET /v1/video-router/models. Each row carries a pricing object with the vendor list price in USD micros, and the catalog multiplies that by 1.25.
Sume prices every job at the vendor list price × 1.25, then adds a 5.5% fee on that result, so $1.00 of list becomes $1.31875 (how the formula works). The tables below show both the catalog price (list × 1.25) and the all-in figure with the fee.
Where each price lives
The three catalogs name the unit differently, so a calculator needs one lookup per unit.
| Router | Pricing field | Unit |
|---|---|---|
| image-router | list_usd_micros_per_image | one image |
| tts-router | list_usd_micros_per_character | one character |
| video-router | list_usd_micros_per_second or list_usd_micros_per_second_by_resolution | one second of output (Seedance models use list_usd_micros_per_1000_video_tokens) |
The calculator
This script prices one month: 300 Ideogram 4.5 images (the catalog row is the medium quality, $0.06 list) and 40 voiceovers of 600 characters on Sonic 3.6. It needs SUME_API_KEY in the environment.
The result has to be multiplied by the margin only once, at the end, because both lists are in micros of dollars.
import os
import requests
MARGIN = 1.25 * 1.055 # list x 1.25, then the 5.5% fee
HEADERS = {"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"}
def models(router):
url = f"https://api.sume.com/v1/{router}/models"
r = requests.get(url, headers=HEADERS, timeout=30)
r.raise_for_status()
return {m["id"]: m["pricing"] for m in r.json()["data"]["models"]}
def main():
image = models("image-router")["ideogram-v4.5"]
voice = models("tts-router")["sonic-3.6"]
images = 300 * image["list_usd_micros_per_image"]
voice_chars = 40 * 600 * voice["list_usd_micros_per_character"]
total = (images + voice_chars) * MARGIN / 1_000_000
print(f"300 images + 40 voiceovers: ${total:,.2f}")
main()What it prints
With these inputs the list total is $18.91 (images $18.00, voice $0.91). With list × 1.25 it is $23.64, and with the 5.5% fee it is $24.94. Change the two multipliers in the script to budget other volumes, or swap ideogram-v4.5 for any id the image catalog returns.
Keep a margin for retries
A budget built from list prices assumes every job succeeds once. Add the number of takes you expect to discard: if you regenerate one image in three, multiply the image line by 1.5 before you apply the margin.
Sources
Related posts
More in Pricing
- Q4 AI asset budget: an October ramp, November peak and December tail
A three-month plan with a November peak: images, voiceovers and 5-second clips cost about $49.79 for the quarter on Sume. The month-by-month table.
- Read the live STT rate from GET /v1/catalog before you price a batch
Do not hard-code $0.01 a minute. GET /v1/catalog lists sume/stt-1.0 in model_pricing with the price and unit, and the docs point there for live rates.
- Render a 20-minute Reel in one Timeline call: 1200 seconds, $2.00
Reels run up to 20 minutes, Timeline up to 1800 seconds. How to declare 1200 seconds, what chunked rendering does past 12 slots, and the math at $0.10 a minute.
- Menu refresh, 30 dishes: a dish card and a 5-second clip each on Sume
A seasonal menu of 30 dishes with one Ideogram 4.5 dish card and one 5-second Wan 3.0 clip each: $11.85 at 480p, $21.15 at 720p, plus one $0.125 music bed.
Written by Sume