---
title: "Import a translation memory"
method: POST
path: "/v3/translation_memories/import"
tags: ["TranslationMemories"]
---

# Import a translation memory

`POST /v3/translation_memories/import`

## Request

- Base URL: `https://api.deepl.com`
- URL: `https://api.deepl.com/v3/translation_memories/import`
- Auth: API key in header `Authorization`

Create a translation memory by importing a TMX file.

This endpoint does not accept the file itself. It returns a short-lived `upload_url`, and you
upload the TMX file to that URL with a separate `PUT` request. Processing starts automatically
once the upload completes, so there is no third call to confirm it.

1. `POST /v3/translation_memories/import` with the file's name and size. The response returns a
   `job_id`, an `upload_url`, and the `expires_at` time after which the URL stops working.
2. `PUT` the TMX file to `upload_url`. Do not send your `Authorization` header on this request,
   because the URL is already signed.
3. Poll [Retrieve an import or export job](/api-reference/translation-memory/retrieve-a-translation-memory-job)
   until the status is `completed`. The new `translation_memory_id` is on the job result.

Requires an API key with the `translation_memories:write` scope.

## Request body

- object
  - `source_file` object, required
    - `file_name` string, required: The name of the TMX file you intend to upload, including its extension. At most 100 characters.
    - `content_type` string: The MIME type of the file. Defaults to `application/xml`, which is correct for TMX. TMX is currently the only supported import format. At most 127 characters.
    - `content_length` integer, required: The size of the file in bytes. Must be greater than 0 and at most 1 GB. An oversize value is rejected with `400 Bad Request`.
  - `parameters` object
    - `display_name` string: The name to give the new translation memory. If you omit this, the translation memory is created without a name.

## Response `202`

The import job was created. Upload the file to `upload_url` before `expires_at`.

- object
  - `job_id` string, uuid, required: The identifier of the import job. Use it to poll the job's status.
  - `upload_url` string, uri, required: A signed URL to `PUT` the TMX file to. Do not send your `Authorization` header with the upload request.
  - `expires_at` string, date-time, required: The time the `upload_url` stops accepting uploads, in the ISO 8601-1:2019 format. After this time, create a new import job.

## Other responses

- `400`: Bad request. Please check error message and your parameters.
- `401`: Authorization failed. Please supply a valid `DeepL-Auth-Key` via the `Authorization` header.
- `403`: Authorization failed. Please supply a valid `DeepL-Auth-Key` via the `Authorization` header. This error is also returned when the API key is scoped but does not include the scope required for this endpoint.
- `429`: Too many requests. Please wait and resend your request.
- `456`: You have reached the maximum number of translation memories for your account. Delete a translation memory before creating another one.
- `500`: Internal error.
- `503`: Resource currently unavailable. Try again later.

## Changes

- **2026-11-03** `c7c91cfac5c0`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/deepl/apis/deepl-api-documentation/changes/v3/translation_memories/import/post.md)

---

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