Upload TM

Please consider that API 2.0 is now the preferred version to be used. The old API will remain fully functional until the end of 2021.

Crowdin API v2
Upload your Translation Memory for Crowdin Project in TMX, CSV or XLS/XLSX file format.


Note: Use the combination of project identifier, username, and account key to pass to this endpoint.

POST https://api.crowdin.com/api/project/{project-identifier}/upload-tm?login={username}&account-key={account-key}


Name Value Description
file required file File in TMX, CSV or XLS/XLSX formats. See TMX 1.4b Specification.
first_line_contains_header CSV and XLS/XLSX files only
string Used when uploading CSV (or XLS/XLSX) files via API. Defines whether first line should be imported or it contains columns headers. May not contain value.
scheme CSV and XLS/XLSX files only
string Note: Used only when uploading CSV (or XLS/XLSX) file to define data columns mapping.
Acceptable value is the combination of the following constants (%language_code% is a placeholder for your language code): Example parameter you will have to add: &scheme=phrase_en,none,phrase_uk,phrase_fr
json optional string May not contain value. Defines that response should be in JSON format.
jsonp optional string Callback function name. Defines that response should be in JSONP format.
project-identifier string Project identifier.
login string Your username in Crowdin.
account-key string Your account API key.


If successful, this method returns a XML structure, as it is shown below.
<?xml version="1.0" encoding="UTF-8"?>
Unsuccessful response sample:
<?xml version="1.0" encoding="UTF-8"?>
  <message>API key is not valid</message>


curl \
  -F "file=@translation-memory.tmx" \
curl \
  -F "file=@tm.csv" \
  -F "first_line_contains_header=true" \
  -F "scheme=phrase_en,none,phrase_uk,phrase_fr" \
$post_params = array();
$request_url = 'https://api.crowdin.com/api/project/{project-identifier}/upload-tm?login={username}&account-key={account-key}';

if(function_exists('curl_file_create')) {
  $post_params['file'] = curl_file_create('/home/crowdin/test.tmx');
} else {
  $post_params['file'] = '@/home/crowdin/test.tmx';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $request_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_params);

$result = curl_exec($ch);

echo $result;

Was this article helpful?