---
title: "Create a translation package"
method: POST
path: "/translations-api/v2/projects/{projectId}/locales/{localeId}/translation-packages"
tags: ["translations"]
---

# Create a translation package

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

## Request

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

Creates a snapshot of translatable content at a specific workflow step for
offline translation with external CAT tools.

Creating a package synchronously determines which strings belong to it.
The XLIFF file itself is generated on demand from the current
translation state each time you call the content endpoint, so it's
available for download immediately after the package is created. When
`generateTmx` is `true` (the default), a TMX translation memory file is
also generated asynchronously in the background. The `translationMemory`
link in the response carries a `processUid` while the TMX is being
prepared; once ready, `processUid` becomes `null` and the link's `href`
is set.

Returns `202 Accepted` when the TMX job is still in progress, or `200 OK`
when all resources are immediately available (that is, `generateTmx` was
explicitly set to `false`).

**Limitations**

- Only one translation package can be generated at a time for a given
  locale/workflow-step/job combination. A concurrent request for the same
  combination returns `423`.
- 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.

## Request body

- CreateTranslationPackageCommand: Parameters for creating a translation package.
  - `workflowStepUid` string, required: Workflow step unique identifier — 12 lowercase alphanumeric characters.
  - `translationJobUid` string: Translation job unique identifier — 12 lowercase alphanumeric characters.
  - `hashcodes` Hashcode[]: Limit package to these specific string hashcodes. Omit for all strings.
  - `generateTmx` boolean: Generate a TMX translation memory file alongside the XLIFF. If your integration doesn't need the TMX file, we recommend passing `false` to avoid the extra background generation work.

## Response `200`

Package created. All resources are immediately available (`generateTmx` was `false`).

- TranslationPackageResponse: Response envelope for translation package operations.
  - `response` object, required
    - `code` 'SUCCESS' | 'ACCEPTED', required
    - `data` TranslationPackageData, required: Translation package metadata and resource links.
      - `translationPackageUid` string, required: Unique identifier of the translation package.
      - `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.
      - `created` string, date-time, required: ISO 8601 UTC timestamp.
      - `links` TranslationPackageLink[], required: HATEOAS links to downloadable package resources.
        - `href` string, uri, nullable: URL of the resource. `null` while the resource is still being prepared (e.g. the `translationMemory` link before TMX generation completes).
        - `rel` string: Relationship type (e.g. `content`, `translationMemory`).
        - `title` string, nullable: Human-readable label for this link. Currently always `null`.
        - `processUid` string, nullable: UID of the background job preparing this resource. When `null`, the resource is ready to download. Only set on `translationMemory` links.

## Other responses

- `202`: Package created. TMX generation is still in progress.
- `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, workflow step, or job does not exist.
- `423`: Package generation is already in progress for this locale/step/job combination.
- `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/translation-packages/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)
