API v1 (Deprecated)

Crowdin provides RESTful API with XML or JSON over HTTP using GET or POST methods. Listed below are all the available API methods that allow you to create projects in Crowdin, add and update files, download translations or integrate localization with your development process.

Deprecation Notice

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.

Acquiring and Using API Key

To find your Account API key you have to login to your Crowdin account. Open Account Settings page and switch to API tab.

Please note that almost all API calls require the Project Identifier (ID). You can find your project identifier in the Project settings > API & Webhooks tab.

Making Requests

For every API request you make, you'll need to present the Account API key and username as main URI parameters to be authenticated. Keep your Account API key in secret! It should be guarded just as your regular account password.

Here's an example and principle of API request URI forming.

GET https://api.crowdin.com/api/project/{project-identifier}/download/all.zip?login={username}&account-key={account-key}

Typical API call URL looks like this: https://api.crowdin.com/api/project/. First placeholder (keyword in brackets) holds project identifier. Account API key and username are specified as a URI parameters.

Rate Limits

The number of simultaneous API calls per account is 20 requests. If the limit is exceeded, 429 error code will show up with a message: “Maximum number of concurrent requests for this endpoint is reached. Please try again shortly.”


Datei hinzufügen

Deprecated

Add a new file to Crowdin project.

Request

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}/add-file?login={username}&account-key={account-key}

Parameters

Name Value Description
files required array Files array that should be added to Crowdin project. Array keys should contain file names with a path in Crowdin project.
Note! 20 files max are allowed to upload per one time file transfer. The maximum size of one file is 100 MB.
titles optional array An array of strings that defines titles for uploaded files. Array keys should contain file names with a path in Crowdin project.
export_patterns optional array An array of strings that defines names of resulted files (translated files in the resulted archive). Array keys should contain file names with a path in Crowdin project.
type optional string Acceptable values are:
  • empty value or "auto" — Try to detect file type by extension or MIME type
  • "android" — Android (*.xml)
  • "macosx" — Mac OS X / iOS (*.strings)
  • "resx" — .NET, Windows Phone (*.resx)
  • "properties" — Java (*.properties)
  • "gettext" — GNU GetText (*.po, *.pot)
  • "yaml" — Ruby On Rails (*.yaml)
  • "php" — Hypertext Preprocessor (*.php)
  • "json" — Generic JSON (*.json)
  • "xml" — Generic XML (*.xml)
  • "ini" — Generic INI (*.ini)
  • "rc" — Windows Resources (*.rc)
  • "resw" — Windows 8 Metro (*.resw)
  • "resjson" — Windows 8 Metro (*.resjson)
  • "qtts" — Nokia Qt (*.ts)
  • "joomla" — Joomla localizable resources (*.ini)
  • "chrome" — Google Chrome Extension (*.json)
  • "dtd" — Mozilla DTD (*.dtd)
  • "dklang" — Delphi DKLang (*.dklang)
  • "flex" — Flex (*.properties)
  • "nsh" — NSIS Installer Resources (*.nsh)
  • "wxl" — WiX Installer (*.wxl)
  • "xliff" — XLIFF (*.xliff)
  • "html" — HTML (*.html, *.htm, *.xhtml, *.xhtm)
  • "haml" — Haml (*.haml)
  • "txt" — Plain Text (*.txt)
  • "csv" — Comma Separated Values (*.csv)
  • "md" — Markdown (*.md, *.text, *.markdown...)
  • "flsnp" — MadCap Flare (*.flnsp, .flpgpl .fltoc)
  • "fm_html" — Jekyll HTML (*.html)
  • "fm_md" — Jekyll Markdown (*.md)
  • "mediawiki" — MediaWiki (*.wiki, *.wikitext, *.mediawiki)
  • "docx" — Microsoft Office, OpenOffice.org Documents, Adobe InDesign Adobe FrameMaker(*.docx, *.dotx, *.odt, *.ott, *.xslx, *.xltx, *.pptx, *.potx, *.ods, *.ots, *.odg, *.otg, *.odp, *.otp, *.imdl, *.mif)
  • "sbv" — Youtube .sbv (*.sbv)
  • "vtt" — Video Subtitling and WebVTT (*.vtt)
  • "srt" — SubRip .srt (*.srt)
  • "i18next_json" — i18next JSON (*.json)
first_line_contains_header CSV and XLS/XLSX files only
optional
string Used when uploading CSV (or XLS/XLSX) files via API. Defines whether the first line should be imported or it contains the columns headers. May contain no value.
import_translations CSV and XLS/XLSX multilingual files only
optional
integer Used when uploading CSV (or XLS/XLSX) files via API. Defines whether during the file import translations are imported as well – 1, or translations are not imported – 0. Default: 1.
scheme CSV and XLS/XLSX files only
required
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:
  • "identifier" — Column contains string identifier.
  • "source_phrase" — Column contains only source string (in result string will contain same string).
  • "source_or_translation" — Column contains source string but when exporting the same column should contain translation (also when uploading existing translations, the value from this column will be used as a translated string).
  • "translation" — Column contains translated strings (if the imported file already contains translations).
  • "context" — Column contains some comments on source string. Context information.
  • "max_length" — Column contains max. length of translation for this string.
  • "labels" — Column contains labels.
  • "none" — Don't import this column.
Example parameter you will have to add: &scheme=identifier,source_or_translation

Note: for exported file to contain translations to all the target languages, specify language codes in scheme (e.g. &scheme=identifier,source_phrase,uk,ru,fr).
branch optional string The name of the related version branch (Versions Management).
json optional string May contain no value. Defines that response should be in the JSON format.
jsonp optional string Callback function name. Defines that response should be in the JSONP format.
translate_content XML files only
optional
bool Defines whether to translate texts placed inside the tags. Acceptable values are: 0 or 1. Default is 1.
translate_attributes XML files only
optional
bool Defines whether to translate tags attributes. Acceptable values are: 0 or 1. Default is 1.
content_segmentation XML files only
optional
bool Defines whether to split long texts into smaller text segments. Acceptable values are: 0 or 1. Default is 1.
Note: When Content segmentation is enabled, the translation upload is handled by an experimental machine learning technology.
translatable_elements XML files only
optional
array This is an array of strings, where each item is the XPaths to DOM element that should be imported.
Acceptable values are:
  • /path/to/node
  • /path/to/attribute[@attr]
  • //node , node - import each node named "node"
  • //[@attr] - import сontent of each attribute named "attr"
  • nodeone/nodetwo - import all "nodetwo" nodes (root node is not required to be specified)
  • /nodeone//nodetwo - import all "nodetwo" nodes ignoring other nodes between "nodeone" and "nodetwo"
  • //node[@attr] - import content of attributes "attr" stored in nodes named "node"

Note! If defined, the parameters "translate_content" and "translate_attributes" are not taken into account while importing.
escape_quotes properties files only
optional
integer Defines whether single quote should be escaped by another single quote or backslash in exported translations. Acceptable values are: 0, 1, 2, 3. Default is 3.

0 — Do not escape single quote;
1 — Escape single quote by another single quote;
2 — Escape single quote by backslash;
3 — Escape single quote by another single quote only in strings containing variables ( {0} )
Variables
project-identifier string Project identifier.
login string Your username in Crowdin.
account-key string Your account API key.

Response

If the method is successful it responds with an XML structure, as it is shown below.
  <?xml version="1.0" encoding="UTF-8"?>
  <success>
    <stats>
      <file file_id="342">
        <name>strings.xml</name>
        <strings>4</strings>
        <words>11</words>
      </file>
    </stats>
  </success>
  
Unsuccessful response sample:
  <?xml version="1.0" encoding="UTF-8"?>
  <error>
    <code>3</code>
    <message>API key is not valid</message>
  </error>
  

Examples

    curl \
    -F "files[/directory/arrays.xml]=@arrays.xml" \
    -F "files[strings.xml]=@strings.xml" \
    https://api.crowdin.com/api/project/{project-identifier}/add-file?login={username}&account-key={account-key}
    
    curl \
    -F "files[directory/multilingual.csv]=@example.csv" \
    -F "export_patterns[directory/multilingual.csv]=/%locale%/%original_file_name%" \
    -F "titles[directory/multilingual.csv]=Title in Crowdin Project" \
    -F "scheme=identifier,source_phrase,translation" \
    -F "first_line_contains_header=true" \
    https://api.crowdin.com/api/project/{project-identifier}/add-file?login={username}&account-key={account-key}
    
    <?php
$post_params = array();
$request_url = 'https://api.crowdin.com/api/project/{project-identifier}/add-file?login={username}&account-key={account-key}';

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

$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);
curl_close($ch);

echo $result;
<?php
$post_params = array();
$request_url = 'https://api.crowdin.com/api/project/{project-identifier}/add-file?login={username}&account-key={account-key}';

if(function_exists('curl_file_create')) {
  $post_params['files[directory/multilingual.csv]'] = curl_file_create('/home/crowdin/example.csv');
} else {
  $post_params['files[directory/multilingual.csv]'] = '@/home/crowdin/example.csv';
}

$post_params['export_patterns[directory/multilingual.csv]'] = '/translations/%original_file_name%';
$post_params['titles[directory/multilingual.csv]'] = 'Title in Crowdin Project';
$post_params['scheme'] = 'identifier,source_phrase,translation';
$post_params['first_line_contains_header'] = '';

$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);
curl_close($ch);

echo $result;

Datei aktualisieren

Deprecated

Upload the latest version of your source files (the ones, that should be localized) to your Crowdin project.

Request

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}/update-file?login={username}&account-key={account-key}

Parameters

Name Value Description
files required array Files array that should be updated.
Note! 20 files max are allowed to upload per one time file transfer.
titles optional array An arrays of strings that defines titles for uploaded files. Array keys should contain file names with path in Crowdin project.
export_patterns optional array An arrays of strings that defines names of resulted files (translated files in resulted archive). Array keys should contain file names with path in Crowdin project.
new_names optional array An arrays of strings that defines new names for previously imported files. Array keys should contain file names with path in Crowdin project.
first_line_contains_header CSV and XLS/XLSX files only
optional
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
required
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:
  • "identifier" — Column contains string identifier.
  • "source_phrase" — Column contains only source string (in result string will contain same string).
  • "source_or_translation" — Column contains source string but when exporting same column should contain translation (also when uploading existing translations, the value from this column will be used as a translated string).
  • "translation" — Column contains translated string (when imported file already contains translations).
  • "context" — Column contains some comments on source string. Context information.
  • "max_length" — Column contains max. length of translation for this string.
  • "labels" — Column contains labels.
  • "none" — Do not import column.
Example parameter you will have to add: &scheme=identifier,source_or_translation

Note: for exported file to contain translations to all the target languages, specify language codes in scheme (e.g. &scheme=identifier,source_phrase,uk,ru,fr).
update_option optional string Depending on the value, "update_option" is used to preserve translations and preserve/remove validations of changed strings during file update. The values are:
  • "update_as_unapproved" — Preserve translations of changed strings and remove validations of those translations if they exist.
  • "update_without_changes" — Preserve translations and validations of changed strings.
Note: If it is not set translations for changed strings will be lost after file update. Useful for typo fixes and minor changes in source strings.
branch optional string The name of related version branch (Versions Management).
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.
escape_quotes properties files only
optional
integer Defines whether single quote should be escaped by another single quote or backslash in exported translations. Acceptable values are: 0, 1, 2, 3. Default is 3.

0 — Do not escape single quote;
1 — Escape single quote by another single quote;
2 — Escape single quote by backslash;
3 — Escape single quote by another single quote only in strings containing variables ( {0} )
Variables
project-identifier string Project identifier.
login string Your username in Crowdin.
account-key string Your account API key.

Response

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

Examples

    curl \
    -F "files[/directory/strings.xml]=@strings.xml" \
    https://api.crowdin.com/api/project/{project-identifier}/update-file?login={username}&account-key={account-key}
    
    curl \
    -F "files[/directory/android.xml]=@strings.xml" \
    -F "new_names[/directory/android.xml]=strings.xml" \
    https://api.crowdin.com/api/project/{project-identifier}/update-file?login={username}&account-key={account-key}
    
    curl \
    -F "files[directory/multilingual.csv]=@example.csv" \
    -F "export_patterns[directory/multilingual.csv]=/translations/%original_file_name%" \
    -F "titles[directory/multilingual.csv]=Title in Crowdin Project" \
    -F "scheme=identifier,source_phrase,translation" \
    -F "first_line_contains_header=true" \
    https://api.crowdin.com/api/project/{project-identifier}/update-file?login={username}&account-key={account-key}
    
    <?php
$post_params = array();
$request_url = 'https://api.crowdin.com/api/project/{project-identifier}/update-file?login={username}&account-key={account-key}';

if (function_exists('curl_file_create')) {
$post_params['files[test.txt]'] = curl_file_create('/home/user/test.txt');
} else {
$post_params['files[test.txt]'] = '@/home/user/test.txt';
}

$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);
curl_close($ch);

echo $result;
<?php
$post_params = array();
$request_url = 'https://api.crowdin.com/api/project/{project-identifier}/update-file?login={username}&account-key={account-key}';

if (function_exists('curl_file_create')) {
$post_params['files[/directory/android.xml]'] = curl_file_create('/home/user/strings.xml');
} else {
$post_params['files[/directory/android.xml]'] = '@/home/user/strings.xml';
}

$post_params['new_names[/directory/android.xml]'] = 'strings.xml';

$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);
curl_close($ch);

echo $result;
<?php
$post_params = array();
$request_url = 'https://api.crowdin.com/api/project/{project-identifier}/update-file?login={username}&account-key={account-key}';

if(function_exists('curl_file_create')) {
$post_params['files[directory/multilingual.csv]'] = curl_file_create('/home/user/example.csv');
} else {
$post_params['files[directory/multilingual.csv]'] = '@/home/user/example.csv';
}

$post_params['export_patterns[directory/multilingual.csv]'] = '/translations/%original_file_name%';
$post_params['titles[directory/multilingual.csv]'] = 'Title in Crowdin Project';
$post_params['scheme'] = 'identifier,source_phrase,translation';
$post_params['first_line_contains_header'] = '';

$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);
curl_close($ch);

echo $result;

Datei löschen

Deprecated

Delete file from Crowdin project. All the translations will be lost without ability to restore them.

Request

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}/delete-file?login={username}&account-key={account-key}

Parameters

Name Value Description
file required string File name that should be deleted.
branch optional string The name of related version branch (Versions Management).
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.
Variables
project-identifier string Project identifier.
login string Your username in Crowdin.
account-key string Your account API key.

Response

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

Examples

    curl \
    -F "file=/directory/strings.xml" \
    https://api.crowdin.com/api/project/{project-identifier}/delete-file?login={username}&account-key={account-key}
    
    <?php
$post_params = array();
$request_url = 'https://api.crowdin.com/api/project/{project-identifier}/delete-file?login={username}&account-key={account-key}';
$post_params['file'] = '/directory/strings.xml';

$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);
curl_close($ch);

echo $result;

Übersetzung hochladen

Deprecated

Upload existing translations to your Crowdin project.
Method is not working for Assets localization.

Request

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-translation?login={username}&account-key={account-key}

Parameters

Name Value Description
files required array Translated files array. Array keys should contain file names in Crowdin.
Note! 20 files max are allowed to upload per one time file transfer.
language required string Crowdin language code. With a single call it's possible to upload translations for several files but only into one of the languages.
import_eq_suggestions optional bool Defines whether to add translation if it is equal to source string at Crowdin. Acceptable values are: 0 or 1. Default is 0.
auto_approve_imported optional bool Mark uploaded translations as approved. Acceptable values are: 0 or 1. Default is 0.
format optional string Specify this parameter if translations are uploaded to the project in XLIFF file format. Acceptable value is: xliff
To download XLIFF file for offline translation, apply the Export File method.
branch optional string The name of related version branch (Versions Management).
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.
Variables
project-identifier string Project identifier.
login string Your username in Crowdin.
account-key string Your account API key.

Response

If successful, this method returns a XML structure, as it is shown below.
  <?xml version="1.0" encoding="UTF-8"?>
  <success>
  </success>
  
Unsuccessful response sample:
  <?xml version="1.0" encoding="UTF-8"?>
  <error>
    <code>3</code>
    <message>API key is not valid</message>
  </error>
  
The following request is partly successful because for all the file formats that do not have defined structure (such as: Generic XML, HTML, Plain Text, Markdown, OpenOffice, Microsoft Office, Adobe InDesign, Adobe FrameMaker, Webxml) the translations upload is not possible.
  <?xml version="1.0" encoding="UTF-8"?>
  <success>
    <stats>
      <file name="spreadsheet.csv" status="uploaded"></file>
      <file name="webxml.xml" status="not_allowed"></file>
    </stats>
  </success>
  

Examples

    curl \
    -F "files[strings.xml]=@strings.fr.xml" \
    -F "language=fr" \
    -F "auto_approve_imported=1" \
    https://api.crowdin.com/api/project/{project-identifier}/upload-translation?login={username}&account-key={account-key}
    
    <?php
$post_params = array();
$request_url = 'https://api.crowdin.com/api/project/{project-identifier}/upload-translation?login={username}&account-key={account-key}';

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

$post_params['language'] = 'fr';
$post_params['import_eq_suggestions'] = 1;

$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);
curl_close($ch);

echo $result;

Übersetzungsstatus

Deprecated

Track overall translation and proofreading progresses of each target language. Default response format is XML.

Request

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}/status?login={username}&account-key={account-key}

Parameters

Name Value Description
languages optional array Track overall translation and proofreading progresses for defined target languages. For this use Сrowdin language codes.
xml optional string May contain no value. Defines that response should be in XML format.
json optional string May contain no value. Defines that response should be in JSON format.
jsonp optional string Callback function name. Defines that response should be in JSONP format.
Variables
project-identifier string Project identifier.
login string Your username in Crowdin.
account-key string Your account API key.

Response

If successful, this method returns a XML structure, as it is shown below.
  <?xml version="1.0" encoding="UTF-8"?>
  <status>
    <language>
      <name>French</name>
      <code>fr</code>
      <phrases>20</phrases>
      <translated>10</translated>
      <approved>5</approved>
      <words>50</words>
      <words_translated>35</words_translated>
      <words_approved>15</words_approved>
      <translated_progress>50</translated_progress>
      <approved_progress>25</approved_progress>
    </language>
    <language>
      <name>Romanian</name>
      <code>ro</code>
      <phrases>20</phrases>
      <translated>0</translated>
      <approved>0</approved>
      <words>50</words>
      <words_translated>35</words_translated>
      <words_approved>15</words_approved>
      <translated_progress>0</translated_progress>
      <approved_progress>0</approved_progress>
    </language>
    <!-- ............each project language............-->
  </status>
  
If QA checks is enabled, this method returns the following XML structure:
  <?xml version="1.0" encoding="UTF-8"?>
  <status>
    <language>
      <name>French</name>
      <code>fr</code>
      <phrases>20</phrases>
      <translated>10</translated>
      <approved>5</approved>
      <words>50</words>
      <words_translated>35</words_translated>
      <words_approved>15</words_approved>
      <translated_progress>50</translated_progress>
      <approved_progress>25</approved_progress>
      <qa_issues>10</qa_issues>
    </language>
    <!-- ............each project language............-->
  </status>
  
Unsuccessful response sample:
  <?xml version="1.0" encoding="UTF-8"?>
  <error>
    <code>3</code>
    <message>API key is not valid</message>
  </error>
  

Examples

    curl https://api.crowdin.com/api/project/{project-identifier}/status?login={username}&account-key={account-key}&jsonp=mycallback
    
    <?php
$request_url = 'https://api.crowdin.com/api/project/{project-identifier}/status?login={username}&account-key={account-key}&xml';

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

$result = curl_exec($ch);
curl_close($ch);

echo $result;

Sprachstatus

Deprecated

Get the detailed translation progress for specified language.

Request

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}/language-status?login={username}&account-key={account-key}

Parameters

Name Value Description
language required string Crowdin language codes.
xml optional string May not contain value. Defines that response should be in XML format. Default response type.
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.
Variables
project-identifier string Project identifier.
login string Your username in Crowdin.
account-key string Your account API key.

Response

If successful, this method returns a XML structure, as it is shown below.
  <?xml version="1.0" encoding="UTF-8"?>
  <status>
    <files>
      <item>
        <node_type>directory</node_type>
        <id>29812</id>
        <name>Version 1.0</name>
        <files>
          <item>
            <node_type>file</node_type>
            <id>29827</id>
            <name>strings.xml</name>
            <node_type>file</node_type>
            <phrases>7</phrases>
            <translated>0</translated>
            <approved>0</approved>
            <words>32</words>
            <words_translated>0</words_translated>
            <words_approved>0</words_approved>
          </item>
        </files>
      </item>
      <item>
        <node_type>branch</node_type>
        <id>29824</id>
        <name>Version 2.0</name>
        <files>
          <item>
            <node_type>file</node_type>
            <id>29826</id>
            <name>strings.xml</name>
            <phrases>239</phrases>
            <translated>239</translated>
            <approved>10</approved>
            <words>1059</words>
            <words_translated>1059</words_translated>
            <words_approved>25</words_approved>
          </item>
        </files>
      </item>
      <item>
        <node_type>file</node_type>
        <id>29825</id>
        <name>description.txt</name>
        <phrases>1239</phrases>
        <translated>1239</translated>
        <approved>100</approved>
        <words>1990</words>
        <words_translated>1990</words_translated>
        <words_approved>309</words_approved>
      </item>
    </files>
  </status>
  
Unsuccessful response sample:
  <?xml version="1.0" encoding="UTF-8"?>
  <error>
    <code>10</code>
    <message>Language was not found</message>
  </error>
  

Examples

    curl \
    -F "language=fr" \
    https://api.crowdin.com/api/project/{project-identifier}/language-status?login={username}&account-key={account-key}
    
    <?php
$request_url = 'https://api.crowdin.com/api/project/{project-identifier}/language-status?login={username}&account-key={account-key}';

$post_params = array();
$post_params['language'] = 'fr';

$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);
curl_close($ch);

echo $result;

Projektdetails

Deprecated

Get Crowdin Project details.

Request

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}/info?login={username}&account-key={account-key}

Parameters

Name Value Description
xml optional string May not contain value. Defines that response should be in XML format.
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.
Variables
project-identifier string Project identifier.
login string Your username in Crowdin.
account-key string Your account API key.

Response

If successful, this method returns a XML structure, as it is shown below.
  <?xml version="1.0" encoding="UTF-8"?>
  <info>
    <languages> <!-- all project languages -->
      <item>
        <name>French</name>
        <code>fr</code>
      </item>
      <item>
        <name>Spanish</name>
        <code>es-ES</code>
      </item>
    </languages>
    <files> <!-- project files details -->
      <item>
        <node_type>directory</node_type>
        <id>1</id>
        <name>test</name>
        <files>
          <item>
            <node_type>file</node_type>
            <id>2</id>
            <name>market-info.txt</name>
            <created>2017-05-19T13:08:13+0000</created>
            <last_updated>2017-05-20T18:02:13+0000</last_updated>
            <last_accessed>2017-05-21T09:10:48+0000</last_accessed>
            <last_revision>1</last_revision>
          </item>
          <item>
            <node_type>file</node_type>
            <id>3</id>
            <name>strings.xml</name>
            <created>2017-05-19T13:38:15+0000</created>
            <last_updated>2017-05-20T18:42:11+0000</last_updated>
            <last_accessed>0000-00-00 00:00:00</last_accessed>
            <last_revision>1</last_revision>
          </item>
        </files>
      </item>
      <item>
        <node_type>file</node_type>
        <id>4</id>
        <name>strings.xml</name>
        <created>2017-05-19T13:40:09+0000</created>
        <last_updated>2017-05-21T06:31:48+0000</last_updated>
        <last_accessed>2017-05-21T07:21:01+0000</last_accessed>
        <last_revision>1</last_revision>
      </item>
    </files>
    <details> <!-- project details -->
      <source_language>
        <name>English</name>
        <code>en</code>
      </source_language>
      <name>test-project</name>
      <identifier>test-project</identifier>
      <created>2017-05-19T13:40:52+0000</created>
      <description>project description</description>
      <join_policy>open</join_policy>
      <last_build>2017-05-20T20:01:18+0000</last_build>
      <last_activity>2017-05-21T09:10:48+0000</last_activity>
      <total_strings_count>438</total_strings_count>
      <total_words_count>4238</total_words_count>
      <duplicate_strings_count>228</duplicate_strings_count>
      <duplicate_words_count>2249</duplicate_words_count>
      <participants_count>4</participants_count>
      <logo_url>https://dvsyjmyregmxp.cloudfront.net/images/project-logo/14d5d32996cfcc6473ebe7fe2c9f3152105.png</logo_url>
      <invite_url>
        <item>
          <language>Ukrainian</language>
          <translator>
            https://crowdin.com/project/test-project/invite?d=d5l6k4h685v6p483v6q4r44303
          </translator>
          <proofreader>
            https://crowdin.com/project/test-project/invite?d=95l625i6r4v6p483v6q4r44303
          </proofreader>
        </item>
      </invite_url>
    </details>
  </info>
  

Note!

last_updated field indicates last update of the file and last_accessed indicates last activity in the file (e. g. submitting a suggestion). If there were no activities such as last_build, last_activity or last_updated, the dates are shown in following format 0000-00-00T00:00:00+0000 in UTC.
If the language access policy is "Open" the invite URL section will look like the following:
  <?xml version="1.0" encoding="UTF-8"?>
  <invite_url>
    <translator>
      https://crowdin.com/project/test-project/invite
    </translator>
    <proofreader>
      https://crowdin.com/project/test-project/invite?d=95l625i6r4v6p483v6q4r44303
    </proofreader>
  </invite_url>
  
Unsuccessful response sample:
<?xml version="1.0" encoding="UTF-8"?>
<error>
  <code>3</code>
  <message>API key is not valid</message>
</error>

Examples

    curl https://api.crowdin.com/api/project/{project-identifier}/info?login={username}&account-key={account-key}&jsonp=mycallback
    
    <?php
$request_url = 'https://api.crowdin.com/api/project/{project-identifier}/info?login={username}&account-key={account-key}&xml';

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

$result = curl_exec($ch);
curl_close($ch);

echo $result;

Gemeldete Probleme

Deprecated

Get a list of issues reported in the Editor.

Request

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}/issues?login={username}&account-key={account-key}

Parameters

Name Value Description
type optional string Defines the issue type.
Acceptable values are:
  • "general_question" — general question
  • "translation_mistake" — current translation is wrong
  • "context_request" — lack of contextual information
  • "source_mistake" — mistake in the source string
  • "all" — all the issue types listed above (default value)
status optional string Defines the issue resolution status.
Acceptable values are:
  • "unresolved" — unresolved issues
  • "resolved" — resolved issues
  • "all" — all the issue resolution statuses listed above (default value)
file optional string Defines the path of the file issues are associated with.
If the file path is not specified the method will get issues associated with all the project files.
language optional string Defines the language issues are associated with. If the language is not specified the method will get issues associated with all the project languages.
Crowdin language codes.
date_from optional string Issues added from. Use the following ISO 8601 format: YYYY-MM-DD±hh:mm
date_to optional string Issues added to. Use the following ISO 8601 format: YYYY-MM-DD±hh:mm
json optional string May contain no value. Defines that the response should be in JSON.
jsonp optional string Callback function name. Defines that the response should be in JSONP.
Variables
project-identifier string Project identifier.
login string Your username in Crowdin.
account-key string Your account API key.

Response

If the method is successful it returns an XML structure, as it's shown below:
  <?xml version="1.0" encoding="UTF-8"?>
  <issues>
    <issue>
      <source_string>Project name</source_string>
      <context>Headline 3 XPath: /html/body/div/div/h3</context>
      <comment>Source string mistake</comment>
      <created>2017-12-18T14:19:05+0000</created>
      <type>source_mistake</type>
      <status>unresolved</status>
      <file>/crowdin_sample_webpage.html</file>
      <language>
        <name>French</name>
        <code>fr</code>
      </language>
      <string_url>https://crowdin.com/translate/project-issues/3624/en-uk#14342648</string_url>
      <user>John Doe</user>
    </issue>
    <issue>
      <source_string>Current Password</source_string>
      <context>current_password</context>
      <comment>wrong translation</comment>
      <created>2017-12-18T14:18:29+0000</created>
      <type>translation_mistake</type>
      <status>unresolved</status>
      <file>/crowdin_sample_android.xml</file>
      <language>
        <name>French</name>
        <code>fr</code>
      </language>
      <string_url>https://crowdin.com/translate/project-issues/3625/en-uk#14342682</string_url>
      <user>John Doe</user>
    </issue>
    <issue>
      <source_string>Quick Start</source_string>
      <context>quick_start</context>
      <comment>Need more context</comment>
      <created>2017-12-18T14:18:01+0000</created>
      <type>context_request</type>
      <status>unresolved</status>
      <file>/crowdin_sample_android.xml</file>
      <language>
        <name>French</name>
        <code>fr</code>
      </language>
      <string_url>https://crowdin.com/translate/project-issues/3625/en-uk#14342693</string_url>
      <user>John Doe</user>
    </issue>
  </issues>
  
Unsuccessful response example:
  <?xml version="1.0" encoding="UTF-8"?>
  <error>
    <code>1</code>
    <message>The requested project does not exist or the API key is not valid.</message>
  </error>
  

Examples

    curl \
    -F "type=general_question" \
    -F "status=unresolved" \
    -F "date_from=2017-01-01" \
    https://api.crowdin.com/api/project/{project-identifier}/issues?login={username}&account-key={account-key}

    
    <?php
$post_params = array();
$request_url = 'https://api.crowdin.com/api/project/{project-identifier}/issues?login={username}&account-key={account-key}';
$post_params['type'] = 'general_question';
$post_params['status'] = 'unresolved';
$post_params['date_from'] = '2017-01-01';

$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);
curl_close($ch);

echo $result;

Datei exportieren

Deprecated

This method exports single translated files from Crowdin. Additionally, it can be applied to export XLIFF files for offline localization.

Request

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

GET https://api.crowdin.com/api/project/{project-identifier}/export-file?login={username}&account-key={account-key}
Note: Exporting files from Crowdin you’ll receive an Etag identifier in response header. Store this identifier so you can use it next time exporting files. Add Etag identifier to the If-None-Match request header to see whether any changes were applied to the file. In case the file was changed it would be downloaded. If not you’ll receive a 304 (Not Modified) status code.

Parameters

Name Value Description
file required string This parameter specifies a path to the file that should be exported from the project.
language required string Crowdin language code.
branch optional string The name of related version branch (Versions Management).
format optional string Specify xliff to export file in the XLIFF file format.
export_translated_only optional bool Use this parameter if you want to get only translated strings in the exported file. We don't recommend to set this option if you have text (*.html, *.txt, *.docx etc.) documents in your project since it may damage resulted files. Acceptable values are: 1 or 0.
export_translated_files_only optional bool Use this parameter if you want to get only translated files on export. Acceptable values are: 1 or 0.
export_approved_only optional bool If set to 1 only approved translations will be exported in resulted file. Acceptable values are: 1 or 0.
Variables
project-identifier string Project identifier.
login string Your username in Crowdin.
account-key string Your account API key.

Examples

    #Download file in the same file format as source
    wget -O de.xml "https://api.crowdin.com/api/project/{project-identifier}/export-file?file=en.xml&language=de&login={username}&account-key={account-key}"

    #Download file for offline translation in XLIFF file format
    wget -O de.xliff "https://api.crowdin.com/api/project/{project-identifier}/export-file?file=en.html&format=xliff&language=de&login={username}&account-key={account-key}"
    
    <?php
ini_set('default_socket_timeout', 5); // socket timeout, just in case

$request_url = 'https://api.crowdin.com/api/project/{project-identifier}/export-file?file=en.html&format=xliff&language=de&login={username}&account-key={account-key}';

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

$result = curl_exec($ch);
curl_close($ch);

echo $result;

Übersetzungen exportieren

Deprecated

Build ZIP archive with the latest translations.

This method can be invoked once per 30 minutes if case you are not using one of the organization plans. You can check if ZIP archive with the latest translations was built by status attribute ("built" or "skipped") returned in the response.

Note: Export API call will be ignored if there were no changes in the project since previous export.

Request

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

GET https://api.crowdin.com/api/project/{project-identifier}/export?login={username}&account-key={account-key}

Parameters

Name Value Description
branch optional string The name of related version branch (Versions Management).
async optional bool Defines whether the call will be executed asynchronously – 1 or not – 0. Default is 0. This means that this API method can be invoked and get an immediate response that the request was accepted.
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.
Variables
project-identifier string Project identifier.
login string Your username in Crowdin.
account-key string Your account API key.

Response

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

Examples

    curl \
    https://api.crowdin.com/api/project/{project-identifier}/export?login={username}&account-key={account-key}
    
    <?php
$request_url = 'https://api.crowdin.com/api/project/{project-identifier}/export?login={username}&account-key={account-key}';

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

$result = curl_exec($ch);
curl_close($ch);

echo $result;

Übersetzungsexportstatus

Deprecated

Get the status of translations export.

Request

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

GET https://api.crowdin.com/api/project/{project-identifier}/export-status?login={username}&account-key={account-key}

Parameters

Name Value Description
branch optional string The name of related version branch (Versions Management).
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.
Variables
project-identifier string Project identifier.
login string Your username in Crowdin.
account-key string Your account API key.

Response

Successful

The successful response status can be one of none, in-progress or finished.

If the export is finished, the method returns the following XML structure:

  <?xml version="1.0" encoding="UTF-8"?>
  <success>
    <status>finished</status>
    <progress>100</progress>
    <last_build>2018-10-22T13:49:00+0000</last_build>
  </success>
  
If the export is in progress, the method returns the following XML structure:
  <?xml version="1.0" encoding="UTF-8"?>
  <success>
    <status>in-progress</status>
    <progress>29</progress>
    <last_build>2018-10-18T16:08:00+0000</last_build>
    <current_file>example.xml</current_file>
    <current_language>Ukrainian</current_language>
  </success>
  
If the export has never been built, the method returns the following XML structure:
  <?xml version="1.0" encoding="UTF-8"?>
  <success>
    <status>none</status>
    <progress>0</progress>
    <last_build>never</last_build>
  </success>
  

Unsuccessful

  <?xml version="1.0" encoding="UTF-8"?>
  <error>
    <code>3</code>
    <message>API key is not valid</message>
  </error>
  

Examples

    curl \
    https://api.crowdin.com/api/project/{project-identifier}/export-status?login={username}&account-key={account-key}
    
    <?php
$request_url = 'https://api.crowdin.com/api/project/{project-identifier}/export-status?login={username}&account-key={account-key}';

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

$result = curl_exec($ch);
curl_close($ch);

echo $result;

Übersetzungen herunterladen

Deprecated

Download a ZIP file with translations. You can choose the language of translation you need or download all of them at once.
Note: This method downloads the ZIP file that was created during the last build. To make sure all the latest translations are included, please use Export Translations API method to build the project before downloading.
In case you wish to download translations for a single branch, make sure to build a separate ZIP file for that branch by specifying the branch name.

Request

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

GET https://api.crowdin.com/api/project/{project-identifier}/download/{package}.zip?login={username}&account-key={account-key}

Parameters

Name Value Description
branch optional string The name of related version branch (Versions Management).
Variables
project-identifier string Project identifier.
login string Your username in Crowdin.
account-key string Your account API key.
package string Language code or "all" to download a bundle with translations to all languages.

Examples

    #Download all translations as a single ZIP archive.
    wget https://api.crowdin.com/api/project/{project-identifier}/download/all.zip?login={username}&account-key={account-key}

    #Download French translations.
    wget https://api.crowdin.com/api/project/{project-identifier}/download/fr.zip?login={username}&account-key={account-key}

    #Download all translations from the master branch.
    wget https://api.crowdin.com/api/project/{project-identifier}/download/all.zip?login={username}&account-key={account-key}&branch=master
    
    <?php
ini_set('auto_detect_line_endings', 1);
ini_set('default_socket_timeout', 5); // socket timeout, just in case

file_put_contents('translations.zip', file_get_contents('https://api.crowdin.com/api/project/{project-identifier}/download/all.zip?login={username}&account-key={account-key}'));

Vorübersetzung

Deprecated

Pre-translate Crowdin project files.

Request

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}/pre-translate?login={username}&account-key={account-key}

Parameters

Name Value Description
languages required array Set of languages to which pre-translation should be applied. For this use Сrowdin language codes.
files required array Files array that should be translated. Array keys should contain file names with path in Crowdin project.
method optional string Defines which method will be used for pre-translation.
Acceptable values are:
  • "tm" — Pre-translation via Translation Memory
  • "mt" — Pre-translation via Machine Translation. Should be used with engine parameter.
Translation Memory is used by default.
engine optional string Defines engine for Machine Translation.
Acceptable values are:
  • "microsoft" — Pre-translation via Microsoft Translator
  • "google" — Pre-translation via Google Translate
  • "yandex" — Pre-translation via Yandex.Translate
Note: Ensure that you have set appropriate keys for Machine Translation.
approve_translated optional bool Automatically approves translated strings. Acceptable values are: 1 or 0. It works only with TM pre-translation method.
auto_approve_option optional int Defines which translations added by pre-translation via TM should be auto-approved.
Acceptable values are 0, 1, or 2. The default value is 0.
  • "0" — all
  • "1" — with perfect match
  • "2" — all (skip auto-substituted suggestions)
Note:Works only when "approve_translated" parameter is used with value 1.
import_duplicates optional bool Adds translations even if the same translation already exists. Acceptable values are: 1 or 0. It works only with TM pre-translation method.
apply_untranslated_strings_only optional bool Applies translations for untranslated strings only. Acceptable values are: 1 or 0. It works only with TM pre-translation method.
perfect_match optional bool Pre-translate will be applied only for those strings, that have absolute match in source text and contextual information. Acceptable values are: 1 or 0. It works only with TM pre-translation method.
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.
Variables
project-identifier string Project identifier.
login string Your username in Crowdin.
account-key string Your account API key.

Response

If the method is successful it responds with an XML structure, as it is shown below:
  <?xml version="1.0" encoding="UTF-8"?>
  <success>
  </success>
  
If you request languages that are not included in your project, the response looks like:
  <?xml version="1.0" encoding="UTF-8"?>
  <success>
    <languages>
      <language status="skipped">French</language>
    </languages>
  </success>
  
Unsuccessful response sample:
  <?xml version="1.0" encoding="UTF-8"?>
  <error>
    <code>3</code>
    <message>API key is not valid</message>
  </error>
  

Examples

    curl \
    -F "languages[]=fr" \
    -F "languages[]=uk" \
    -F "files[]=/example.txt" \
    https://api.crowdin.com/api/project/{project-identifier}/pre-translate?login={username}&account-key={account-key}
    
    <?php
$post_params = array();
$request_url = 'https://api.crowdin.com/api/project/{project-identifier}/pre-translate?login={username}&account-key={account-key}';
$post_params['languages[]'] = 'uk';
$post_params['files[]'] = '/example.txt';

$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);
curl_close($ch);

echo $result;

Kontoprojekte

Deprecated

Get projects list.

Request

POST https://api.crowdin.com/api/account/get-projects?account-key={account-key}&login={username}

Parameters

Name Value Description
login required string Your Crowdin Account login name.
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.
Variables
account-key string Account API key (Account Settings -> API tab).

Response

If successful, this method returns a XML structure, as it is shown below.
  <?xml version="1.0" encoding="UTF-8"?>
  <success>
    <project>
      <name>My Project</name>
      <identifier>my-project</identifier>
      <key>d8e8fca2dc0f896fd7cb4cb0031ba249</key>
    </project>
  </success>
  
Unsuccessful response sample:
  <?xml version="1.0" encoding="UTF-8"?>
  <error>
    <code>12</code>
    <message>Account key is invalid</message>
  </error>
  

Examples

    curl -F "login={crowdin-login-name}" https://api.crowdin.com/api/account/get-projects?account-key={account-key}
    
    <?php
$request_url = 'https://api.crowdin.com/api/account/get-projects?account-key={account-key}';

$post_params['login'] = '{crowdin-login-name}';


$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);
curl_close($ch);

echo $result;

Projekt erstellen

Deprecated

Create Crowdin project.

Request

POST https://api.crowdin.com/api/account/create-project?account-key={account-key}

Parameters

Name Value Description
login required string Your Crowdin Account login name.
name required string Project name.
identifier required string Project identifier. Should be unique among other Crowdin projects.
source_language required string Source files language. Crowdin language code.
languages required array An array of language codes project should be translate to.
join_policy required string Project join policy. Acceptable values are:
  • open
  • private
language_access_policy optional string Defines how project members can access target languages. Acceptable values are:
  • "open" - any translator can access any language. (default)
  • "moderate" - translator should be granted with access to certain language.
hide_duplicates optional int Defines whether duplicated strings should be displayed to translators or should be hidden and translated automatically. Acceptable values are:
  • 0: Show – translators will translate each instance separately
  • 1: Hide (regular detection) - all duplicates will share the same translation
  • 2: Show, but auto-translate them
  • 3: Show within a version branch (regular detection) - duplicates will be hidden only between version branches
  • 4: Hide (strict detection) - all duplicates will share the same translation
  • 5: Show within a version branch (strict detection) - duplicates will be hidden only between version branches
export_translated_only optional bool Defines whether only translated strings will be exported to the final file. We do not recommend to set this option if you have text (*.html, *.txt, *.docx etc.) documents in your project since it may damage resulted files. Acceptable values are: 1 or 0.
export_approved_only optional bool If set to 1 only approved translations will be exported in resulted ZIP file. Acceptable values are: 1 or 0.
auto_translate_dialects optional bool Untranslated strings of dialect will be translated automatically in exported file, leveraging translations from main language. Acceptable values are: 1 or 0.
public_downloads optional bool Defines whether "Download" button visible to everyone on Crowdin webpages. Acceptable values are: 1 or 0.
use_global_tm optional bool Defines if translations would be leveraged from Crowdin Global Translation Memory. When using this option any translations made in your project will be commited to Crowdin Global TM automatically. Acceptable values are: 1 or 0.
logo optional file Project logo at Crowdin.
cname optional string Custom domain name for Crowdin project.
description optional string Project description.
in_context optional bool Defines whether the In-Context should be active in the project. Acceptable values are: 1 or 0.
pseudo_language optional string Specify the language code for the In-Context's pseudo-language that will store some operational data.
qa_checks optional array Defines whether the QA checks should be active in the project. As a key you must specify QA check parameter (An Overview of QA Check Parameters). Possible keys are:
  • "enabled" — Enable of disable QA checks
  • "empty" — Empty translation
  • "size" — Length issues
  • "tags" — Tags mismatch
  • "spaces" — Spaces mismatch
  • "variables" — Variables mismatch
  • "punctuation" — Punctuation mismatch
  • "symbol_register" — Character case mismatch
  • "special_symbols" — Special characters mismatch
  • "wrong_translation" — “Incorrect translation” issues
  • "spellcheck" — Spelling
  • "icu" — ICU syntax
Acceptable values are: 1 or 0.
Note! This option is available only for organization plans.
webhook_file_translated optional string Open this URL when one of the project files is translated. URL will be opened with "project" - project identifier, "language" - language code, "file_id" - Crowdin file identifier and "file" - file name.
webhook_file_proofread optional string Open this URL when one of the project files is proofread. URL will be opened with "project" - project identifier, "language" - language code, "file_id" - Crowdin file identifier and "file" - file name.
webhook_project_translated optional string Open this URL when project translation is complete. URL will be opened with "project" - project identifier and "language" - language code.
webhook_project_proofread optional string Open this URL when project proofreading is complete. URL will be opened with "project" - project identifier and "language" - language code.
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.
Variables
account-key string Crowdin account API key.

Response

If the method is successful, it responds with an XML structure, as it is shown below (when language_access_policy = open).
  <?xml version="1.0" encoding="UTF-8"?>
  <project>
    <success>1</success>
    <invitation>http://translate.example.com/project/test-project-api/invite</invitation>
    <url>http://translate.example.com/project/test-project-api</url>
    <key>ca51cef8f852425496b1cdd3e86fea88</key>
  </project>
  
Response example for projects with "Moderate" language_access_policy.
  <?xml version="1.0" encoding="UTF-8"?>
  <project>
    <success>1</success>
    <invitation>
      <item>
        <language>Ukrainian</language>
        <translator>http://translate.example.com/project/test-project-api/invite?d=7585662585d5d32307d3937373</translator>
        <proofreader>http://translate.example.com/project/test-project-api/invite?d=3585k635r4d5d32307d3937373</proofreader>
      </item>
    </invitation>
    <url>https://crowdin.com/project/test-project-api</url>
    <key>d13720ba72204273af0321ca980945ec</key>
  </project>
  
Unsuccessful response sample:
  <?xml version="1.0" encoding="UTF-8"?>
  <error>
    <code>12</code>
    <message>Account key is invalid</message>
  </error>
  

Examples

    curl \
    -F "login=admin" \
    -F "logo=@logo.png" \
    -F "name=This is a test project" \
    -F "identifier=test-project-api" \
    -F "description=Brief Description" \
    -F "hide_duplicates=1" \
    -F "cname=translate.example.com" \
    -F "join_policy=open" \
    -F "languages[]=fr" \
    -F "languages[]=ru" \
    -F "export_approved_only=1" \
    -F "public_downloads=1" \
    -F "source_language=en" \
    -F "qa_checks[enabled]=1" \
    https://api.crowdin.com/api/account/create-project?account-key={account-key}
    
    <?php
$post_params = array();
$request_url = 'https://api.crowdin.com/api/account/create-project?account-key={account-key}';
$post_params['login'] = 'admin';
$post_params['name'] = 'Test Project';
$post_params['identifier'] = 'api-test-project';
$post_params['join_policy'] = 'private';
$post_params['languages[0]'] = 'fr';
$post_params['languages[1]'] = 'uk';
$post_params['source_language'] = 'en';
$post_params['qa_checks[enabled]'] = 1;

$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);
curl_close($ch);

echo $result;

Projekt bearbeiten

Deprecated

Edit Crowdin project.

Request

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}/edit-project?login={username}&account-key={account-key}

Parameters

Name Value Description
name optional string Project name.
languages optional array An array of language codes a project should be translate to.
join_policy optional string Project join policy. Acceptable values are:
  • open
  • private
language_access_policy optional string Defines how project members can access target languages. Acceptable values are:
  • "open" - any translator can access any language.
  • "moderate" - translator should be granted with access to certain language.
hide_duplicates optional int Defines whether duplicated strings should be displayed to translators or should be hidden and translated automatically. Acceptable values are:
  • 0: Show – translators will translate each instance separately
  • 1: Hide (regular detection) - all duplicates will share the same translation
  • 2: Show, but auto-translate them
  • 3: Show within a version branch (regular detection) - duplicates will be hidden only between version branches
  • 4: Hide (strict detection) - all duplicates will share the same translation
  • 5: Show within a version branch (strict detection) - duplicates will be hidden only between version branches
export_translated_only optional bool Defines whether only translated strings will be exported to the final file. We do not recommend to set this option if you have text (*.html, *.txt, *.docx etc.) documents in your project since it may damage resulted files. Acceptable values are: 1 or 0.
export_approved_only optional bool If set to 1 only approved translations will be exported in resulted ZIP file. Acceptable values are: 1 or 0.
auto_translate_dialects optional bool Untranslated strings of dialect will be translated automatically in exported file, leveraging translations from main language. Acceptable values are: 1 or 0.
public_downloads optional bool Defines whether "Download" button visible to everyone on Crowdin webpages. Acceptable values are: 1 or 0.
use_global_tm optional bool Defines if translations would be leveraged from Crowdin Global Translation Memory. When using this option any translations made in your project will be commited to Crowdin Global TM automatically. Acceptable values are: 1 or 0.
logo optional file Project logo at Crowdin.
cname optional string Custom domain name for Crowdin project.
description optional string Project description.
qa_checks optional array Defines whether the QA checks should be active in the project. As a key you must specify QA check parameter (An Overview of QA Check Parameters). Possible keys are:
  • "enabled" — Enable of disable QA checks
  • "empty" — Empty translation
  • "size" — Length issues
  • "tags" — Tags mismatch
  • "spaces" — Spaces mismatch
  • "variables" — Variables mismatch
  • "punctuation" — Punctuation mismatch
  • "symbol_register" — Character case mismatch
  • "special_symbols" — Special characters mismatch
  • "wrong_translation" — “Incorrect translation” issues
  • "spellcheck" — Spelling
  • "icu" — ICU syntax
Acceptable values are: 1 or 0.
Note! This option is available only for organization plans.
webhook_file_translated optional string Open this URL when one of the project files is translated. URL will be opened with "project" - project identifier, "language" - language code and "file" - file name.
webhook_file_proofread optional string Open this URL when one of the project files is proofread. URL will be opened with "project" - project identifier, "language" - language code and "file" - file name.
webhook_project_translated optional string Open this URL when project translation is complete. URL will be opened with "project" - project identifier and "language" - language code.
webhook_project_proofread optional string Open this URL when project proofreading is complete. URL will be opened with "project" - project identifier and "language" - language code.
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.
Variables
project-identifier string Project identifier.
login string Your username in Crowdin.
account-key string Your account API key.

Response

If the method is successful, it responds with an XML structure, as it is shown below (when language_access_policy = open).
  <?xml version="1.0" encoding="UTF-8"?>
  <project>
    <success>1</success>
    <invitation>http://translate.example.com/project/test-project-api/invite</invitation>
    <url>http://translate.example.com/project/test-project-api</url>
  </project>
  
Response example for projects with "Moderate" language_access_policy.
  <?xml version="1.0" encoding="UTF-8"?>
  <project>
    <success>1</success>
    <invitation>
      <item>
        <language>Ukrainian</language>
        <translator>http://translate.example.com/project/test-project-api/invite?d=7585662585d5d32307d3937373</translator>
        <proofreader>http://translate.example.com/project/test-project-api/invite?d=3585k635r4d5d32307d3937373</proofreader>
      </item>
    </invitation>
    <url>https://crowdin.com/project/test-project-api</url>
  </project>
  
Unsuccessful response sample:
  <?xml version="1.0" encoding="UTF-8"?>
  <error>
    <code>3</code>
    <message>API key is not valid</message>
  </error>
  

Examples

    curl \
    -F "logo=@logo.png" \
    -F "name=new project name" \
    -F "description=new project description" \
    -F "cname=new.example.com" \
    -F "languages[]=de" \
    -F "languages[]=fr" \
    -F "languages[]=zh-CN" \
    -F "hide_duplicates=1" \
    -F "export_approved_only=0" \
    -F "public_downloads=1" \
    -F "qa_checks[enabled]=1" \
    https://api.crowdin.com/api/project/{project-identifier}/edit-project?login={username}&account-key={account-key}
    
    <?php
$post_params = array();
$request_url = 'https://api.crowdin.com/api/project/{project-identifier}/edit-project?login={username}&account-key={account-key}';
$post_params['name'] = 'new project name';
$post_params['join_policy'] = 'open';
$post_params['languages[0]'] = 'fr';
$post_params['languages[1]'] = 'de';
$post_params['languages[2]'] = 'zh-CN';
$post_params['qa_checks[enabled]'] = 1;

$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);
curl_close($ch);

echo $result;

Projekt löschen

Deprecated

Delete Crowdin project with all translations.

Request

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

GET https://api.crowdin.com/api/project/{project-identifier}/delete-project?login={username}&account-key={account-key}

Parameters

Name Value Description
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.
Variables
project-identifier string Project identifier.
login string Your username in Crowdin.
account-key string Your account API key.

Response

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

Examples

    curl \
    https://api.crowdin.com/api/project/{project-identifier}/delete-project?login={username}&account-key={account-key}
    
    <?php
$request_url = 'https://api.crowdin.com/api/project/{project-identifier}/delete-project?login={username}&account-key={account-key}';

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

$result = curl_exec($ch);
curl_close($ch);

echo $result;

Ordner hinzufügen

Deprecated

Add directory to Crowdin project.

Request

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}/add-directory?login={username}&account-key={account-key}&name={directory name}

Parameters

Name Value Description
name required string Directory name (with path if nested directory should be created).
title optional string Directory title to be displayed in Crowdin UI.
export_pattern optional string Directory export pattern. Is used to create directory name and path in resulted translations bundle.
recursive optional bool If set to 1 each directory will be created from a nested name. Acceptable values are: 1 or 0. Default is 0.
is_branch optional bool If set to 1 the directory will be marked as a version branch. Acceptable values are: 1 or 0. Default is 0.
branch optional string The name of related version branch (Versions Management).
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.
Variables
project-identifier string Project identifier.
login string Your username in Crowdin.
account-key string Your account API key.

Response

If the method is successful, it responds with an XML structure, as it is shown below.
  <?xml version="1.0" encoding="UTF-8"?>
  <success>
  </success>
  
Unsuccessful response sample:
  <?xml version="1.0" encoding="UTF-8"?>
  <error>
    <code>3</code>
    <message>API key is not valid</message>
  </error>
  

Examples

    curl \
    -F "name=localizable" \
    https://api.crowdin.com/api/project/{project-identifier}/add-directory?login={username}&account-key={account-key}
    
    <?php
$post_params = array();
$request_url = 'https://api.crowdin.com/api/project/{project-identifier}/add-directory?login={username}&account-key={account-key}';
$post_params['name'] = '/localizable';

$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);
curl_close($ch);

echo $result;

Ordner ändern

Deprecated

Rename directory or modify its attributes. When renaming directory the path can not be changed (it means new_name parameter can not contain path, name only).

Request

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}/change-directory?login={username}&account-key={account-key}

Parameters

Name Value Description
name required string Full directory path that should be modified (e.g. /MainPage/AboutUs).
new_name optional string New directory name.
title optional string New directory title to be displayed in Crowdin UI.
export_pattern optional string New directory export pattern. Is used to create directory name and path in resulted translations bundle.
branch optional string The name of related version branch (Versions Management).
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.
Variables
project-identifier string Project identifier.
login string Your username in Crowdin.
account-key string Your account API key.

Response

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

Examples

    curl \
    -F "name=localizable" \
    -F "title=Website" \
    -F "new_name=translatable" \
    https://api.crowdin.com/api/project/{project-identifier}/change-directory?login={username}&account-key={account-key}
    
    <?php
$post_params = array();
$request_url = 'https://api.crowdin.com/api/project/{project-identifier}/change-directory?login={username}&account-key={account-key}';
$post_params['name'] = '/localizable/texts';
$post_params['new_name'] = 'translations';

$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);
curl_close($ch);

echo $result;

Ordner löschen

Deprecated

Delete Crowdin project directory. All nested files and directories will be deleted too.

Request

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}/delete-directory?login={username}&account-key={account-key}&name={directory name}

Parameters

Name Value Description
name required string Directory path (or just the name if it's a root directory).
branch optional string Name of the related version branch (Versions Management). Specify only if you want to delete a directory inside this branch.
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.
Variables
project-identifier string Project identifier.
login string Your username in Crowdin.
account-key string Your account API key.

Response

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

Examples

    curl \
    -F "name=localizable" \
    https://api.crowdin.com/api/project/{project-identifier}/delete-directory?login={username}&account-key={account-key}
    
    <?php
$post_params = array();
$request_url = 'https://api.crowdin.com/api/project/{project-identifier}/delete-directory?login={username}&account-key={account-key}';
$post_params['name'] = '/localizable/texts';

$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);
curl_close($ch);

echo $result;

Wörterbuch herunterladen

Deprecated

Download Crowdin project glossaries as TBX, CSV, or XLSX file.

Request

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

GET https://api.crowdin.com/api/project/{project-identifier}/download-glossary?login={username}&account-key={account-key}

Parameters

Name Value Description
include_assigned optional bool Defines whether the assigned glossaries should be included in downloaded TBX file. Acceptable values are: 0, 1.
Default is 1.
Variables
project-identifier string Project identifier.
login string Your username in Crowdin.
account-key string Your account API key.

Examples

    wget -O project.tbx https://api.crowdin.com/api/project/{project-identifier}/download-glossary?login={username}&account-key={account-key}
    
    <?php
ini_set('auto_detect_line_endings', 1); // allows file support for macintosh
ini_set('default_socket_timeout', 5); // socket timeout, just in case

file_put_contents('project.tbx', file_get_contents('https://api.crowdin.com/api/project/{project-identifier}/download-glossary?login={username}&account-key={account-key}'));

Wörterbuch hochladen

Deprecated

Upload your glossaries for Crowdin Project in TBX, CSV or XLS/XLSX file formats.

Request

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-glossary?login={username}&account-key={account-key}

Parameters

Name Value Description
file required file File in TBX, CSV or XLS/XLSX formats.
first_line_contains_header CSV and XLS/XLSX files only
optional
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
required
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=term_en,description_en,none,term_uk,description_uk
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.
Variables
project-identifier string Project identifier.
login string Your username in Crowdin.
account-key string Your account API key.

Response

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

Examples

    curl \
    -F "file=@glossary.tbx" \
    https://api.crowdin.com/api/project/{project-identifier}/upload-glossary?login={username}&account-key={account-key}
    
    curl \
    -F "file=@glossary.csv" \
    -F "first_line_contains_header=true" \
    -F "scheme=term_en,description_en,none,term_uk,description_uk" \
    https://api.crowdin.com/api/project/{project-identifier}/upload-glossary?login={username}&account-key={account-key}
    
    <?php
$post_params = array();
$request_url = 'https://api.crowdin.com/api/project/{project-identifier}/upload-glossary?login={username}&account-key={account-key}';

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

$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);
curl_close($ch);

echo $result;

Übersetzungsspeicher herunterladen

Deprecated

Download Crowdin project Translation Memory as TMX, CSV, or XLSX file.

Request

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

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

Parameters

Name Value Description
include_assigned optional bool Defines whether the assigned TMs should be included in downloaded TMX file. Acceptable values are: 0, 1.
Default is 1.
source_language optional string Defines a source language for language pair. Сrowdin language code should be used.
target_language optional string Defines a target language for language pair. Сrowdin language code should be used.
Variables
project-identifier string Project identifier.
login string Your username in Crowdin.
account-key string Your account API key.

Examples

    wget -O project.tmx "https://api.crowdin.com/api/project/{project-identifier}/download-tm?login={username}&account-key={account-key}"
    
    <?php
ini_set('auto_detect_line_endings', 1); // allows file support for macintosh
ini_set('default_socket_timeout', 5); // socket timeout, just in case

file_put_contents('project.tmx', file_get_contents('https://api.crowdin.com/api/project/{project-identifier}/download-tm?login={username}&account-key={account-key}'));

Übersetzungsspeicher hochladen

Deprecated

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

Request

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}

Parameters

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
optional
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
required
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.
Variables
project-identifier string Project identifier.
login string Your username in Crowdin.
account-key string Your account API key.

Response

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

Examples

    curl \
    -F "file=@translation-memory.tmx" \
    https://api.crowdin.com/api/project/{project-identifier}/upload-tm?login={username}&account-key={account-key}
    
    curl \
    -F "file=@tm.csv" \
    -F "first_line_contains_header=true" \
    -F "scheme=phrase_en,none,phrase_uk,phrase_fr" \
    https://api.crowdin.com/api/project/{project-identifier}/upload-tm?login={username}&account-key={account-key}
    
    <?php
$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);
curl_close($ch);

echo $result;

Unterstützte Sprachen

Deprecated

Get supported languages list with Crowdin codes mapped to locale name and standardized codes.

Request

GET https://api.crowdin.com/api/supported-languages

Parameters

Name Value Description
xml optional string May not contain value. Defines that response should be in XML format. Default.
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.

Response

If successful, this method returns a XML structure, as it is shown below.
  <?xml version="1.0" encoding="UTF-8"?>
  <languages>
    <language>
      <name>Romanian</name>
      <crowdin_code>ro</crowdin_code>
      <iso_639_1>ro</iso_639_1>
      <iso_639_3>ron</iso_639_3>
      <locale>ro-RO</locale>
      <android_code>ro-rRO</android_code>
      <osx_code>ro.lproj</osx_code>
      <osx_locale>ro</osx_locale>
    </language>
    <language>
      <name>French</name>
      <crowdin_code>fr</crowdin_code>
      <iso_639_1>fr</iso_639_1>
      <iso_639_3>fra</iso_639_3>
      <locale>fr-FR</locale>
      <android_code>fr-rFR</android_code>
      <osx_code>fr.lproj</osx_code>
      <osx_locale>fr</osx_locale>
    </language>
    <language>
      <name>Spanish</name>
      <crowdin_code>es-ES</crowdin_code>
      <iso_639_1>es</iso_639_1>
      <iso_639_3>spa</iso_639_3>
      <locale>es-ES</locale>
      <android_code>es-rES</android_code>
      <osx_code>es.lproj</osx_code>
      <osx_locale>es</osx_locale>
    </language>
    <language>
      <name>Afrikaans</name>
      <crowdin_code>af</crowdin_code>
      <iso_639_1>af</iso_639_1>
      <iso_639_3>afr</iso_639_3>
      <locale>af-ZA</locale>
      <android_code>af-rZA</android_code>
      <osx_code>af.lproj</osx_code>
      <osx_locale>af</osx_locale>
    </language>
    <!-- other languages -->
  </languages>
  
Unsuccessful response sample:
  <?xml version="1.0" encoding="UTF-8"?>
  <error>
    <code>2</code>
    <message>Unknown API action</message>
  </error>
  

Examples

    curl https://api.crowdin.com/api/supported-languages
    
    <?php
$request_url = 'https://api.crowdin.com/api/supported-languages';

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

$result = curl_exec($ch);
curl_close($ch);

print_r($result);

Scheinexport

Deprecated

Generate pseudotranslation files for the whole project.

Request

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

GET https://api.crowdin.com/api/project/{project-identifier}/pseudo-export?login={username}&account-key={account-key}

Parameters

Name Value Description
prefix optional string Add special characters at the beginning of each string to show where messages have been concatenated together.
suffix optional string Add special characters at the end of each string to show where messages have been concatenated together.
length_transformation optional integer Make string larger or shorter. Acceptable values must be from -50 to 100. Default is 0.
char_transformation optional string Transforms characters to other languages. Acceptable values are: asian, european, arabic.
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.
Variables
project-identifier string Project identifier.
login string Your username in Crowdin.
account-key string Your account API key.

Response

If the method is successful it responds with an XML structure, as it is shown below.
  <?xml version="1.0" encoding="UTF-8"?>
  <success>
  </success>
  
Unsuccessful response sample:
  <?xml version="1.0" encoding="UTF-8"?>
  <error>
    <code>3</code>
    <message>API key is not valid</message>
  </error>
  

Examples

    curl \
    https://api.crowdin.com/api/project/{project-identifier}/pseudo-export?login={username}&account-key={account-key}
    
    curl \
    -F "prefix=pref" \
    -F "suffix=suff" \
    -F "char_transformation=european"
    https://api.crowdin.com/api/project/{project-identifier}/pseudo-export?login={username}&account-key={account-key}
    
    <?php
$request_url = 'https://api.crowdin.com/api/project/{project-identifier}/pseudo-export?prefix=pref&login={username}&account-key={account-key}&type=txt';

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

$result = curl_exec($ch);
curl_close($ch);

echo $result;

Scheindownload

Deprecated

Download ZIP file with pseudo translations.

Request

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

GET https://api.crowdin.com/api/project/{project-identifier}/pseudo-download?login={username}&account-key={account-key}

Parameters

Name Value Description
project-identifier string Project identifier.
login string Your username in Crowdin.
account-key string Your account API key.

Examples

    wget https://api.crowdin.com/api/project/{project-identifier}/pseudo-download?login={username}&account-key={account-key}
    
    <?php
ini_set('auto_detect_line_endings', 1); // allows file support for macintosh
ini_set('default_socket_timeout', 5); // socket timeout, just in case

file_put_contents('pseudo.zip', file_get_contents('https://api.crowdin.com/api/project/{project-identifier}/pseudo-download?login={username}&account-key={account-key}'));

Voraussichtlicher Kosten-Bericht exportieren

Deprecated

Generate Costs Estimation report to have an insight on how to plan the budget. This report allows you to calculate the approximate translation cost of currently untranslated strings in the project.

Request

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}/reports/costs-estimation/export?login={username}&account-key={account-key}

Parameters

Name Value Description
unit optional string Defines the report unit. Acceptable values are: 'strings', 'words' (by default), 'chars', 'chars_with_spaces'.
mode optional string Defines the report mode. Acceptable values are: 'simple' (by default), 'fuzzy'.
calculate_internal_fuzzy_matches optional bool Available for fuzzy mode only. It counts all the internal matches, to check how many strings can be added to TM and used if the strings are translated one by one as listed. Keep in mind that calculations are approximate because strings might be translated in a different order. Acceptable values are: 1 or 0.
language required string The language for which the report should be generated. For this use Сrowdin language codes.
date_from optional date Strings added from. Use the following ISO 8601 date format: YYYY-MM-DD±hh:mm
date_to optional date Strings added to. Use the following ISO 8601 date format: YYYY-MM-DD±hh:mm
regular_rates optional array Defines the regular rates for the specified categories.
Possible categories for a report in the simple mode are: 'default', 'tm', and 'approval'.
Possible categories for a report in the fuzzy mode are: 'approval', 'translation', 'perfect', 'matched', and three customized ranges between 60% and 100% (for example: 99-90).
individual_rates optional array Defines individual rates for the specified languages in the specified categories. Each item must contain the language and the rate parameters. The possible rate categories are the same as for the 'regular_rates' parameter.
currency optional string Defines the currency for which the whole report is generated. Acceptable values are: '$' (by default), '€', '¥', '£', 'A$', 'C$', 'Fr', 'CN¥', 'kr', 'NZ$', 'MX$', 'S$', 'HK$', 'kr', '₩', '₺', '₽', '₹', 'R$', 'R'.
format optional string Defines the export file format. Acceptable values are 'csv' and 'xlsx' (by default).
json optional string May contain no value. Defines that the response should be in a JSON format.
jsonp optional string Callback function name. Defines that the response should be in a JSONP format.
Variables
project-identifier string Project identifier.
login string Your username in Crowdin.
account-key string Your account API key.

Response

If the method is successful it responds with an XML structure, as it is shown below.
  <?xml version="1.0" encoding="UTF-8"?>
  <success>
    <hash>x1ff24323a2f6058382b31fbc237bcd74</hash>
  </success>
  
Unsuccessful response sample:
  <?xml version="1.0" encoding="UTF-8"?>
  <error>
    <code>3</code>
    <message>API key is not valid</message>
  </error>
  

Examples

    curl \
    -F "unit=chars" \
    -F "mode=simple" \
    -F "format=csv" \
    -F "language=uk" \
    -F "date_from=2017-01-01" \
    -F "date_to=2017-01-03" \
    -F "regular_rates[default]=1.05" \
    -F "regular_rates[tm]=1.00" \
    -F "regular_rates[approval]=2.00" \
    https://api.crowdin.com/api/project/{project-identifier}/reports/costs-estimation/export?login={username}&account-key={account-key}
    
    curl \
    -F "unit=words" \
    -F "mode=fuzzy" \
    -F "format=xlsx" \
    -F "language=uk" \
    -F "date_from=2017-06-05+0200" \
    -F "regular_rates[translation]=2.05" \
    -F "regular_rates[perfect]=1.00" \
    -F "regular_rates[matched]=1.00" \
    -F "regular_rates[99-95]=1.03" \
    -F "regular_rates[94-90]=1.05" \
    -F "regular_rates[89-80]=1.20" \
    -F "regular_rates[approval]=3.00" \
    https://api.crowdin.com/api/project/{project-identifier}/reports/costs-estimation/export?login={username}&account-key={account-key}
    
    <?php
$request_url = 'https://api.crowdin.com/api/project/{project-identifier}/reports/costs-estimation/export?mode=words&login={username}&account-key={account-key}&language=uk';

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

$result = curl_exec($ch);
curl_close($ch);

echo $result;

Voraussichtlicher Kosten-Bericht herunterladen

Deprecated

Download previously generated Costs Estimation report.

Request

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

GET https://api.crowdin.com/api/project/{project-identifier}/reports/costs-estimation/download?login={username}&account-key={account-key}

Parameters

Name Value Description
hash required string Defines hash previously received from the export of Costs Estimation report method.
Variables
project-identifier string Project identifier.
login string Your username in Crowdin.
account-key string Your account API key.

Examples

    wget -O costs_estimation.csv "https://api.crowdin.com/api/project/{project-identifier}/reports/costs-estimation/download?login={username}&account-key={account-key}&hash=098f6bcd4621d373cade4e832627b4f6"
    
    <?php
ini_set('auto_detect_line_endings', 1); // allows file support for macintosh
ini_set('default_socket_timeout', 5); // socket timeout, just in case

file_put_contents('costs_estimation.csv', file_get_contents('https://api.crowdin.com/api/project/{project-identifier}/reports/costs-estimation/download?login={username}&account-key={account-key}&hash=098f6bcd4621d373cade4e832627b4f6'));

Übersetzungskosten-Bericht exportieren

Deprecated

Generate Translation Costs report to calculate the real translation cost and know how much your translators and proofreaders should be paid.

Request

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}/reports/translation-costs/export?login={username}&account-key={account-key}

Parameters

Name Value Description
unit optional string Defines the report unit. Acceptable values are: 'strings', 'words' (by default), 'chars', 'chars_with_spaces'.
mode optional string Defines the report mode. Acceptable values are: 'simple' (by default), 'fuzzy'.
date_from optional date Strings added from. Use the following ISO 8601 format: YYYY-MM-DD±hh:mm
date_to optional date Strings added to. Use the following ISO 8601 format: YYYY-MM-DD±hh:mm
regular_rates optional array Defines the regular rates for the specified categories.
Possible categories for a report in the simple mode are: 'default', 'tm', 'approval'.
Possible categories for a report in the fuzzy mode are: 'aproval', 'translation', 'perfect', 'matched' and three customized ranges between 60% and 100% (for example: 99-90).
individual_rates optional array Defines individual rates for the specified languages in the specified categories. Each item must contain the language and the rate parameters. The possible rate categories are the same as for the 'regular_rates' parameter.
currency optional string Defines the currency for which the whole report is generated. Acceptable values are: '$' (by default), '€', '¥', '£', 'A$', 'C$', 'Fr', 'CN¥', 'kr', 'NZ$', 'MX$', 'S$', 'HK$', 'kr', '₩', '₺', '₽', '₹', 'R$', 'R'.
format optional string Defines the export file format. Acceptable values are 'csv' and 'xlsx' (by default).
role_based_costs optional bool Defines whether the costs should be calculated based on contributions or on the role in the project. Possible values are 0 or 1. Default is 0.

0 – costs will be calculated for all the translations and approvals made by each project member, regardless of the role in the project;
1 – costs will be calculated based on the project member's role. Which means that all the translations and approvals made will be displayed, but the costs for translations are calculated only for translators, costs for approvals – only for proofreaders.
Note: contributions of the project members who are currently blocked, or with no access to the language will also be listed, but not included in the cost.
group_by optional string Group data by 'user' (default) or by 'language'.
json optional string May contain no value. Defines that the response should be in a JSON format.
jsonp optional string Callback function name. Defines that the response should be in a JSONP format.
Variables
project-identifier string Project identifier.
login string Your username in Crowdin.
account-key string Your account API key.

Response

If the method is successful it responds with an XML structure, as it is shown below.
  <?xml version="1.0" encoding="UTF-8"?>
  <success>
    <hash>x27bae8588c6904fe33b494fc3b3b8d40</hash>
  </success>
  
Unsuccessful response sample:
  <?xml version="1.0" encoding="UTF-8"?>
  <error>
    <code>3</code>
    <message>API key is not valid</message>
  </error>
  

Examples

    curl \
    -F "unit=chars" \
    -F "mode=simple" \
    -F "format=csv" \
    -F "regular_rates[default]=1.05" \
    -F "regular_rates[tm]=1.00" \
    -F "regular_rates[approval]=2.00" \
    -F "individual_rates[0][languages][]=uk" \
    -F "individual_rates[0][languages][]=ca" \
    -F "individual_rates[0][languages][]=af" \
    -F "individual_rates[0][languages][]=fr" \
    -F "individual_rates[0][rates][default]=1.40" \
    -F "individual_rates[0][rates][tm]=1.10" \
    -F "individual_rates[0][rates][approval]=2.00" \
    -F "individual_rates[1][languages][]=de" \
    -F "individual_rates[1][rates][default]=1.55" \
    -F "individual_rates[1][rates][tm]=1.20" \
    -F "individual_rates[1][rates][approval]=2.10" \
    https://api.crowdin.com/api/project/{project-identifier}/reports/translation-costs/export?login={username}&account-key={account-key}
    
    curl \
    -F "unit=words" \
    -F "mode=fuzzy" \
    -F "format=xlsx" \
    -F "regular_rates[translation]=2.05" \
    -F "regular_rates[perfect]=1.00" \
    -F "regular_rates[matched]=1.00" \
    -F "regular_rates[99-95]=1.03" \
    -F "regular_rates[94-90]=1.05" \
    -F "regular_rates[89-80]=1.20" \
    -F "regular_rates[approval]=3.00" \
    https://api.crowdin.com/api/project/{project-identifier}/reports/translation-costs/export?login={username}&account-key={account-key}
    
    <?php
$request_url = 'https://api.crowdin.com/api/project/{project-identifier}/reports/translation-costs/export?mode=words&login={username}&account-key={account-key}&language=uk';

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

$result = curl_exec($ch);
curl_close($ch);

echo $result;

Übersetzungskosten-Bericht herunterladen

Deprecated

Download previously generated Translation Costs report.

Request

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

GET https://api.crowdin.com/api/project/{project-identifier}/reports/translation-costs/download?login={username}&account-key={account-key}

Parameters

Name Value Description
hash required string Defines hash previously received from the export of Translation Costs report method.
Variables
project-identifier string Project identifier.
login string Your username in Crowdin.
account-key string Your account API key.

Examples

    wget -O translation_costs.csv "https://api.crowdin.com/api/project/{project-identifier}/reports/translation-costs/download?login={username}&account-key={account-key}&hash=098f6bcd4621d373cade4e832627b4f6"
    
    <?php
ini_set('auto_detect_line_endings', 1); // allows file support for macintosh
ini_set('default_socket_timeout', 5); // socket timeout, just in case

file_put_contents('translation_costs.csv', file_get_contents('https://api.crowdin.com/api/project/{project-identifier}/reports/translation-costs/download?login={username}&account-key={account-key}&hash=098f6bcd4621d373cade4e832627b4f6'));

Top-Mitglieder-Bericht exportieren

Deprecated

Generate Top Members report to know who contributed the most to your project's translation during the specified date range.

Request

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}/reports/top-members/export?login={username}&account-key={account-key}

Parameters

Name Value Description
unit optional string Defines the report unit. Acceptable values are: 'strings', 'words' (by default), 'chars', 'chars_with_spaces'.
language optional string The language for which the report should be generated. For this use Сrowdin language codes.
date_from optional date Strings added from. Use the following ISO 8601 format: YYYY-MM-DD ±hh:mm
date_to optional date Strings added to. Use the following ISO 8601 format: YYYY-MM-DD ±hh:mm
format optional string Defines the export file format. Acceptable values are 'csv' and 'xlsx' (by default).
json optional string May contain no value. Defines that response should be in JSON format.
jsonp optional string Callback function name. Defines that response should be in JSONP format.
Variables
project-identifier string Project identifier.
login string Your username in Crowdin.
account-key string Your account API key.

Response

If the method is successful it responds with an XML structure, as it is shown below.
  <?xml version="1.0" encoding="UTF-8"?>
  <success>
    <hash>cd798eb822227162375675b9a4e8a95a1</hash>
  </success>
  
Unsuccessful response sample:
  <?xml version="1.0" encoding="UTF-8"?>
  <error>
    <code>3</code>
    <message>API key is not valid</message>
  </error>
  

Examples

    curl \
    https://api.crowdin.com/api/project/{project-identifier}/reports/top-members/export?login={username}&account-key={account-key}
    
    curl \
    -F "unit=chars" \
    -F "format=csv" \
    -F "language=uk" \
    https://api.crowdin.com/api/project/{project-identifier}/reports/top-members/export?login={username}&account-key={account-key}
    
    <?php
$request_url = 'https://api.crowdin.com/api/project/{project-identifier}/reports/top-members/export?mode=words&login={username}&account-key={account-key}&language=uk';

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

$result = curl_exec($ch);
curl_close($ch);

echo $result;

Top-Mitglieder-Bericht herunterladen

Deprecated

Download previously generated Top Members report.

Request

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

GET https://api.crowdin.com/api/project/{project-identifier}/reports/top-members/download?login={username}&account-key={account-key}

Parameters

Name Value Description
hash required string Defines hash previously received from the export of Top Members report method.
Variables
project-identifier string Project identifier.
login string Your username in Crowdin.
account-key string Your account API key.

Examples

    wget -O top_members.csv "https://api.crowdin.com/api/project/{project-identifier}/reports/top-members/download?login={username}&account-key={account-key}&hash=098f6bcd4621d373cade4e832627b4f6"
    
    <?php
ini_set('auto_detect_line_endings', 1); // allows file support for macintosh
ini_set('default_socket_timeout', 5); // socket timeout, just in case

file_put_contents('top_members.csv', file_get_contents('https://api.crowdin.com/api/project/{project-identifier}/reports/top-members/download?login={username}&account-key={account-key}&hash=098f6bcd4621d373cade4e832627b4f6'));

Fehlercodes

Deprecated

The Crowdin API gives you access to almost all of the features available in your account, letting you automate a lot of common operations. If you need help working with the API please do not hesitate to contact us.

War dieser Artikel hilfreich?