What did one transcription job cost? GET /v1/usage by job_id

Read GET /v1/usage?job_id= and sum data.summary.debited_usd_micros to see what one Sume STT job really cost. Holds and refunds are not counted as spend.

4 min readSume
All posts

To see what one Sume transcription job cost, call GET https://api.sume.com/v1/usage?job_id=<job id> and read data.summary.debited_usd_micros. That field is captured spend in millionths of a US dollar, so 2,000 micros is $0.002. Ledger rows are in data.usage[]. Amounts that were only held, or were held and then refunded, do not count as debited. Source: the Sume API reference and the usage fold described in the public API docs, read 2026-10-06.

Why the debited number can differ from your estimate

At submit time Sume reserves an estimate. For STT 1.0 that estimate comes from duration_seconds at $0.01 per audio minute, prorated by the second, with a one-second minimum. If you leave the field out, the hold is one full minute ($0.01) even for a 6-second clip, and the capture follows the settled usage. Always compare the ledger, not the hold.

STT 1.0 at $0.01 per audio minute (Sume pricing in the video inspect docs, docs.sume.com), read 2026-10-06.
Clip lengthPer-second estimateMicros
2 s$0.000333333
6 s$0.0010001,000
12 s$0.0020002,000
60 s$0.01000010,000

Reading the ledger for a list of jobs

Run it for each job id after the batch finishes and total the result. Treat a missing summary as zero captured so far, not as an error.

import os, requests

API = "https://api.sume.com"
H = {"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"}


def job_cost_usd(job_id):
    r = requests.get(f"{API}/v1/usage", headers=H, params={"job_id": job_id}, timeout=30)
    r.raise_for_status()
    body = r.json()
    data = body.get("data", body)
    micros = (data.get("summary") or {}).get("debited_usd_micros", 0)
    return micros / 1_000_000


def batch_cost_usd(job_ids):
    return sum(job_cost_usd(j) for j in job_ids)

Standalone STT versus STT inside another job

A transcript that comes from transcribe: true on a video inspect job, or from the caption job, is billed inside that job. Query those job ids the same way. Do not expect a separate STT row to appear for them.

Sources

Related posts

More in Developers

All Developers posts

Written by Sume