Reel at 181 seconds: Timeline bills four minutes, keep it at 180

One second over 180 turns a $0.30 Timeline render into $0.40 and a Reel that may not fit. How the ceil(minute) rule works and how to cap it with the plan call.

5 min readSume
All posts

A 181-second Reel render bills as four Timeline minutes, $0.40, while 180 seconds bills as three, $0.30. The rule is ceil(output minute) at $0.10 per minute, so the cost steps up at every full minute boundary, not per second. For Reels the more important problem is the length itself: Metricool (read 2026-10-03) reports that Instagram's 2026 Reels guide covers lengths up to 3 minutes, so 181 seconds is also past the range that guide describes.

Where the extra second comes from

Timeline output length is audio.duration_seconds. If you set it from a voice file, a voice that runs 180.4 seconds gives a 180.4-second render, which still bills four minutes because 180.4 divided by 60 rounds up to 4. Fades and soundtrack tails are inside that length, since fade_out_seconds and the soundtrack fade must fit within the spine, so adding an outro fade does not extend the render. Adding a final slot after the spine does, if you also lengthen the spine to match.

Plan first, render second

POST /v1/timeline-1.0/plan is unbilled, needs no Idempotency-Key, and does not download media. It returns duration_seconds, segment_count, billable_minutes and estimated_cost_usd_micros, which is enough to stop a 181-second job before it is created. A plan cannot predict warnings about padded or looped short sources.

import os, sys, requests

body = {
    "audio": {"mode": "silence", "duration_seconds": 181},
    "video": [{
        "source_url": "https://media.sume.com/artifacts/artf_demo/a.mp4",
        "start": 0,
        "duration": 181,
    }],
}
r = requests.post(
    "https://api.sume.com/v1/timeline-1.0/plan",
    headers={"Authorization": "Bearer " + os.environ["SUME_API_KEY"]},
    json=body,
)
r.raise_for_status()
plan = r.json()
print(plan["billable_minutes"], plan["estimated_cost_usd_micros"])
if plan["duration_seconds"] > 180:
    sys.exit("over 180 s: trim the last slot before rendering")

Fixing an over-long cut

Shorten the spine rather than the pictures: lower audio.duration_seconds to 180 and set audio.source_in if you need to drop the first moments of a single voice file. Slot coverage may trail the spine by at most 0.5 seconds, so a last slot that ends at 180 is valid. If the voice itself is too long, re-record or regenerate that segment slightly faster, or trim a pause, rather than cutting words from the middle of a take.

What Sume does not do

The plan call does not stop you from rendering past 3 minutes, and Sume does not read Instagram's limit for your account. The plan call is the guard you build yourself, as in the snippet above, and the cost table for the other lengths is in how long a Reel can be.

Sources

Related posts

More in Pricing

All Pricing posts

Written by Sume