---
title: "Translation Batch Operations"
method: PATCH
path: "/projects/{projectId}/translations"
tags: ["String/Asset Translations"]
---

# Translation Batch Operations

`PATCH /projects/{projectId}/translations`

## Request

- Base URL: `https://api.crowdin.com/api/v2`
- URL: `https://api.crowdin.com/api/v2/projects/{projectId}/translations`
- Auth: none declared
- TypeScript: <https://skmtc.dev/crowdin/apis/crowdin-enterprise-api-v2/docs/projects/:projectId/translations/patch.ts> (a function with typed inputs; its response is checked against the schema)

**Required scopes:** `project.translation` (Read and Write).

Perform batch operations on string and asset translations. Use the oneOf pattern:
- **String type**: Use `stringId` with `text` and optional `pluralCategoryName`
- **Asset type**: Use `fileId` with `storageId`

## Path parameters

- `projectId` integer, required

## Request body

- TranslationMassOperation[]: A JSON Patch document as defined by <a href="https://tools.ietf.org/html/rfc6902#section-3" target="_blank">RFC 6902</a>
  - `op` 'remove' | 'add' | 'replace', required: Patch operation to perform

## Response `200`

Translations were successfully updated

- TranslationUpdatedCollectionResource: Base schema of resource container. Container is a wrapper object that contains payload in required `data` property and provides space for adding any other metadata.
  - `data` TranslationResource[], required

## Other responses

- `400`: Invalid Request Parameters
- `401`: Unauthorized
- `403`: Forbidden
- `404`: Project or string with specified id was not found
- `405`: Method Not Allowed
- `409`: Conflict
- `503`: Service Unavailable

---

[API](https://skmtc.dev/crowdin/apis/crowdin-enterprise-api-v2.md) - [All operations](https://skmtc.dev/crowdin/apis/crowdin-enterprise-api-v2/llms.txt) - [OpenAPI document](https://skmtc.dev/crowdin/apis/crowdin-enterprise-api-v2/revisions/dc68744c5384?raw)
