Crowdin

IT
Developer Tools
Download This Spec

About this spec

# Introduction Welcome to Crowdin Enterprise API v2 documentation. Our API is a full-featured RESTful API that helps you to integrate localization into your development process. The endpoints that we use allow you to easily make calls to retrieve information and to execute actions needed. Most of the functionality of Crowdin Enterprise is available through the API. It allows you to create projects for translations, add and update files, download translations, and much more. In this way, you can script the complex actions that your situation requires. Documentation starts with a general overview of the design and technology that was implemented and is followed by detailed information on specific methods and endpoints. ## Asynchronous Operations Methods such as report generation, project build, and file download need some time to be completed and are finalized in several steps. It is what we call asynchronous operations. This approach allows the application to work without interruptions while the method is running at the background. To run asynchronous operations, 3 subsequent API methods are used: - Method to start operation – returns the status **Found** if the resource you’re requesting is already generated. Typically, **201 Accepted** status is returned along with the operation identifier. The operation status is then checked with the help of this identifier. - Method to check the status of operation – returns the completion percentage. - Method to get the temporary link for resource download – mostly used for export operations. When the operation is completed, you can run this method to get a temporary link for resource download. **Note:** Download link is active for a few minutes. For example, to download a Translation Memory (TM), you need to run following sequence of API methods: - [<i>Export TM</i>](#operation/api.tms.exports.post) - [<i>Check TM Export Status</i>](#operation/api.tms.exports.get) - [<i>Download TM</i>](#operation/api.tms.exports.getMany) ## File Upload With Crowdin Enterprise API v2 all files such as files for localization, screenshots, Glossaries, and Translation Memories should be first uploaded to the [Storage](#tag/Storage). After you upload file to the Storage it will have a unique storage id using which you can then add the file to the project. For example, to upload a localization file to your project, you need to run the following sequence of API methods: - [<i>Add Storage</i>](#operation/api.storages.post) – upload localization file body to storage at Crowdin server - [<i>Add File</i>](#operation/api.projects.files.post) – define where to add the localization file with specific _storage id_ ## Authorization To work with Crowdin Enterprise API v2 use one of the following access tokens: - [<i>Personal Access Token</i>](https:///enterprise/personal-access-tokens/#creating-a-personal-access-token) - [<i>OAuth Access Token</i>](https:///enterprise/authorizing-oauth-apps/#make-requests-to-the-api-with-the-access-token-returned) Make sure to use the following **header** in your requests: `Authorization: Bearer ACCESS_TOKEN` Responses in case authorization fail: **401 Unauthorized** ``` { "error": { "message": "Unauthorized", "code": 401 } } ``` **403 Forbidden** ``` { "error": { "message": "Not allowed endpoint for token scopes", "code": 403 } } ``` ``` { "error": { "message": "Not allowed space for your token", "code": 403 } } ``` ## Requests All requests should be made using the HTTPS protocol so that traffic is encrypted. The interface responds to different methods depending on the action required. When a request is successful, a response will typically be sent back in the form of a JSON object. If you specify `Accept` header response will be `application/json`. It’s not required to specify `Accept` header so you can leave it empty. The API expects all writing requests (_POST_, _PUT_, _PATCH_) in JSON format with the `Content-Type: application/json` header. This ensures that your request is interpreted correctly. **Note:** `Content-Type` header can be different (e.g. `image/jpeg`, `text/csv`) if you upload the file using _POST_ methods with a specified content type. RESTful APIs enable you to call individual API endpoints to perform the following requests: - GET - for simple retrieval of information about source files, translations, or projects. The information you request will be returned to you as a JSON object. The attributes defined by the JSON object can be used to form additional requests. - POST - to create or add a new element. This request includes all of the attributes necessary to create a new object. - PUT - to update or replace the specific element. This request sets the state of the target using the provided values, regardless of their current values. - PATCH - to edit some specific fields of an entity. With these requests, you only need to provide the data you want to change. - DELETE - to remove element from your account. Request works if specified object is found. If it is not found, the operation will return a response indicating that the object was not found. For example, to edit the name and description of a project, where the requested resource is the project with `id` = 1, the request is the following: **Example Endpoint** PATCH https://{organization_domain}.api.crowdin.com/api/v2/projects/1 where projects/1 is the requested resource. **Content-Type header:** `application/json` **Request body** ``` [ {"op":"replace", "path":"/name", "value":"Project new name"}, {"op":"replace", "path":"/description", "value":"New description for the project"} ] ``` ## Rate Limits The number of simultaneous API requests per account is 20 requests. Response code **429 Too Many Requests** is returned when the limit is exceeded. ## Crowdin API Clients The Crowdin API clients are the lightweight interfaces developed for the Crowdin API v2. They provide common services for making API requests. You may find detailed information on each client in its respective GitHub repository: [<i>Crowdin JavaScript client</i>](https://github.com/crowdin/crowdin-api-client-js) [<i>Crowdin PHP client</i>](https://github.com/crowdin/crowdin-api-client-php) [<i>Crowdin Java client</i>](https://github.com/crowdin/crowdin-api-client-java) [<i>Crowdin Python client</i>](https://github.com/crowdin/crowdin-api-client-python) _Crowdin .NET client_ _(Coming soon)_ Contact Support: Email: [support@crowdin.com](https://mailto:support@crowdin.com)

About Versori

Versori has established itself as the third generation of Integration Platform as a Service (iPaaS). Versori builds custom integrations for its customers using an intuitive visual user interface.

Versori’s connector engine means there is no dependency on an existing library of apps, all you need to start is the documentation of the app or system you want to integrate to.

How can I integrate with this spec?

Upload your spec

Drag and drop the Open API Spec into Versori's connector engine to create a new connector in minutes.

Build your workflow

Build out visual integration workflows with powerful data tools on an intuitive canvas UI.

Deploy instantly

Deploy your automated workflow instantly and maintain your integrations with ease.

Issue with this spec?

Is there something wrong with this spec? Let us know and Versori's engineering team will improve the quality of the spec based on your feedback.

Report This Spec
Built for Security & Scale

How developers maximise their time & productivity with Versori

Easily map complex data fields

Automatically match and transform data fields between systems with precision, reducing manual effort and errors.

Build, integrate & deploy faster

Design integrations visually, test workflows instantly, and deploy seamlessly—accelerating your time to value.

Create any custom connector in minutes

Drag and drop API specifications to build custom integrations, unlocking endless connectivity with minimal setup.

Start building today

Ready to start integrating?

Google Ads
Batch
Dropbox
Airtable
Asana
Calendly
Filter