Skip to main content
GET
Poll for the evaluation result
Quality evaluation is in beta and available to select DeepL customers only. To request access, contact your customer success manager.
Evaluations are requested with enable_quality_evaluation on POST /v2/document, which returns a quality_evaluation_job_id. That is the unique ID of the evaluation, and the value this endpoint takes. There is no public endpoint for starting an evaluation. For the end-to-end flow, see Requesting a quality evaluation. Evaluations resolve only within the account that requested them. A job ID belonging to another account returns 404, the same response as an unknown ID.

Status values

A completed evaluation and a failed one both return 200, so status rather than the HTTP status code distinguishes them. A malformed job_id returns 400 without reaching an evaluation. error.code is currently always evaluation_failed, so the response does not distinguish one cause of failure from another.

Segment text

A report carries one entry in segments per evaluated segment of the document, in reading order, including segments where no issue was found. On those, errors is an empty array. segment_index is that reading-order position. It is not a durable handle: re-translating the same document can produce a different segmentation. segment_score rates the translation quality of that segment from 0 (lowest) to 100 (highest). It is always present in a completed report. source and target hold the segment text as the evaluation read it, which is DeepL’s own segmentation of the document with inline formatting tags removed. This text does not byte-match the text in the uploaded or translated file, and segment boundaries do not necessarily correspond to the paragraphs or sentences in the document. Span offsets index these two strings, not the uploaded or translated file. Both fields are omitted when the text is unavailable for a segment. An issue on such a segment still carries its spans, but there is no text in the response to resolve them against. applied_glossary_term_pairs lists the glossary term pairs applied to a segment when the document was translated. It is omitted for segments where no glossary term pair was applied. Each item gives the source_term, target_term, and the spans in target where the target term was applied.

Span ranges

Each span describes a half-open interval over the segment’s source or target text. start is the index of the first Unicode code point in the span; end is one past the last. The span covers the substring text[start:end] in Python-style slicing, and its length is end - start. For example:
A target span of { "start": 20, "end": 29 } covers target[20:29], the 9 code points "5 % unter". Offsets count code points, not UTF-16 code units, so a language whose characters fall outside the Basic Multilingual Plane indexes differently than a UTF-16 string length would suggest.
  • source_spans and target_spans are always present on an issue. If no span applies to that side, the value is an empty array
  • Within a single issue, the ranges in source_spans (and in target_spans) are sorted by start and do not overlap
  • Different issues may cover the same part of a segment
  • ranges on an applied glossary term pair follows the same convention and indexes into target

Severity values

The severity field on an issue takes one of three values.

Type and sub-type values

Every issue carries a type, the top-level category, and a sub_type, which narrows it within that type. The five types and their sub-types are listed below.
New values for type, sub_type, and severity may be added without warning.
An issue of this type reports that a segment could not be evaluated rather than a defect in the translation. The rest of the document is evaluated normally.

Supported language pairs

Requesting an evaluation for a pair that is not listed is rejected with 400 when the document is uploaded, so an evaluation only ever exists for a supported pair. See enable_quality_evaluation.

Rate limit

This endpoint accepts 1,000 requests per minute per API key. Exceeding it returns 429 Too Many Requests.

Report retention

A report is retained for 24 hours after its evaluation reaches done or error. After that, this endpoint returns 404 Not Found for that job ID.

Authorizations

Authorization
string
header
default:DeepL-Auth-Key
required

Authentication with Authorization header and DeepL-Auth-Key authentication scheme. Example: DeepL-Auth-Key <api-key>

Path Parameters

job_id
string
required

The unique ID of the quality evaluation, returned as quality_evaluation_job_id when the document was uploaded for translation.

Example:

"04DE5AD98A02647D83285A36021911C6"

Response

Polling result. The response shape depends on the status field. done carries the full report; error carries error details.

job_id
string
required
Example:

"04DE5AD98A02647D83285A36021911C6"

status
enum<string>
required
Available options:
done
Example:

"done"

segments
object[]
required

One entry per evaluated segment of the document, in reading order.