---
title: "Import translations from offline CAT tool (XLIFF)"
method: POST
path: "/translations-api/v2/projects/{projectId}/locales/{localeId}/content"
tags: ["translations"]
---

# Import translations from offline CAT tool (XLIFF)

`POST /translations-api/v2/projects/{projectId}/locales/{localeId}/content`

## Request

- Base URL: `https://api.smartling.com`
- URL: `https://api.smartling.com/translations-api/v2/projects/{projectId}/locales/{localeId}/content`
- Auth: HTTP bearer

Imports a translated XLIFF file from an external CAT tool. Translations
are tagged with `OFFLINE_CAT` origin.

Import may partially succeed — some strings may fail validation while
others are imported successfully. Check `translationImportErrors` in the
response for per-string errors.

Use `workflowStepUid` to target a specific workflow step. When
`submitContent=true`, content is automatically advanced to the next
workflow step after import.

When `mtContent=true`, imported translations are tagged with
`OFFLINE_CAT_MT` origin instead of `OFFLINE_CAT`, and are saved with
`EXTERNAL` translation quality instead of the default human quality.
Use this to isolate machine-translated test content from TM matching
against human translations.

**Limitations**

- Limit calls to 6 requests per 60 seconds per user. Exceeding this
  returns `429`.

## Path parameters

- `projectId` string, required: Unique identifier of a Smartling project — 9 lowercase alphanumeric characters.
- `localeId` string, required: Locale identifier. Either a 2-letter language code (`en`) or a language-region pair (`en-US`). The language part is always lowercase; the region part is always uppercase.

## Query parameters

- `workflowStepUid` string: Workflow step unique identifier — 12 lowercase alphanumeric characters.
- `submitContent` boolean
- `mtContent` boolean

## Request body `multipart/form-data`

- object
  - `file` string, binary, required: Translated XLIFF 1.2 file.

## Response `200`

Import completed. Check `translationImportErrors` for per-string failures.

- XliffImportResponse: Response envelope for XLIFF import operations.
  - `response` object, required
    - `code` 'SUCCESS', required
    - `data` XliffImportData, required: Summary of an XLIFF import operation.
      - `wordCount` integer, required: Total word count of successfully imported strings.
      - `stringCount` integer, required: Number of strings successfully imported.
      - `translationImportErrors` XliffImportError[], required: Per-string import failures. Empty when all strings imported successfully.
        - `importKey` string: Internal key identifying the import batch.
        - `stringHashcode` string: MD5 hash digest — 32 lowercase hexadecimal characters.
        - `fileUri` string: URI path of a source file within a Smartling project.
        - `messages` string[]: Human-readable error messages for this string.

## Other responses

- `400`: The request failed validation.
- `401`: Provided credentials are not valid.
- `403`: Caller does not have access to the requested resource.
- `404`: The project, locale, or workflow step does not exist.
- `429`: The caller has exceeded the limit of 6 requests per 60 seconds.
- `500`: Unexpected error

## Changes

- **2026-10-17** `2cd7a8215799`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/smartling/apis/smartling-rest-api-reference/changes/translations-api/v2/projects/:projectId/locales/:localeId/content/post.md)

---

[API](https://skmtc.dev/smartling/apis/smartling-rest-api-reference.md) - [All operations](https://skmtc.dev/smartling/apis/smartling-rest-api-reference/llms.txt) - [OpenAPI document](https://skmtc.dev/smartling/apis/smartling-rest-api-reference/revisions/e63066e7f5e9?raw)
