How a job is measured
One number decides what a request costs: its GB-seconds. It is the size of the files a job reads and writes, multiplied by the seconds the job takes. The rate is USD 0.01332 per GB-second.
The formula
gb_sec = (input_size_gb + output_size_gb) × time_sec
amount_usd = gb_sec × 0.01332| input_size_gb | The total size of the task’s inputs. A GB is 1,073,741,824 bytes. |
|---|---|
| output_size_gb | The total size of the files the task wrote. For a probe, the size of the JSON it returned. |
| time_sec | Processing seconds: the time FFmpeg or ffprobe itself ran, counted on a reference machine, so a job costs the same whichever machine runs it. Downloading the inputs and uploading the outputs is not counted. |
| gb_sec | The product, kept to nine decimal places. It is not rounded further. |
| amount_usd | gb_sec at your rate, kept to nine decimal places. |
An example
A job reads a 1.25 GB recording, writes a 0.375 GB file, and takes 40 processing seconds. Its response carries these figures:
{
"usage": {
"time_sec": 40,
"input_size_gb": 1.25,
"output_size_gb": 0.375,
"gb_sec": 65
},
"amount_usd": 0.8658
}What is charged
| Charged | A processing or probe request that succeeds. An async job is charged when it completes, even if its webhook can’t be delivered. |
|---|---|
| Never charged | A request that fails, is rejected or rate-limited, times out or is cancelled. File, directory, job and usage calls. |
Rounding and invoices
- Each request is metered to nine decimal places. Nothing is rounded up to a minimum.
- Only the invoice rounds, to the cent.
- You are billed once a month by card, and sooner whenever unbilled usage reaches USD 50. A request belongs to the month in which it completed, in UTC.
Where to see it
- On every charged response: the
usageblock andamount_usd. - In the console: usage by day, month and key.
- By API: GET /account/usage returns one row per charged request, as CSV or JSON.