---
title: "Update Language"
method: PATCH
path: "/v1/projects/{project_id}/languages/{language_id}"
tags: ["languages"]
---

# Update Language

`PATCH /v1/projects/{project_id}/languages/{language_id}`

## Request

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

## Path parameters

- `language_id` string, required
- `project_id` string, required

## Request body

- LanguagePatchIn
  - `name` string, nullable
  - `fallback` string, nullable
  - `is_source` boolean, nullable

## Response `200`

Successful Response

- LanguageOut
  - `uuid` string, required
  - `project_uuid` string, required
  - `code` string, required
  - `name` string, nullable, required
  - `fallback` string, nullable, required
  - `is_source` boolean, required
  - `created_at` string, date-time, required
  - `updated_at` string, date-time, required
  - `completion` LanguageCompletion
    - `translated` integer, required
    - `total` integer, required
    - `status_breakdown` LanguageStatusBreakdown: Per-status counts over the production version's active keys — SAME shape + computation as the coverage endpoint's CoverageLanguage, so client-admin can render the identical stacked CoverageBar here. Buckets translated/reviewed/ approved are the live, mutually-exclusive states; `draft` = has a value but not live; `missing` = total - (translated+reviewed+approved) (i.e. everything not live, draft included).
      - `translated` integer, required
      - `reviewed` integer, required
      - `approved` integer, required
      - `draft` integer, required
      - `missing` integer, required
      - `total` integer, required
      - `pct_translated` integer, required

## 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)
