Skip to main content

Verified Translation

LILT offers multiple ways to translate content. Unlike Instant Translate you can't expect a verified translation to have an immediate turn around time as there is a human in the loop. LILT offers multiple levels of verified translation. These can best be described as steps in a workflow:

  • Translate - A human will translate the file manually after using our transformative AI as a starting point.
  • Review - A human will review the translation performed either automatically or by a translator.
  • Customer Review - A person in your organization will verify the translation before accepting delivery of the job.

In this section we will discuss:

Things you will need:

  • API Key - All requests throught the LILT API use the API Key to authenticate.
  • File to Translate - We recommend a simple text file (txt) for a first attempt.
  • Data Source - A LILT Data Source id to use with the translation - Create one here!

Submitting a New LILT Job

A LILT Job encapsulates the various files that you want to translate. A Job is usually made up of multiple Projects. A Project is a grouping of Documents to be translated for an individual language pair (en->de - English to German). The LILT app has a useful wizard for creating Jobs that breaks all of these concepts down into a single package.

In the next section you will learn how to create your first LILT Job. If you are curious about how these objects fit together, feel free to check out the API Reference:

File Uploads

A common step for work entering the LILT Platform will be uploading a file. For this example, a text (txt) file will be used as it is one of the simplest file types supported for verified translation.

curl -X POST \
--header "Content-Type: application/octet-stream" \
--data-binary @testfile.txt

The response will have an ID that relates to the File:

"id": {Your File Id here},
"name": "testfile.txt",
"file_hash": "3858f62230ac3c915f300c664312c63f",
"detected_lang": "en",
"detected_lang_confidence": 0.7,
"category": "REFERENCE",
"labels": [],
"created_at": "2024-02-16T22:12:34.000Z",
"updated_at": "2024-02-16T22:12:34.000Z"

Hold onto that id as you will need it in Step 2.

Warning It is strongly recommended that before creating a Job that you create all of the Files you want associated with the Job.

Create A Job

To create a Job you need at least one Data Source in the language you want to translate into. Let's create a Job for a single File and a single Language Pair.The request to create a Job will look like this:

curl -X POST '' \
--header 'Content-Type: application/json' \
--data-raw '{
"name": "test job",
"fileIds": [1234],
"due": "2024-02-05T10:56:44.985Z",
"srcLang": "en",
"srcLocale": "US",
"languagePairs": [
{ "memoryId": 3121, "trgLang": "de" }
"workflowTemplateName": "Translate > Review > Analyst Review"

This will return a response Object with meta data about your newly created Job:

"name": "test job",
"creationStatus": "COMPLETE",
"deliveredAt": "2024-06-03T13:43:00.000Z",
"status": "active",
"due": "2024-06-03T13:43:00.000Z",
"id": 241,
"isProcessing": 0,
"stats": {
"exactWords": 0,
"fuzzyWords": 0,
"newWords": 0,
"numDeliveredProjects": 0,
"numLanguagePairs": 0,
"numProjects": 0,
"percentReviewed": 0,
"percentTranslated": 0,
"projects": [
"id": "en",
"srcLang": "en",
"srcLocale": "US",
"trgLang": "de",
"name": "My new project",
"due": "2021-10-03T13:43:00.000Z",
"isComplete": false,
"isArchived": false,
"state": "inProgress",
"numSourceTokens": 2134,
"createdAt": "2024-04-01T13:43:00.000Z",
"updatedAt": "2024-06-03T13:43:00.000Z",
"isDeleted": false,
"memoryId": 3121,
"workflowStatus": "READY_TO_START",
"workflowName": "Translate > Review > Customer Review"
"sourceWords": 0,
"uniqueLanguagePairs": 1,
"uniqueLinguists": 1,
"workflowStatus": "READY_TO_START"

Check the Project (Optional)

You should notice that this response has created your Job and a Project for the specified Language Pair. If you check the Projects endpoint with the Project Id you will get a list of the associated Documents in that Project. Try it out:

curl -X GET \

That is all it takes to create a Verified Translation Job at LILT.

Managing your Jobs and Projects

Now that you can create a new Job, it will be important to keep track of what is going on with it. Below is a list of common use cases that will come up when trying to manage your organizations content as well as a link to the API Specification that will facilitate that action:

  • "Oh no! I forgot to add a LanguagePair when I created this Job" - Fixing this is as easy as creating a new Project for the missing LanguagePair.
  • "Whoops! I don't have my Job Id anymore and need to find a freshly created Job" - Use the Get Jobs endpoint.
  • "I want to download all of my translated Documents at once" - You can Download your whole Job or Specific Documents.
  • "Our Organization wants us to keep status up-to-date in our internal CMS" - Reach out for status anytime. You can get Project, Document, or Job status.
  • "I want to know what my options are for the various LILT Workflows" - Check out the Workflow Templates endpoint.
  • "I want to make sure that someone is assigned to work on my Documents" - Check out the Get Documents end points.