Import a translation memory
Learn how to create a translation memory by declaring a TMX file, uploading it to a signed URL, and polling the import job.
upload_url, you upload the file to that URL, and processing starts automatically once the upload finishes.
Importing a file
Create the import job
job_id, the upload_url, and the expires_at deadline for the upload.Upload the TMX file
PUT the file to upload_url before expires_at. The URL is already signed, so this request carries no DeepL credentials.Poll the job
status is completed or failed.translation_memory_id of the new translation memory.Common mistakes
content_length must be greater than 0 and at most 1 GB. An oversize value is rejected as 400 Bad Request with a message pointing at source_file.content_length.
file_name accepts at most 100 characters and content_type at most 127, both rejected as 400 Bad Request if longer. TMX is the only supported format, so leave content_type unset or set it to application/xml.
A 202 Accepted means the job exists, not that a translation memory does. Until the upload completes and the job reports completed, no translation memory has been created and there is no ID to reference.
If expires_at passes before you upload, the signed URL stops working. Create a new import job to get a fresh URL rather than retrying the old one.
A non-zero skipped_segment_count on a completed import is not a failure. Some segments were not stored, for example because they were malformed or duplicated an existing segment, but the rest imported normally. Check the value if you are reconciling segment counts against your source file.
If your account has reached its translation memory limit, the request returns 456. Delete a translation memory before importing another.Authorizations
Authentication with Authorization header and DeepL-Auth-Key authentication scheme. Example: DeepL-Auth-Key <api-key>
Response
The import job was created. Upload the file to upload_url before expires_at.
The identifier of the import job. Use it to poll the job's status.
"0f8b6c1e-4d2a-4c77-9a3e-1b5d8c9e2f40"
A signed URL to PUT the TMX file to. Do not send your Authorization header with the
upload request.
"https://assets.deepl.com/upload/0f8b6c1e-4d2a-4c77-9a3e-1b5d8c9e2f40"
The time the upload_url stops accepting uploads, in the ISO 8601-1:2019 format. After
this time, create a new import job.
"2026-08-06T15:34:25.223Z"