---
title: "Generate Translation"
method: POST
path: "/v1/projects/{project_id}/translations/generate"
tags: ["translation"]
---

# Generate Translation

`POST /v1/projects/{project_id}/translations/generate`

## Request

- Base URL: `https://api.sonenta.dev`
- URL: `https://api.sonenta.dev/v1/projects/{project_id}/translations/generate`
- Auth: none declared

## Path parameters

- `project_id` string, required

## Request body

- GenerateIn
  - `tier` 'standard' | 'premium', required
  - `language_codes` string[], required: Target BCP-47 codes
  - `namespace_uuid` string, nullable
  - `key_uuids` string[], nullable: Restrict to these keys
  - `idempotency_key` string, required

## Response `200`

Successful Response

- TranslationJobOut: Unified job object returned by BOTH /generate and GET /jobs/{job_uuid}. `terminal` is true once status is completed/partial/failed. Sync jobs are terminal immediately (results written as drafts → refetch). Batch jobs (PR-2) start queued/running; the client polls GET /jobs/{job_uuid} until terminal.
  - `job_uuid` string, required
  - `status` string, required
  - `phase` string, nullable
  - `terminal` boolean, required
  - `mode` string, required
  - `tier` string, required
  - `requested` integer, required
  - `translated` integer, required
  - `failed` integer, required
  - `credits_charged` integer, required
  - `credits_refunded` integer, required
  - `credits_net` integer, required
  - `last_error` string, nullable
  - `batch_id` string, nullable

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/sonenta/apis/sonenta-api.md) · [All operations](https://skmtc.dev/sonenta/apis/sonenta-api/llms.txt) · [OpenAPI document](https://skmtc.dev/sonenta/apis/sonenta-api/revisions/f853ea49fb05?raw)
