GET /api2/v1/analyses/{analyseUid}/download?format=...) returns a file in one of four formats — CSV, CSV_EXTENDED, LOG, or JSON. This page is the field-by-field reference for each. Note that the JSON format has its own shape, distinct from any other Analysis API response.
All four formats download as
application/octet-stream, including JSON — expect an attachment, not an inline JSON response.Shared concepts
Every format reports the same underlying counts, just laid out differently. Match bands — how closely a segment matched something else, from best to worst:
Source levels — where a match came from: TM (translation memory), IF (internal fuzzy — matched against other segments in the same job, not the TM), MT (machine translation), NT (non-translatable).
CSV/CSV_EXTENDED/LOG sum all levels together per band; JSON breaks each band down by level (see below).
Units per band: Segments, Words, Characters, Normalized pages, Percent (share of the job/part total), Editing time.
Weighted counts: if the analysis has a net rate scheme (discount), every count in every format is the discounted value — raw units × discount% for that level/band/workflow step. Percent for the Total band is always 100; for other bands it’s recomputed as band / total × 100 when a discount scheme is present.
CSV and CSV_EXTENDED
Same layout for both —CSV_EXTENDED (labeled “CSV with chars” in the UI) just adds a Characters column to every band. Two header rows, then one data row per analysed job. There’s no per-language-pair or analysis-total row.
Row 1 — band labels: 3 blank leading cells, then one label per band, in order: Context Match, Repetitions, 100%, 95%-99%, 85%-94%, 75%-84%, 50%-74%, No Match, Total.
Row 2 — column headers: File, Tagging Errors, Chars/Word, then for each band above: Segments, Words, Characters (CSV_EXTENDED only), Placeables, Percent — except Total, which drops Percent.
Data rows — one per job:
Numbers are formatted with the
en_US locale, up to 2 decimal places.
LOG
Plain fixed-width text, not delimited. Repeats the same block first per job, then once more per language part as an aggregate (Total: N files):
en_US locale, right-padded to 12 characters — 2 decimals for percent/pages, 1 decimal otherwise.
JSON
Structured, nested — the only format with a per-source-level breakdown. Shape (AnalyseExportDto):
DataExportDto:
CountsExportDto — flat counts for one band:
CountsWithCategoriesExportDto — same 6 fields, but each value is broken down by source level instead of being a plain number:
sum is the total across levels; tm/if/mt/nt are the TM / internal-fuzzy / MT / non-translatable shares.
contextMatch, repetitions, and total are flat (CountsExportDto, no level breakdown) — only the match-percentage bands (match100…match0) carry the tm/if/mt/nt split. There’s also no discounted or estimate field in this export; those are only available from Get analysis, which uses a different, richer JSON shape than this download.Mapping to the live API
The Get analysis response uses different field names for the same bands: itsmatch101 is this export’s contextMatch, and its match100/match95/match85/match75/match50/match0 line up 1:1 with the same-named fields here. repetitions and all/total exist in both, similarly named.