---
title: "List the language files"
method: POST
path: "/language-files/list"
tags: ["Language Files"]
---

# List the language files

`POST /language-files/list`

## Request

- Base URL: `https://api.reportingninja.com/v1`
- URL: `https://api.reportingninja.com/v1/language-files/list`
- Auth: HTTP bearer

Returns the language files a report can be printed with: the sixteen of the platform and the ones the account made itself. The literals of a file are not published.

## Request body

- LanguageFilesListRequest: No parameters.

## Response `200`

The call succeeded. This endpoint reports its errors with a real HTTP status, so a 200 always carries status=ok.

- LanguageFilesListResponse
  - `status` 'ok', required
  - `data` LanguageFilesListData, required: The sixteen files of the platform first, then the ones of the account ordered by name.
    - `language_files` LanguageFile[], required
      - `language_file_key` string, nullable, required: The language file. It is null in ONE place: the preview of a dry run of a creation, where the row does not exist yet and so has no key.
      - `name` string, nullable, required
      - `language` string, nullable, required: The ISO 639-1 code of the literals. Null on the files of the account made before the language was asked for.
      - `is_system` boolean, required: Whether the file is one of the sixteen the platform ships.
      - `file_name` string, nullable: The name of the .txt the file was uploaded from. Null for the files of the platform.
      - `internal_notes` string, nullable: A note for the account's own staff.
    - `count` integer, required
  - `meta` Meta, required
    - `request_id` string, required: Id of this request, useful when reporting an incident.
    - `timestamp` string, date-time, required: When the answer was built, in UTC.

## Other responses

- `400`: The request was refused before anything was written. INVALID_REQUEST covers the framework refusals of every endpoint (the Content-Type is not application/json, the body could not be read, the body is not valid JSON). The report endpoints add their own: VALIDATION_FAILED with details.problems, UNKNOWN_PARAM with the path of the field the endpoint does not read, and the single-field refusals MISSING_REQUIRED_FIELD, INVALID_VALUE and APPEND_NOT_ALLOWED. The description of each operation lists the ones it emits. Everything else a body can get wrong arrives as an entry of details.problems rather than as the code of the envelope.
- `401`: Invalid or missing Bearer token.
- `413`: The request body is over 1 MB. The cap is applied before authentication, so this answer is refused without the key being read, and it carries the usual error envelope.
- `429`: A budget was spent. RATE_LIMITED is the per-key read budget (300/minute, 5000/day) or the per-account write budget (60/minute, 1000/day). EMAIL_QUOTA_REACHED is the separate budget of 50 calls per account per day that send email, and its Retry-After points at the next UTC midnight. The Retry-After header gives the seconds until the more restrictive window resets. The X-RateLimit-* headers report the read budget, except on the 429 of a write, where they report the write budget.
- `500`: Internal server error.

---

[API](https://skmtc.dev/reportingninja/apis/reporting-ninja-api.md) · [All operations](https://skmtc.dev/reportingninja/apis/reporting-ninja-api/llms.txt) · [OpenAPI document](https://skmtc.dev/reportingninja/apis/reporting-ninja-api/revisions/13876c71be34?raw)
