To perform an action using the API, send a request to the API endpoint and a response will then be sent back to you.
The POEditor API consists of a set of callable methods.
The request should be POST.
The response you'll get will be a JSON encoded object.
If the response is not sucessful, the JSON object will contain an error code and a message. You can find the full list here.
All requests to the API must contain the parameter api_token
. You can get this key from your POEditor account. You'll find it in Account Settings > API Access.
Please take care of your token.
If you think the key has been compromised, you can reset it from Account Settings > API Access by clicking the Regenerate API Token button, or you can delete the API Access using the Remove API Token button.
https://api.poeditor.com/v2/projects/list
Returns the list of projects owned by user.
Argument | Value | |
---|---|---|
api_token
required |
Get token readonly accepted | |
curl -X POST https://api.poeditor.com/v2/projects/list \
-d api_token="a9824103d8729b923fbe1d268ec69ef9"
{ "response": { "status": "success", "code": "200", "message": "OK" }, "result": { "projects": [ { "id": 4886, "name": "Twentytwelve", "public": 0, "open": 0, "created": "2013-04-12T09:24:42+0000" }, { "id": 4537, "name": "contact form", "public": 0, "open": 0, "created": "2013-04-02T23:00:06+0000" }, { "id": 6639, "name": "POEditor WP plugin", "public": 0, "open": 0, "created": "2013-06-05T17:41:25+0000" }, { "id": 6268, "name": "Test Project", "public": 0, "open": 0, "created": "2013-05-23T14:26:34+0000" } ] } }
https://api.poeditor.com/v2/projects/view
Returns project's details.
Argument | Value | |
---|---|---|
api_token
required |
Get token readonly accepted | |
id
required |
<integer> | The id of project |
curl -X POST https://api.poeditor.com/v2/projects/view \
-d api_token="a9824103d8729b923fbe1d268ec69ef9" \
-d id="7717"
{ "response": { "status": "success", "code": "200", "message": "OK" }, "result": { "project": { "id": 7717, "name": "Automobile", "description": "Automobile", "public": 0, "open": 0, "reference_language": "fr", "terms": 783, "created": "2013-07-04T17:44:37+0000" } } }
https://api.poeditor.com/v2/projects/add
Creates a new project.
Returns project details (if successful).
Argument | Value | |
---|---|---|
api_token
required |
Get token | |
name
required |
<string> | The name of the project |
description
optional |
<string> | The description of the project |
curl -X POST https://api.poeditor.com/v2/projects/add \
-d api_token="a9824103d8729b923fbe1d268ec69ef9" \
-d name="Automobile"
{ "response": { "status": "success", "code": "200", "message": "Project created." }, "result": { "project": { "id": 7717, "name": "Automobile", "description": "", "public": 0, "open": 0, "reference_language": "", "terms": 0, "created": "2014-08-13T09:39:32+0000" } } }
https://api.poeditor.com/v2/projects/update
Updates project settings (name, description, reference language)
If optional parameters are not sent, their respective fields are not updated.
Argument | Value | |
---|---|---|
api_token
required |
Get token | |
id
required |
<integer> | The id of project |
name
optional |
<string> | The name of the project |
description
optional |
<string> | The description of the project |
reference_language
optional |
<string> | The language code |
curl -X POST https://api.poeditor.com/v2/projects/update \
-d api_token="a9824103d8729b923fbe1d268ec69ef9" \
-d id="7717" \
-d name="Automobile" \
-d reference_language="fr"
{ "response": { "status": "success", "code": "200", "message": "OK" }, "result": { "project": { "id": 7717, "name": "Automobile", "description": "", "public": 1, "open": 0, "reference_language": "en", "terms": 184, "created": "2014-08-13T09:39:32+0000" } } }
https://api.poeditor.com/v2/projects/delete
Deletes the project from the account.
You must be the owner of the project.
Argument | Value | |
---|---|---|
api_token
required |
Get token | |
id
required |
<integer> | The id of project |
curl -X POST https://api.poeditor.com/v2/projects/delete \
-d api_token="a9824103d8729b923fbe1d268ec69ef9" \
-d id="7717"
{ "response": { "status": "success", "code": "200", "message": "Project was deleted: Automobile [7717]" } }
https://api.poeditor.com/v2/projects/upload
Updates terms / translations - No more than one request every 30 seconds.
Argument | Value | |
---|---|---|
api_token
required |
Get token | |
id
required |
<integer> | The id of project |
updating
required |
terms | terms_translations | translations |
|
file
required |
<file> | Uploaded file (.po, .xls or any of the supported file formats) |
language
optional |
<string> |
The language code (Required only if updating is terms_translations or translations ) |
overwrite
optional |
0 | 1 |
Set it to 1 if you want to overwrite translations |
sync_terms
optional |
0 | 1 |
Set it to 1 if you want to sync your terms (terms that are not found in the uploaded file will be deleted from project and the new ones added). Ignored if updating = translations . |
tags
optional |
<string> | Add tags to the project terms; available when updating terms or terms_translations; you can use the following keys: "all" - for the all the imported terms, "new" - for the terms which aren't already in the project, "obsolete" - for the terms which are in the project but not in the imported file and "overwritten_translations" - for the terms for which translations change (example) |
read_from_source
optional |
0 | 1 |
For .xliff format only - set it to 1 if you want to import translations from the source tag |
fuzzy_trigger
optional |
0 | 1 |
Set it to 1 to mark corresponding translations from the other languages as fuzzy for the updated values |
curl -X POST https://api.poeditor.com/v2/projects/upload \
-F api_token="a9824103d8729b923fbe1d268ec69ef9" \
-F id="7717" \
-F updating="terms" \
-F file=@"pathtofile/filename.po" \
-F tags="{\"obsolete\":\"removed-strings\"}"
{ "response": { "status": "success", "code": "200", "message": "OK" }, "result": { "terms": { "parsed": 1017, "added": 1017, "deleted": 0 }, "translations": { "parsed": 0, "added": 0, "updated": 0 } } }
# If not specified, the tags are set by default to all terms. tags=["name-of-tag", "name-of-another-tag"] tags={"all":"name-of-tag"} tags={"all":"name-of-tag","new":["name-of-tag"],"obsolete":["name-of-tag", "name-of-another-tag"]}
https://api.poeditor.com/v2/projects/sync
Syncs your project with the array you send (terms that are not found in the JSON object will be deleted from project and the new ones added).
Please use with caution. If wrong data is sent, existing terms and their translations might be irreversibly lost.
Argument | Value | |
---|---|---|
api_token
required |
Get token | |
id
required |
<integer> | The id of project |
data
required |
<string> | JSON format (example) |
curl -X POST https://api.poeditor.com/v2/projects/sync \
-d api_token="a9824103d8729b923fbe1d268ec69ef9" \
-d id="7717" \
-d data="[{\"term\":\"Add new list\"}, {\"term\":\"Add new item\"}]"
{ "response": { "status": "success", "code": "200", "message": "OK" }, "result": { "terms": { "parsed": 2, "added": 2, "updated": 0, "deleted": 2446 } } }
[ { "term": "Add new list", "context": "", "reference": "\/projects", "plural": "", "comment": "" }, { "term": "one project found", "context": "", "reference": "\/projects", "plural": "%d projects found", "comment": "Make sure you translate the plural forms", "tags": [ "first_tag", "second_tag" ] }, { "term": "Show all projects", "context": "", "reference": "\/projects", "plural": "", "tags": "just_a_tag" } ]
https://api.poeditor.com/v2/projects/export
Returns the link of the file (expires after 10 minutes).
Argument | Value | |
---|---|---|
api_token
required |
Get token readonly accepted | |
id
required |
<integer> | The id of project |
language
required |
<string> | The language code |
type
required |
<string> | File format (po, pot, mo, xls, xlsx, csv, ini, resw, resx, android_strings, apple_strings, xliff, properties, key_value_json, json, yml, xlf, xmb, xtb, arb, rise_360_xliff) |
filters
optional |
<string> | Filter results by 'translated', 'untranslated', 'fuzzy', 'not_fuzzy', 'automatic', 'not_automatic', 'proofread', 'not_proofread' (only available when Proofreading is set to "Yes" in Project Settings); you can use either a string for a single filter or a json array for one or multiple filter (example) |
order
optional |
<string> |
Set it to terms to order results by 'terms' alphabetically. |
tags
optional |
<string> | Filter results by tags; you can use either a string for a single tag or a json array for one or multiple tags (example) |
options
optional |
<string> |
Set specific advanced options for particular formats (where these exist). The value must be an array an objects. Can be used to export in Android XML format without wrapping the strings in quotes. (example) |
curl -X POST https://api.poeditor.com/v2/projects/export \
-d api_token="a9824103d8729b923fbe1d268ec69ef9" \
-d id="7717" \
-d language="fr" \
-d type="po"
{ "response": { "status": "success", "code": "200", "message": "OK" }, "result": { "url": "https:\/\/api.poeditor.com\/v2\/download\/file\/b577a66ac39d82995debfabc016f855d" } }
filters=translated filters=["translated"] filters=["translated", "not_fuzzy"]
tags=name-of-tag tags=["name-of-tag"] tags=["name-of-tag", "name-of-another-tag"]
// Android Strings exported without wrapping the strings in quotes options=[{"unquoted": 1}]
https://api.poeditor.com/v2/languages/available
Returns a comprehensive list of all languages supported by POEditor. You can find it here, too.
Argument | Value | |
---|---|---|
api_token
required |
Get token readonly accepted | |
curl -X POST https://api.poeditor.com/v2/languages/available \
-d api_token="a9824103d8729b923fbe1d268ec69ef9"
{ "response": { "status": "success", "code": "200", "message": "OK" }, "result": { "languages": [ { "name": "Abkhazian", "code": "ab" }, { "name": "Afar", "code": "aa" }, { "name": "Afrikaans", "code": "af" }, { "name": "Akan", "code": "ak" }, { "name": "Albanian", "code": "sq" }, { "name": "Amharic", "code": "am" }, { "name": "Arabic", "code": "ar" }, { "name": "Aragonese", "code": "an" }, { "name": "Armenian", "code": "hy" }, { "name": "Assamese", "code": "as" }, { "name": "Yiddish", "code": "yi" }, { "name": "Yoruba", "code": "yo" }, { "name": "Zhuang; Chuang", "code": "za" }, { "name": "Zulu", "code": "zu" } ] } }
https://api.poeditor.com/v2/languages/list
Returns project languages, percentage of translation done for each and the datetime (UTC - ISO 8601) when the last change was made.
Argument | Value | |
---|---|---|
api_token
required |
Get token readonly accepted | |
id
required |
<integer> | The id of project |
curl -X POST https://api.poeditor.com/v2/languages/list \
-d api_token="a9824103d8729b923fbe1d268ec69ef9" \
-d id="7717"
{ "response": { "status": "success", "code": "200", "message": "OK" }, "result": { "languages": [ { "name": "English", "code": "en", "translations": 13, "percentage": 12.5, "updated": "2015-05-04T14:21:41+0000" }, { "name": "French", "code": "fr", "translations": 70, "percentage": 68.75, "updated": "2015-04-30T08:59:34+0000" } ] } }
https://api.poeditor.com/v2/languages/add
Adds a new language to project.
Argument | Value | |
---|---|---|
api_token
required |
Get token | |
id
required |
<integer> | The id of project |
language
required |
<string> | The language code |
curl -X POST https://api.poeditor.com/v2/languages/add \
-d api_token="a9824103d8729b923fbe1d268ec69ef9" \
-d id="7717" \
-d language="de"
{ "response": { "status": "success", "code": "200", "message": "Language was added: German [de]" } }
https://api.poeditor.com/v2/languages/update
Inserts / overwrites translations.
Argument | Value | |
---|---|---|
api_token
required |
Get token | |
id
required |
<integer> | The id of project |
language
required |
<string> | The language code |
fuzzy_trigger
optional |
0 | 1 |
Set it to 1 to mark corresponding translations from the other languages as fuzzy for the updated values |
data
required |
<string> | JSON format (example) |
curl -X POST https://api.poeditor.com/v2/languages/update \
-d api_token="a9824103d8729b923fbe1d268ec69ef9" \
-d id="7717" \
-d language="fr" \
-d data="[{\"term\":\"Projects\",\"context\":\"project list\",\"translation\":{\"content\":\"Des projets\",\"fuzzy\":0}}]"
{ "response": { "status": "success", "code": "200", "message": "OK" }, "result": { "translations": { "parsed": 1, "added": 1, "updated": 0 } } }
[ { "term": "Projects", "context": "project list", "translation": { "content": "Des projets", "fuzzy": 0 } } ]
[ { "term": "%d Projects available", "context": "project list", "translation": { "content": { "one": "Un projet disponible", "other": "%d Projets disponibles" }, "fuzzy": 1 } } ]
https://api.poeditor.com/v2/languages/delete
Deletes existing language from project.
Argument | Value | |
---|---|---|
api_token
required |
Get token | |
id
required |
<integer> | The id of project |
language
required |
<string> | The language code |
curl -X POST https://api.poeditor.com/v2/languages/delete \
-d api_token="a9824103d8729b923fbe1d268ec69ef9" \
-d id="7717" \
-d language="de"
{ "response": { "status": "success", "code": "200", "message": "Language was deleted: German [de]" } }
https://api.poeditor.com/v2/terms/list
Returns project's terms and translations if the argument language is provided.
Argument | Value | |
---|---|---|
api_token
required |
Get token readonly accepted | |
id
required |
<integer> | The id of project |
language
optional |
<string> | The language code |
curl -X POST https://api.poeditor.com/v2/terms/list \
-d api_token="a9824103d8729b923fbe1d268ec69ef9" \
-d id="7717" \
-d language="en"
//proofread is included in the response if the project has proofreading enabled
{ "response": { "status": "success", "code": "200", "message": "OK" }, "result": { "terms": [ { "term": "app_name", "context": "", "plural": "", "created": "2013-06-10T11:08:54+0000", "updated": "", "translation": { "content": "TODO List", "fuzzy": 0, "proofread": 1, "updated": "2013-06-12T11:08:54+0000" }, "reference": "", "tags": [ "first_upload", "second_upload" ], "comment": "Don't translate the name of the app" }, { "term": "mark_as_unread", "context": "", "plural": "", "created": "2013-06-10T11:08:54+0000", "updated": "", "translation": { "content": "", "fuzzy": 0, "proofread": 0, "updated": "" }, "reference": "", "tags": [ "second_upload" ], "comment": "" }, { "term": "One Item", "context": "", "plural": "%d Items", "created": "2013-06-10T11:24:12+0000", "updated": "", "translation": { "content": { "one": "", "other": "" }, "fuzzy": 0, "proofread": 0, "updated": "" }, "reference": "", "tags": [], "comment": "" } ] } }
https://api.poeditor.com/v2/terms/add
Adds terms to project.
Argument | Value | |
---|---|---|
api_token
required |
Get token | |
id
required |
<integer> | The id of project |
data
required |
<string> | JSON format (example) |
curl -X POST https://api.poeditor.com/v2/terms/add \
-d api_token="a9824103d8729b923fbe1d268ec69ef9" \
-d id="7717" \
-d data="[{\"term\":\"Add new list\"}]"
{ "response": { "status": "success", "code": "200", "message": "OK" }, "result": { "terms": { "parsed": 1, "added": 1 } } }
[ { "term": "Add new list", "context": "", "reference": "\/projects", "plural": "", "comment": "" }, { "term": "one project found", "context": "", "reference": "\/projects", "plural": "%d projects found", "comment": "Make sure you translate the plural forms", "tags": [ "first_tag", "second_tag" ] }, { "term": "Show all projects", "context": "", "reference": "\/projects", "plural": "", "tags": "just_a_tag" } ]
https://api.poeditor.com/v2/terms/update
Updates project terms. Lets you change the text, context, reference, plural and tags.
Argument | Value | |
---|---|---|
api_token
required |
Get token | |
id
required |
<integer> | The id of project |
data
required |
<string> | JSON format (example) |
fuzzy_trigger
optional |
0 | 1 |
Set it to 1 to mark corresponding translations from all languages as fuzzy for the updated values |
curl -X POST https://api.poeditor.com/v2/terms/update \
-d api_token="a9824103d8729b923fbe1d268ec69ef9" \
-d id="7717" \
-d data="[{\"term\":\"Add new list\", \"new_term\": \"Save list\"}]"
{ "response": { "status": "success", "code": "200", "message": "OK" }, "result": { "terms": { "parsed": 2, "updated": 2 } } }
[ { "term": "Add new list", "context": "", "new_term": "Save list", "new_context": "", "reference": "\/projects", "plural": "", "comment": "", "tags": [ "first_tag", "second_tag" ] }, { "term": "Display list", "context": "", "new_term": "Show list", "new_context": "" } ]
https://api.poeditor.com/v2/terms/delete
Deletes terms from project.
Argument | Value | |
---|---|---|
api_token
required |
Get token | |
id
required |
<integer> | The id of project |
data
required |
<string> | JSON format (example) |
curl -X POST https://api.poeditor.com/v2/terms/delete \
-d api_token="a9824103d8729b923fbe1d268ec69ef9" \
-d id="7717" \
-d data="[{\"term\":\"one project found\", \"context\":\"\"}, {\"term\":\"Show all projects\", \"context\":\"form\"}]"
{ "response": { "status": "success", "code": "200", "message": "OK" }, "result": { "terms": { "parsed": 2, "deleted": 2 } } }
[ { "term": "one project found", "context": "" }, { "term": "Show all projects", "context": "form" } ]
https://api.poeditor.com/v2/terms/add_comment
Adds comments to existing terms.
Argument | Value | |
---|---|---|
api_token
required |
Get token | |
id
required |
<integer> | The id of project |
data
required |
<string> | JSON format (example) |
curl -X POST https://api.poeditor.com/v2/terms/add_comment \
-d api_token="a9824103d8729b923fbe1d268ec69ef9" \
-d id="7717" \
-d data="[{\"term\":\"Add new list\", \"comment\":\"This is a button\"}, {\"term\":\"Show all projects\", \"comment\":\"This is a button\"}]"
{ "response": { "status": "success", "code": "200", "message": "OK" }, "result": { "terms": { "parsed": 2, "with_added_comment": 2 } } }
[ { "term": "Add new list", "context": "", "comment": "This is a button" }, { "term": "one project found", "context": "", "comment": "Make sure you translate the plural forms" }, { "term": "Show all projects", "context": "", "comment": "This is a button" } ]
https://api.poeditor.com/v2/translations/add
Adds translations to project. If translation exists, it will not overwrite it.
Argument | Value | |
---|---|---|
api_token
required |
Get token | |
id
required |
<integer> | The id of project |
language
required |
<string> | The language code |
data
required |
<string> | JSON format (example) |
curl -X POST https://api.poeditor.com/v2/translations/add \
-d api_token="a9824103d8729b923fbe1d268ec69ef9" \
-d id="7717" \
-d language="en" \
-d data="[{\"term\":\"Projects\",\"context\":\"project list\",\"translation\":{\"content\":\"Des projets\"}}]"
{ "response": { "status": "success", "code": "200", "message": "OK" }, "result": { "translations": { "parsed": 1, "added": 1 } } }
[ { "term": "Projects", "context": "project list", "translation": { "content": "Des projets" } } ]
[ { "term": "%d Projects available", "context": "project list", "translation": { "content": { "one": "Un projet disponible", "other": "%d Projets disponibles" } } } ]
https://api.poeditor.com/v2/translations/update
Updates existing translations.
Argument | Value | |
---|---|---|
api_token
required |
Get token | |
id
required |
<integer> | The id of project |
language
required |
<string> | The language code |
data
required |
<string> | JSON format (example) |
curl -X POST https://api.poeditor.com/v2/translations/update \
-d api_token="a9824103d8729b923fbe1d268ec69ef9" \
-d id="7717" \
-d language="en" \
-d data="[{\"term\":\"Projects\",\"context\":\"project list\",\"translation\":{\"content\":\"Des projets\"}}]"
{ "response": { "status": "success", "code": "200", "message": "OK" }, "result": { "translations": { "parsed": 1, "updated": 1 } } }
[ { "term": "Projects", "context": "project list", "translation": { "content": "Des projets" } } ]
[ { "term": "%d Projects available", "context": "project list", "translation": { "content": { "one": "Un projet disponible", "other": "%d Projets disponibles" } } } ]
https://api.poeditor.com/v2/translations/delete
Deletes translations from specified language.
Argument | Value | |
---|---|---|
api_token
required |
Get token | |
id
required |
<integer> | The id of project |
language
required |
<string> | The language code |
data
required |
<string> | JSON format (example) |
curl -X POST https://api.poeditor.com/v2/translations/delete \
-d api_token="a9824103d8729b923fbe1d268ec69ef9" \
-d id="7717" \
-d language="en" \
-d data="[{\"term\":\"Projects\",\"context\":\"project list\"}, {\"term\":\"Languages\",\"context\":\"\"}]"
{ "response": { "status": "success", "code": "200", "message": "OK" }, "result": { "translations": { "parsed": 2, "deleted": 2 } } }
[ { "term": "Projects", "context": "project list" }, { "term": "Languages", "context": "" } ]
https://api.poeditor.com/v2/contributors/list
Returns the list of contributors from your projects.
Argument | Value | |
---|---|---|
api_token
required |
Get token readonly accepted | |
id
optional |
<integer> | The id of project (Optional, unless language is set. Then, it becomes required) |
language
optional |
<string> | The language code |
curl -X POST https://api.poeditor.com/v2/contributors/list \
-d api_token="a9824103d8729b923fbe1d268ec69ef9" \
-d id="4886"
{ "response": { "status": "success", "code": "200", "message": "OK" }, "result": { "contributors": [ { "name": "final test", "email": "email@example.com", "permissions": [ { "project": { "id": "4886", "name": "Twentytwelve" }, "type": "administrator", "proofreader": true } ] }, { "name": "Translator", "email": "translator@example.com", "permissions": [ { "project": { "id": "4886", "name": "Twentytwelve" }, "type": "contributor", "proofreader": false, "languages": [ "en", "en-us" ] } ] } ] } }
https://api.poeditor.com/v2/contributors/add
Adds a contributor to a project language or an administrator to a project.
Argument | Value | |
---|---|---|
api_token
required |
Get token | |
id
required |
<integer> | The id of project |
name
required |
<string> | The name of contributor |
email
required |
<string> | The email of contributor |
language
optional |
<string> | The language code (Required if adding a contributor) |
admin
optional |
0 | 1 |
Set it to 1 for adding as administrator |
curl -X POST https://api.poeditor.com/v2/contributors/add \
-d api_token="a9824103d8729b923fbe1d268ec69ef9" \
-d id="7717" \
-d name="caesar" \
-d email="email@email.com" \
-d language="en"
{ "response": { "status": "success", "code": "200", "message": "Contributor added." } }
https://api.poeditor.com/v2/contributors/remove
Removes a contributor from a project language or an admin from a project, if the language is not specified.
Argument | Value | |
---|---|---|
api_token
required |
Get token | |
id
required |
<integer> | The id of project |
email
required |
<string> | The email of contributor |
language
optional |
<string> | The language code (Required if removing a contributor from a certain language) |
curl -X POST https://api.poeditor.com/v2/contributors/remove \
-d api_token="a9824103d8729b923fbe1d268ec69ef9" \
-d id="7717" \
-d email="email@email.com" \
-d language="en"
{ "response": { "status": "success", "code": "200", "message": "Contributor removed." } }
Using WordPress and all this seems too much for you? Try our POEditor WordPress Plugin. It will let you manage your POEditor translations directly from WordPress via the POEditor API.
No technical knowledge needed.
Looking for a starting point for a script of your own? Check out these libraries our users are sharing.