View on GitHub

ModernMT Enterprise Edition

Neural Adaptive Machine Translation for professional translators

MMT Community is free, is open source and welcomes contributions and donations. MMT Community is sponsored by its funding members (Translated, FBK, UEDIN and TAUS) and the European Commission.

We also have an MMT Enterprise Edition, managed by the MMT company and not available on GitHub, with some extra features:

MMT Enterprise is avaialble in two operating modes:

For any information please email

API Documentation

ModernMT Enterprise is available through publicly available REST API that allows you to request translations, manage your memories and check your billing profile.

Api key

In order to use ModernMT Enterprise edition you need an api key. If you do not have an api key yet, you can get one here:

For every API request you have to include an HTTP Header with name MMT-ApiKey and your api key as value.

MMT-ApiKey: 01234567-8901-2345-6789-012345678901

Client Identity

Clients for ModernMT Enterprise edition should also specify a few more details when sending requests to ModernMT APIs. These data mainly concern the client identity, and they can be extremely valuable in our support activities to our clients, allowing us to track the traffic from and to a specific client, and letting us immediately intervene in case of necessity. These client identity data should be set as HTTP Headers in the client requests:

The ideal requests, therefore, looks like this (using curl for simplicity):

curl -H "MMT-ApiKey:<my_api_key>" \
-H "MMT-PluginVersion:<my_plugin_version>" \
-H "MMT-Platform:<my_platform_name>" \
-H "MMT-PlatformVersion:<my_platform_version>" \ 


A REST endpoint consists of an HTTP method and a path to the resource. Usually the HTTP method describes the action, while the path identifies the resource or the service you are interacting with.

There can be cases in which the caller is limited in the use of HTTP methods for tecnical reasons or by HTTP protocol limitations (i.e. max allowed GET request length). For this reason ModernMT allows you to use any actual HTTP method, while separately declare the REST API method through the X-HTTP-Method-Override header.

For example, it is allowed to request a translation with an HTTP POST request like this:

curl -X POST \
   -H 'X-HTTP-Method-Override: GET' \
   -H 'MMT-ApiKey: <your_api_key>' \



User and Billing

General aspects

All APIs responses have a common structure that allows the user to quickly understand if the request returned a valid output or if an error occurred. This is the positive response wireframe:

    "data": "...request specific data..." ,
    "status": 200

In case of error, the API will send back a response like the following:

    "error": {
        "message": "Missing parameter text",
        "type": "ParameterParsingException"
    "status": 400

Error Codes

In an error response you can always find error.message that contains a text that explains the error and error.type that is the id of the error.

The ModernMT API uses the HTTP status codes to identify which type of error has occurred. The status field in the response is always the same as the HTTP status code, it is reported twice just for convenience.

Input format

MMT support XML input type for translations. XML tags are extracted from the source text, and re-inserted in the translation in the right position, based on the translation alignments.

During the pre-processing:

The text is then translated by the decoder. During the post-processing step:

See the following example: