> ## Documentation Index
> Fetch the complete documentation index at: https://snowseo.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Report Translations

> On-demand AI translation of report strings, cached by hash and token-capped.

Translate the visible strings of a Report Builder report into another language on demand. Cache hits are served from the database; only cache misses are AI-translated, so repeated exports of the same report stay cheap. Requires the `member` role.

<Note>
  This route is rate-limited to roughly **20 requests per day** per team, and AI (cache-miss) translations are additionally capped by a monthly token budget. Requesting English (`en`) or an empty set returns an empty map without spending anything.
</Note>

### Request body

| Field      | Description                                                                                                          |
| ---------- | -------------------------------------------------------------------------------------------------------------------- |
| `language` | Required. Target language code (e.g. `fr`, `de`). `en` short-circuits to an empty map; an unknown code returns `400` |
| `strings`  | Required. Array of source strings to translate (deduplicated; capped at 2000 unique entries)                         |

### Response

| Field          | Description                                                                                                                                  |
| -------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
| `translations` | A `sourceText → translatedText` map covering every requested string. Strings that fail to translate fall back to their original English text |

<Tip>
  Translations are cached by a SHA-256 hash of the source text and keyed by language, so the same paragraph is only ever paid for once across all reports.
</Tip>

<Warning>
  If the monthly translation token budget is exhausted, cache-miss translations return `429` with `{ error: "Monthly translation limit reached." }`. Cache-only requests are never blocked.
</Warning>
