Estimate, then cap
Every spending operation has an estimate, named inx-rask-operation.estimate_operation. It is free, needs no credits:spend, and changes nothing.
Send its
total_minutes as expected_cost_minutes. That value is a price cap, not a price:
- A higher current price answers 409
cost_changed, withcurrent_cost_minutes, and spends nothing. - An equal or lower price is charged as it is.
- Too few minutes answer 402
insufficient_balance.
auto_dub.skipped_reason).
Behind every request sit the key’s monthly caps.
The price rules
round is rounding half to even: 90 seconds is 1.5 minutes and rounds to 2, while 150 seconds is 2.5 minutes and also rounds to 2. ceil rounds up.
A dub has no cap at the full price. A
changed_segments dub costs the speech of the segments it voices. There is no point where a redub is cut off at what a full dub would cost, so the estimate is the number to trust.
Dub and segment-generation estimates state the rule in details.pricing_rule, and a localization estimate in details.dub.pricing_rule: full, changed_speech, selected_speech or free_language. Each minutes cost line has credit_type, feature, minutes, charged_when and basis (billable_seconds, multiplier). A project-credit line has projects instead of minutes, and no basis.
The text a dub voices is held to the speech it is priced on. createDub, generateSegments and the dub of a run answer 422 validation_failed when a translation holds more than 60 characters per second of its segment, though any segment may hold 100 (errors[].code: text_too_long_for_interval). When every line passes, all the text one request voices may hold at most 3,600 characters for each minute its speech is priced at, also on a free dubbing variant (text_too_long_for_price). The estimate lists the same refusal in reasons.
The anchor segment
A dub can reuse clips from generateSegments without voicing or charging them again, but a track can be rebuilt only when at least one segment is voiced. So when every changed segment already has a current clip, the shortest is voiced again, at its own speech price with a minimum of 1 minute, and its clip in the track is a new take. The estimate discloses this before you pay:details.assembly_anchor_segment_id names the segment, and the notice assembly_anchor_voiced explains it. Details are in Voice chosen segments.
Refunds
Refunds show on the job, in
cost.refunded and cost.refunded_at, and in the usage events, in refunded_minutes. A failed dub’s refund also closes the text again if it was the only dub charge.
Which pool pays
All the pools belong to the workspace owner, and all workspaces of one owner share them. The balance is in Spend, balance and errors.