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.
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.
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.
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.
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.
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.”
Add a new file to Crowdin project.
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:
|
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:
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:
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. |
<?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>
<?xml version="1.0" encoding="UTF-8"?>
<error>
<code>3</code>
<message>API key is not valid</message>
</error>
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;
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:
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:
|
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. |
<?xml version="1.0" encoding="UTF-8"?>
<success>
</success>
<?xml version="1.0" encoding="UTF-8"?>
<error>
<code>3</code>
<message>API key is not valid</message>
</error>
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;
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. |
<?xml version="1.0" encoding="UTF-8"?>
<success>
</success>
<?xml version="1.0" encoding="UTF-8"?>
<error>
<code>3</code>
<message>API key is not valid</message>
</error>
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;
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. |
<?xml version="1.0" encoding="UTF-8"?>
<success>
</success>
<?xml version="1.0" encoding="UTF-8"?>
<error>
<code>3</code>
<message>API key is not valid</message>
</error>
<?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>
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;
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. |
<?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>
<?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>
<?xml version="1.0" encoding="UTF-8"?>
<error>
<code>3</code>
<message>API key is not valid</message>
</error>
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;
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. |
<?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>
<?xml version="1.0" encoding="UTF-8"?>
<error>
<code>10</code>
<message>Language was not found</message>
</error>
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;
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. |
<?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>
<?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>
<?xml version="1.0" encoding="UTF-8"?>
<error>
<code>3</code>
<message>API key is not valid</message>
</error>
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;
Name | Value | Description |
---|---|---|
type optional | string | Defines the issue type. Acceptable values are:
|
status optional | string | Defines the issue resolution status. Acceptable values are:
|
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. |
<?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>
<?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>
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;
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. |
#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;
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.
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. |
<?xml version="1.0" encoding="UTF-8"?>
<success status="built">
</success>
<?xml version="1.0" encoding="UTF-8"?>
<success status="skipped">
</success>
<?xml version="1.0" encoding="UTF-8"?>
<error>
<code>3</code>
<message>API key is not valid</message>
</error>
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;
Get the status of translations export.
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. |
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>
<?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>
<?xml version="1.0" encoding="UTF-8"?>
<success>
<status>none</status>
<progress>0</progress>
<last_build>never</last_build>
</success>
<?xml version="1.0" encoding="UTF-8"?>
<error>
<code>3</code>
<message>API key is not valid</message>
</error>
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;
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. |
#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}'));
Pre-translate Crowdin project files.
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:
|
engine optional | string | Defines engine for Machine Translation. Acceptable values are:
|
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.
|
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. |
<?xml version="1.0" encoding="UTF-8"?>
<success>
</success>
<?xml version="1.0" encoding="UTF-8"?>
<success>
<languages>
<language status="skipped">French</language>
</languages>
</success>
<?xml version="1.0" encoding="UTF-8"?>
<error>
<code>3</code>
<message>API key is not valid</message>
</error>
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;
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). |
<?xml version="1.0" encoding="UTF-8"?>
<success>
<project>
<name>My Project</name>
<identifier>my-project</identifier>
<key>d8e8fca2dc0f896fd7cb4cb0031ba249</key>
</project>
</success>
<?xml version="1.0" encoding="UTF-8"?>
<error>
<code>12</code>
<message>Account key is invalid</message>
</error>
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;
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:
|
language_access_policy optional | string | Defines how project members can access target languages. Acceptable values are:
|
hide_duplicates optional | int | Defines whether duplicated strings should be displayed to translators or should be hidden and translated automatically. Acceptable values are:
|
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:
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. |
<?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>
<?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>
<?xml version="1.0" encoding="UTF-8"?>
<error>
<code>12</code>
<message>Account key is invalid</message>
</error>
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;
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:
|
language_access_policy optional | string | Defines how project members can access target languages. Acceptable values are:
|
hide_duplicates optional | int | Defines whether duplicated strings should be displayed to translators or should be hidden and translated automatically. Acceptable values are:
|
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:
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. |
<?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>
<?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>
<?xml version="1.0" encoding="UTF-8"?>
<error>
<code>3</code>
<message>API key is not valid</message>
</error>
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;
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. |
<?xml version="1.0" encoding="UTF-8"?>
<success>
</success>
<?xml version="1.0" encoding="UTF-8"?>
<error>
<code>3</code>
<message>API key is not valid</message>
</error>
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;
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. |
<?xml version="1.0" encoding="UTF-8"?>
<success>
</success>
<?xml version="1.0" encoding="UTF-8"?>
<error>
<code>3</code>
<message>API key is not valid</message>
</error>
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;
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. |
<?xml version="1.0" encoding="UTF-8"?>
<success>
</success>
<?xml version="1.0" encoding="UTF-8"?>
<error>
<code>3</code>
<message>API key is not valid</message>
</error>
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;
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. |
<?xml version="1.0" encoding="UTF-8"?>
<success>
</success>
<?xml version="1.0" encoding="UTF-8"?>
<error>
<code>3</code>
<message>API key is not valid</message>
</error>
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;
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. |
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}'));
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):
|
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. |
<?xml version="1.0" encoding="UTF-8"?>
<success>
</success>
<?xml version="1.0" encoding="UTF-8"?>
<error>
<code>3</code>
<message>API key is not valid</message>
</error>
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;
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. |
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}'));
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):
|
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. |
<?xml version="1.0" encoding="UTF-8"?>
<success>
</success>
<?xml version="1.0" encoding="UTF-8"?>
<error>
<code>3</code>
<message>API key is not valid</message>
</error>
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;
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. |
<?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>
<?xml version="1.0" encoding="UTF-8"?>
<error>
<code>2</code>
<message>Unknown API action</message>
</error>
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);
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. |
<?xml version="1.0" encoding="UTF-8"?>
<success>
</success>
<?xml version="1.0" encoding="UTF-8"?>
<error>
<code>3</code>
<message>API key is not valid</message>
</error>
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;
Name | Value | Description |
---|---|---|
project-identifier | string | Project identifier. |
login | string | Your username in Crowdin. |
account-key | string | Your account API key. |
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}'));
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. |
<?xml version="1.0" encoding="UTF-8"?>
<success>
<hash>x1ff24323a2f6058382b31fbc237bcd74</hash>
</success>
<?xml version="1.0" encoding="UTF-8"?>
<error>
<code>3</code>
<message>API key is not valid</message>
</error>
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;
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. |
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'));
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. |
<?xml version="1.0" encoding="UTF-8"?>
<success>
<hash>x27bae8588c6904fe33b494fc3b3b8d40</hash>
</success>
<?xml version="1.0" encoding="UTF-8"?>
<error>
<code>3</code>
<message>API key is not valid</message>
</error>
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;
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. |
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'));
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. |
<?xml version="1.0" encoding="UTF-8"?>
<success>
<hash>cd798eb822227162375675b9a4e8a95a1</hash>
</success>
<?xml version="1.0" encoding="UTF-8"?>
<error>
<code>3</code>
<message>API key is not valid</message>
</error>
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;
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. |
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'));
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.