Video frames and reference ingest: no fixed price, a hold that settles

Sume bills video frames and reference ingest by Modal container seconds x list x 1.25 plus a fee, never above the hold. What to expect on the ledger and STT.

5 min readSume
All posts

Video frames, video inspect and reference ingest have no fixed per-job price on Sume. At submit each one reserves its Modal compute ceiling. When it finishes, Sume bills its own container seconds x Modal list x 1.25, plus the platform fee, and the bill is never more than the hold. A job that ran shorter than the ceiling settles lower, so the ledger ends below the reservation.

This is the opposite of the fixed-price jobs elsewhere in the catalog, where estimate and final charge are the same number. For these three, the right figure to budget is the ceiling, and the right figure to report is what the wallet debited after the job is final.

Estimate against final by route

The docs separate the compute bill from the transcript line.

How three media-read routes settle (docs read 2026-10-09)
RouteReserved at submitBilled at completionTranscript
video_framesModal compute ceilingContainer seconds x Modal list x 1.25, plus platform fee; never above the holdnone
video_inspectModal compute ceilingIts own container seconds x list x 1.25, plus fee; never above the holdOptional, $0.01 per audio minute; hint max 600 s; 1 minute reserved if omitted
reference ingestModal ceiling of the ingestWhat ran, capped by the holdSTT rate per ceil minute of the hint (max 300 s); settles to zero on silence or no speech

Transcript hints change the hold

For reference ingest the transcript is on by default for purpose: reference_remix and off for the other purposes. With speech.allow_billed_stt on, the read adds the STT rate to its reservation per ceil(minute) of the hint, and one minute when the hint is absent. A 240-second hint reserves 4 minutes x $0.01 = $0.04 for the transcript on top of the compute ceiling. If the track is silent, VAD finds no speech, or there is no audio track, the transcript charge settles to zero and the job returns a warning such as stt_skipped_silent.

Set the hint to the real length of the speech. Overstating it inflates the hold, and understating it leaves the transcript inaccurate.

Reading the ledger afterward

Use GET /v1/usage?job_id= and read debited_usd_micros once final is true. A hold that was not fully used does not show up as spend. Because the compute ceiling is not a published number in these docs, do not hard-code a per-job price; read the reserved amount on the first job of a batch, multiply by the number of jobs for a worst case, and compare it to the balance.

Some limits apply regardless of cost: reference ingest rejects sources longer than 300 seconds with source_too_long_for_reference_ingest, and video inspect accepts sources up to 1,800 seconds and 24 stills per call. A rejection happens before a paid run completes, so the usual failure path refunds the hold.

Budgeting a batch of reads

For a batch, run one job first and read its reserved amount from the ledger. That is the ceiling per job. Multiply by the number of jobs in the batch to get the worst-case hold, and compare it with the balance. Then read debited_usd_micros when the first job is final to see how much of the ceiling it actually used. If a typical read settles well under its ceiling, your real spend will be below the worst case, but keep the balance for the worst case so submits are not refused with a 402.

Sources

Related posts

More in Pricing

All Pricing posts

Written by Sume