# AI video cost per usable finished second

Version 2026-10-16-v3 · 16 October 2026. Companion to https://benpicks.com/guides/how-to-calculate-ai-video-generation-cost/#video-cost-calculator

## The buyer question

What is the cost of the generated footage that survives review and editing? Reuse the existing generated-video cost guide's numerator/denominator and its explicit separation from avatar lessons and repurposing. The tool supplements the existing guide; its numerical examples are separate from vendor measurements.

Six original hypothetical briefs are editable: social ad, product loops, tutorial B-roll, two formats, two language versions, and a stopped job with no approved output. None is an observed provider test or a real customer's record. Workloads, acceptance, review times, editing and extra costs are invented; no performance benchmark or quality ranking is implied.

## Equations and units

For homogeneous clips, N = required usable clips (forecast) or entered approved clips (record). Each billed attempt generates d seconds; each approved clip contributes u useful seconds, with 0≤u≤d. Each attempt is one charged output, not a multi-output request. For mixed durations or sets of different clip types, calculate separate rows and add costs and *unique* useful seconds; do not sum alternate versions as one unique film duration. Two formats/languages in our examples deliberately assume separate footage and count all deliverable seconds, not unique narrative content.

Forecast: p = assumed acceptance percentage /100; budget attempts A=ceil(N/p). This rounding is our simple budget convention. N/p is a mean under strong identical independent-trial assumptions, not a high-confidence production budget. We do not calculate a probability, guarantee delivery, or measure p for a model. Sensitivity applies the same p to every tariff only to expose cost sensitivity; models and audio settings are not comparable outputs by default.

Record: A is entered charged attempts, with approved clips≤charged attempts. This is a user worksheet, not an invoice import. Use one billed duration across all attempts; separate refunded jobs, differently billed failures and mixed lengths using actual records. Our zero-approval example is fictional. At zero approved output the total remains visible and unit cost is null/UNDEFINED, never 0 or Infinity.

- Generated seconds G=A×d.
- Useful target/approved seconds U=N×u. Forecast unit cost is conditional on reaching this target.
- Public API software cost=G×credits per second×USD per credit.
- Manual rate cost=G×user-entered USD/generated second. The rate must incorporate the buyer's exact billing interval/minimums/settings; we do not validate a quote or infer provider support.
- Subscription mode software cost=project allocation+separately charged extras. No additional charge is added for included credits already funded by the allocation. Plan capacity, expiry, purchased allowance and automatic overages are outside this version. It is an allocation, not a cost-minimizing plan selector.
- Review=A×review minutes per attempt/60×review USD/hour.
- Editing=fixed editing hours×editing USD/hour.
- Total=software+review+editing+other entered USD costs.
- USD/useful second=total/U when U>0; otherwise undefined.

Only one billing method is selected. Inactive input values remain in the export for reproducibility but do not affect that method. In record mode the forecast acceptance field is inactive. A review of a rejected charged take still costs time; uncharged review work can be added to other costs. Forecast technical failures/refunds are not invented as a second discount.

## Prices and unsupported inferences

Six selected tariff rows, all on **Runway Dev API**: Gen-4 Turbo; Kling 2.5 Turbo Pro; Kling 3.0 Standard and Pro with/without audio. A model served through Runway does not inherit the direct Kling service's pricing. Public rates are derived from dated primary sources in sources.json and rates.json. Standard 720p/1080p settings and allowed durations are shown. Gen-4 Turbo requires an image, whose creation/licensing cost is not included automatically. Audio-on rows are not a promise of accurate localization or lip-sync.

Credits translate to rate-equivalent usage cost, not prepaid cash purchase requirements. Taxes, currency conversion, minimum purchases, unused credit balances and account-specific discounts are not modelled. Premium output/HDR/upscaling, storage, reference creation, voice/language post-production, seats and licensing fees remain excluded unless added. An unknown excluded cost is not a claim that it is free. No source establishes commercially safe output or clears rights for a particular project. No paid generation, provider account or subscription is used.

## Reproduction and downloadable calculations

scenario-inputs.csv includes the six briefs and explicit assumptions. scenario-results.csv contains 36 scenario/tariff calculations, labelled hypothetical and identifying source, date, settings and limitations. acceptance-sensitivity.csv includes 25/50/75/100 percent and each original baseline where distinct. Public rates, JSON inputs, sources and a blank log are downloadable.

To independently rerun the arithmetic locally, download reproduce.cjs, calculator.cjs, rates.json and scenarios.json into one folder and run `node reproduce.cjs`. This prints 36 scenario JSON records and 132 sensitivity JSON records, distinguished by recordType. It does not create media, use keys, install dependencies or contact a service. The method is checked with ordinary, adverse and zero-output cases; arithmetic and interface checks are not product video tests.

Citation: BenPicks, AI video cost per usable finished second, version 2026-10-16-v3, 16 October 2026. https://benpicks.com/guides/how-to-calculate-ai-video-generation-cost/#video-cost-calculator

## Blank record template: exact field mapping

record-template.csv uses the calculator identifiers. It is a manual worksheet, not an implemented CSV importer; do not pass the entire row as scenario JSON. Columns prefixed log_ are separate bookkeeping only and are not calculator inputs. Copy only the 16 calculator fields after filling numeric blanks; choose an existing public rate ID for api, or user-entered for custom/allocation.

| Template field | Calculator control / unit |
| --- | --- |
| mode | forecast for a target or record for entered charged/approved output |
| billing | api, custom or allocation; choose exactly one method |
| model | Public rate ID for api; user-entered for other billing methods |
| acceptance | Assumed percentage for forecast; inactive in record mode |
| shots | Approved usable clips in record mode, a whole count |
| seconds | Billed generated seconds per charged attempt |
| kept | Useful seconds per approved clip |
| attempts | Charged attempts, excluding refunded attempts |
| reviewMinutes | Review minutes **per charged attempt**, not total hours |
| reviewHourly | Review USD per hour |
| editHours / editHourly | Total fixed editing hours / editing USD per hour |
| other | Other entered USD costs |
| customRate | User USD per generated second; custom billing only |
| allocation / extraCharges | Project USD allocation once / separately charged USD extras; allocation billing only |
| log_refundedAttempts | Separate log only; not added to attempts and no assumed refund subtraction |

If you have total review hours instead, use reviewMinutes=total review hours×60/charged attempts when charged attempts>0. At zero charged attempts this conversion is undefined: put independent review work into other costs instead, with an explanatory note. Forecast acceptance is inactive in record mode. For API/custom billing, put genuinely additional charges not already counted in generated usage into other; extraCharges applies only to allocation mode. Never add the same API usage twice. The 36 scenario rows and 132 sensitivity rows (168 rows total) are reconstructed with Python Decimal and compared within absolute 1e-8 to allow JavaScript floating-point representation; this is arithmetic reconstruction, not exact binary equality or a provider invoice.
