Approve the plan and translate
Spends credits: the plan's measured word count at the chosen quality (standard: 1 word = 1 credit; lite: a third, rounded up) is reserved and settled at completion. Returns the initial progress with estimated_seconds_remaining — poll the translation with GET from here.
POST/v1/batches/{batch_id}/approve
Requires batches:create. This is the call that spends credits. Everything before it (creating, planning, refining) is free.
What it costs
The plan’s measured word count is reserved at the quality you choose, then settled against actual consumption when the translation completes.
| Quality | Cost | Availability |
|---|---|---|
standard | 1 credit per word | Every plan |
lite | A third of the words, rounded up | Paid plans |
Because the count is measured from the file rather than estimated, the reservation is the number you saw in the plan response. If the balance cannot cover it, the call fails with insufficient_credits and nothing is reserved.
Then poll
The response returns the initial progress, including estimated_seconds_remaining. From there, poll GET /v1/batches/{batch_id} rather than calling approve again. A second approval on a running translation fails with batch_not_awaiting_approval.
custom_instructions applies guidance to this batch only, on top of any workspace glossary. It does not change the plan, so it cannot change what gets translated, only how.