APIBeta
Documents

The translations of a document

GET
/v1/documents/{id}/translations

The status and the progress of each language the document is translated into. Poll it while a pre-translation or a review is in progress, and go on when each language reaches the status you wait for.

Poll every 10 to 30 seconds. A pre-translation fills the segments in steps, so completedPercentage does not grow smoothly: it jumps at the end of the translation memory step and at the end of the machine translation step.

Each revision of the document has its own translations. The first upload of a document has them from the start, with no segments until the document is INDEXED: wait for that status of the document before you read the progress. A new revision has none until its indexing copies them from the previous revision, so until then the list is empty.

The list is not paginated: all the translations are shown in one response.

An id that belongs to an older revision of the document answers 303 and points to the translations of the latest revision. Following the redirect is a second call, and counts against the rate limit like any other.

Authorization

apiKey
headerAuthorizationBearer <token>

The key the team leader created in Redokun, sent as Authorization: Bearer rdk_.... A read key is rejected on every call that writes (any method other than GET, HEAD or OPTIONS).

Path Parameters

id*integer

Identifier of the document

Range1 <= value <= 2147483647

Response Body

The translations of the document

application/json
  1. response
translations*array<>

One for each language the document is translated into, oldest first. Empty while a new revision of the document is being indexed

links*array<>

The resources related to this one. Follow these links instead of building the URLs yourself, so a change of path does not break the client

Example Request
curl -X GET 'https://api.redokun.com/v1/documents/1/translations'
Example Response
{  "translations": [    {      "id": 4512,      "language": {        "name": "Italian",        "code": "it"      },      "status": "PRE_TRANSLATING",      "progress": {        "totalSegments": 140,        "translatedSegments": 62,        "confirmedSegments": 0,        "draftSegments": 62,        "completedPercentage": 44.29      },      "translators": [        {          "id": 414,          "fullName": "Mario Rossi",          "email": "mario.rossi@acme.com",          "inviteStatus": "WORKING"        }      ],      "createdAt": "2026-09-14T09:30:00+00:00",      "updatedAt": "2026-09-15T16:05:00+00:00",      "links": [        {          "rel": "self",          "href": "https://api.redokun.com/v1/documents/981/translations/it"        },        {          "rel": "translations",          "href": "https://api.redokun.com/v1/documents/981/translations"        },        {          "rel": "document",          "href": "https://api.redokun.com/v1/documents/981"        }      ]    },    {      "id": 4513,      "language": {        "name": "German",        "code": "de"      },      "status": "CONFIRMED",      "progress": {        "totalSegments": 140,        "translatedSegments": 140,        "confirmedSegments": 140,        "draftSegments": 0,        "completedPercentage": 100      },      "translators": [        {          "id": 414,          "fullName": "Mario Rossi",          "email": "mario.rossi@acme.com",          "inviteStatus": "WORKING"        },        {          "id": 527,          "fullName": null,          "email": "anna.schmidt@acme.com",          "inviteStatus": "INVITED"        }      ],      "createdAt": "2026-09-14T09:30:00+00:00",      "updatedAt": "2026-09-16T11:40:00+00:00",      "links": [        {          "rel": "self",          "href": "https://api.redokun.com/v1/documents/981/translations/de"        },        {          "rel": "translations",          "href": "https://api.redokun.com/v1/documents/981/translations"        },        {          "rel": "document",          "href": "https://api.redokun.com/v1/documents/981"        }      ]    }  ],  "links": [    {      "rel": "self",      "href": "https://api.redokun.com/v1/documents/981/translations"    },    {      "rel": "document",      "href": "https://api.redokun.com/v1/documents/981"    }  ]}

Pre-translate a document POST

Fills the segments of some translations of the document with a pre-translation: first from the translation memories of the team, then with a machine translation, as each language asks. The document must be `INDEXED`, and each language must be one the document is translated into, with the status `CREATED` and not complete yet. The call is all or nothing: when one language cannot be pre-translated, nothing starts and the error names it. The pre-translation runs in the background. The answer holds the translations of the document, where the languages of this call are `PRE_TRANSLATING`. Poll the `self` link, the same list as `GET /v1/documents/{id}/translations`, every 10 to 30 seconds: a language is done when it is back to `CREATED`, with its new progress. A language can be in one pre-translation at a time, and the account of the key can run 2 pre-translations at once. Past either limit the call answers 409: retry when a running pre-translation ends.

List the documents of the team GET

The documents of the team from every folder, newest first, one page at a time. Follow the `next` link until there is none to walk through them. Documents added or removed while you walk can shift the pages, so a document can be skipped or appear twice. Besides `self`, the `links` of a page point to the other pages, with the same `limit`: `first` and `last` are always there, `prev` and `next` only when such a page exists. With no document, `last` is the same page as `first`.