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.
- Q4 budget for 10 AI videos a week: 13 weeks of Wan 3.0 on Sume
Thirteen weeks of ten 15-second Wan 3.0 clips cost $244.40 at 720p on Sume, which is the Pro plan's cost for the quarter. 480p and 1080p, by plan.
- 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.
- Receipt for 10 finished 15-second videos a week on Sume: $2.44 each
A 15-second video with a Nano Banana 2 still, Wan 3.0 720p clip, narration, music, Timeline and captions costs $2.44 on Sume. $24.40 a week for ten.
Written by Sume