Budget a week of Shorts before rendering: Timeline plan sum

Sume's unbilled Timeline plan returns billable minutes and an estimated cost. A Python script sums seven plans so you know the week's render cost first.

5 min readSume
All posts

Varied Shorts mean different lengths, and different lengths mean different bills. Sume's Timeline docs, read on October 5, 2026, price Timeline 1.0 at $0.10 per output minute, rounded up per job: the reserve is ceil(audio.duration_seconds / 60) minutes. A 61-second Short is two minutes. A 59-second Short is one.

The plan endpoint is unbilled

POST /v1/timeline-1.0/plan runs schema and Sume-host URL checks and the pure compiler. It returns object timeline_plan with duration_seconds, segment_count, billable_minutes and estimated_cost_usd_micros. It creates no job, reserves no credits and downloads no media. The docs add that a plan cannot predict short-source pad or loop warnings, so treat the figure as the estimate it is.

The Timeline documents must reference files already imported into your workspace on media.sume.com, because the plan checks that every URL is Sume-hosted.

Sum a week of plans

Put one Timeline document per Short in a folder, then run this. It prints each Short's minutes and the total in dollars. Set SUME_API_BASE and SUME_API_KEY first.

import glob, json, os
import requests

BASE = os.environ["SUME_API_BASE"].rstrip("/")
HEAD = {"Authorization": "Bearer " + os.environ["SUME_API_KEY"]}

total = 0
for path in sorted(glob.glob("shorts/*.json")):
    with open(path) as f:
        doc = json.load(f)
    r = requests.post(f"{BASE}/v1/timeline-1.0/plan", json=doc, headers=HEAD, timeout=30)
    r.raise_for_status()
    body = r.json()
    plan = body.get("data", body)
    micros = plan["estimated_cost_usd_micros"]
    total += micros
    print(path, plan["duration_seconds"], "s", plan["billable_minutes"], "min", micros / 1e6, "USD")
print("week total USD", total / 1e6)

Why vary lengths on purpose

Seven Shorts of exactly 30 seconds is $0.70 of Timeline cost: seven jobs, one minute each. Mix in a 15-second teaser, a 45-second explainer and a 100-second story and the figure changes by a few cents, which is nothing next to the effect on how repetitive your channel looks.

YouTube's monetization page, read the same day, targets mass-produced content from generic templates, and equal length, equal cuts and equal pacing are what a template looks like from the outside. The plan summary also reports segment_count, so you can check that cut counts differ too.

Because the plan is free, run it on every draft and keep the output with the Short. It is a cheap record of what you intended to ship.

Reading the output

If a Short plans at two billable minutes when you wanted one, the spine is a few seconds too long. Trim the narration by a sentence and plan again, since planning is free. That small edit often improves the Short anyway, because the last sentence of a long Short is usually the weakest.

The plan also cannot see media warnings such as padded short sources. Treat the estimate as a ceiling for Timeline cost and confirm the live rate in GET /v1/catalog, as the docs advise.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume