---
title: "Approve the plan and translate"
description: "Spend credits on the plan you reviewed, choose Standard or Lite quality, and start polling progress with an estimated time remaining."
canonical: "https://ai-glot.com/docs/api/translations/approve"
updated: "2026-08-31"
---

# Approve the plan and translate

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}`](/docs/api/translations/retrieve) 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.

> **Info: Cancelling is not free**
>
> A translation stopped with [`POST /v1/batches/{batch_id}/cancel`](/docs/api/translations/cancel) charges the work already done and releases the rest. Translation that ran has a real cost.
