{
  "version": 1,
  "name": "LibreTranslate",
  "documents": [
    {
      "id": "index.md",
      "kind": "page",
      "title": "Start translating.",
      "description": "Call the API, connect your tools, or run LibreTranslate on your own infrastructure.",
      "tab": "",
      "url": "https://sourcey-libretranslate.pages.dev/",
      "markdown": "https://sourcey-libretranslate.pages.dev/index.md",
      "file": "index.md",
      "searchText": "LibreTranslate is a Free and Open Source Machine Translation API. Unlike other APIs, it doesn't rely on proprietary software such as Google or Azure to perform translations. Instead, its translation engine is powered by the open source [Argos Translate](https://github.com/argosopentech/argos-translate) library.\n\n\n\n> [!TIP]\n> **Try it online!**\n>\n> Open [libretranslate.com](https://libretranslate.com) in your browser.\n\n\n\n\n## Getting Started {#getting-started}\n\n\n\n\n\n\n\n\n**[Basic Usage](/guides/api_usage/)**\n\nStart translating with step by step examples.\n\n\n\n\n\n\n**[Installation](/guides/installation/)**\n\nHow to quickly get the software up and running on your machine.\n\n\n\n\n\n\n**[API Reference](/api/)**\n\nBrowse the API specification\n\n\n\n\n\n\n**[MCP tools](/mcp/)**\n\nTranslation and language detection for your MCP client.\n\n\n\n\n\n\n**[Integrations](/guides/integrations/)**\n\nConnect LibreTranslate to the tools you already use.\n\n\n\n\n\n\n**[Community Resources](/community/resources/)**\n\nQuestions? Find out where to get help.\n\n\n\n\n\n\n## Quickstart {#quickstart}\n\n\n\n### Self-Hosted {#self-hosted}\n\n\nIf you want to run LibreTranslate for free on your machine:\n\n```bash\n$ pip install libretranslate\n$ libretranslate\n$ curl -X POST http://localhost:5000/translate -d q=\"Hello\" -d source=en -d target=es\n```\n\n```json\n{\"translatedText\":\"Hola\"}\n```\n\nSee also the [installation](/guides/installation/) page.\n\n\n### Managed Hosting {#managed-hosting}\n\n\nIf you'd like an easier setup, high availability, fast translations and a professionally managed service for a small monthly cost:\n * Get an API key from: https://portal.libretranslate.com\n\n```bash\n$ curl -X POST https://libretranslate.com/translate -d q=\"Hello\" -d source=en -d target=es -d api_key=xxxxx\n```\n\n```json\n{\"translatedText\":\"Hola\"}\n```\n\nEither way we're happy you're here! ❤\n\n\n\n\n## Contributing {#contributing}\n\n\n\n\n\n\n\n\n\n**[Localization](/guides/contributing/#documentation)**\n\nLearn how to translate these docs and the software in your language.\n\n\n\n\n\n\n\n**[Support the Project](/guides/contributing/)**\n\nFind out all the ways you can contribute.\n\n\n\n\n\n\n\n**[Training New Language Models](https://github.com/LibreTranslate/Locomotive)**\n\nLearn how to train your own translation models.\n\n\n\n\n\n\n\n## Credits {#credits}\n\n\nThis work is largely possible thanks to [Argos Translate](https://github.com/argosopentech/argos-translate), which powers the translation engine.\n\n\n## License {#license}\n\n\n[GNU Affero General Public License v3](https://www.gnu.org/licenses/agpl-3.0.en.html)\n\n\n## Trademark {#trademark}\n\n\nSee [Trademark Guidelines](https://github.com/LibreTranslate/LibreTranslate/blob/main/TRADEMARK.md)",
      "documentId": "index",
      "locale": "en",
      "contentLocale": "en",
      "contentVersion": "current",
      "versionScope": "site",
      "alternates": [
        {
          "locale": "en",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/",
          "markdown": "https://sourcey-libretranslate.pages.dev/index.md"
        }
      ]
    },
    {
      "id": "guides/api_usage/index.md",
      "kind": "page",
      "title": "API Usage",
      "description": "How to translate with LibreTranslate.",
      "tab": "",
      "url": "https://sourcey-libretranslate.pages.dev/guides/api_usage/",
      "markdown": "https://sourcey-libretranslate.pages.dev/guides/api_usage/index.md",
      "file": "guides/api_usage/index.md",
      "searchText": "The examples below use Javascript, but you can use any programming language. [Language bindings](#language-bindings) for many programming languages are also available.\n\n\n### Simple Translation {#simple-translation}\n\n\nRequest:\n\n```javascript\nconst res = await fetch(\"https://libretranslate.com/translate\", {\n  method: \"POST\",\n  body: JSON.stringify({\n    q: \"Hello!\",\n    source: \"en\",\n    target: \"es\",\n    api_key: \"xxxxxx\" // can be optional with self-hosting\n  }),\n  headers: { \"Content-Type\": \"application/json\" },\n});\n\nconsole.log(await res.json());\n```\n\nResponse:\n\n```javascript\n{\n    \"translatedText\": \"¡Hola!\"\n}\n```\n\n\n\n> [!NOTE]\n> The `api_key` parameter is only required when using an instance configured with API keys, such as [libretranslate.com](https://libretranslate.com). Self-hosted instances do not require it.\n\n\n\n\n### Auto Detection of Source Language {#auto-detection-of-source-language}\n\n\nRequest:\n\n```javascript\nconst res = await fetch(\"https://libretranslate.com/translate\", {\n  method: \"POST\",\n  body: JSON.stringify({\n    q: \"Bonjour!\",\n    source: \"auto\",\n    target: \"en\",\n    api_key: \"xxxxxx\"\n  }),\n  headers: { \"Content-Type\": \"application/json\" },\n});\n\nconsole.log(await res.json());\n```\n\nResponse:\n\n```javascript\n{\n    \"detectedLanguage\": {\n        \"confidence\": 90.0,\n        \"language\": \"fr\"\n    },\n    \"translatedText\": \"Hello!\"\n}\n```\n\n\n### Translate HTML/Markup {#translate-htmlmarkup}\n\n\nRequest:\n\n```javascript\nconst res = await fetch(\"https://libretranslate.com/translate\", {\n  method: \"POST\",\n  body: JSON.stringify({\n    q: '<p class=\"green\">Hello!</p>',\n    source: \"en\",\n    target: \"es\",\n    format: \"html\",\n    api_key: \"xxxxxx\"\n  }),\n  headers: { \"Content-Type\": \"application/json\" },\n});\n\nconsole.log(await res.json());\n```\n\nResponse:\n\n```javascript\n{\n    \"translatedText\": \"<p class=\\\"green\\\">¡Hola!</p>\"\n}\n```\n\n\n### Alternative Translations {#alternative-translations}\n\n\nRequest:\n\n```javascript\nconst res = await fetch(\"https://libretranslate.com/translate\", {\n  method: \"POST\",\n  body: JSON.stringify({\n    q: \"Hello\",\n    source: \"en\",\n    target: \"it\",\n    format: \"text\",\n    alternatives: 3,\n    api_key: \"xxxxxx\"\n  }),\n  headers: { \"Content-Type\": \"application/json\" },\n});\n\nconsole.log(await res.json());\n```\n\nResponse:\n\n```javascript\n{\n    \"alternatives\": [\n        \"Salve\",\n        \"Pronto\"\n    ],\n    \"translatedText\": \"Ciao\"\n}\n```\n\n\n### Language Detection {#language-detection}\n\n\nRequest:\n\n```javascript\nconst res = await fetch(\"https://libretranslate.com/detect\", {\n  method: \"POST\",\n  body: JSON.stringify({\n    q: \"Bonjour!\",\n  }),\n  headers: { \"Content-Type\": \"application/json\" },\n});\n\nconsole.log(await res.json());\n```\n\nResponse:\n\n```javascript\n[{\n    \"confidence\": 90.0,\n    \"language\": \"fr\"\n}]\n```\n\n\n\n### Supported Languages {#supported-languages}\n\n\nhttps://libretranslate.com/languages\n\n\n## Language Bindings {#language-bindings}\n\n\nYou can use the LibreTranslate API using the following bindings:\n\n- Rust: <https://github.com/DefunctLizard/libretranslate-rs>\n- Node.js: <https://github.com/franciscop/translate>\n- TypeScript: <https://github.com/tderflinger/libretranslate-ts>\n- .Net: <https://github.com/sigaloid/LibreTranslate.Net>\n- Go: <https://github.com/SnakeSel/libretranslate>\n- Python: <https://github.com/argosopentech/LibreTranslate-py>\n- PHP: <https://github.com/jefs42/libretranslate>\n- C++: <https://github.com/argosopentech/LibreTranslate-cpp>\n- Swift: <https://github.com/wacumov/libretranslate>\n- Unix: <https://github.com/argosopentech/LibreTranslate-sh>\n- Shell: <https://github.com/Hayao0819/Hayao-Tools/tree/master/libretranslate-sh>\n- Java: <https://github.com/stokito/libretranslate-java>\n- Ruby: <https://github.com/noesya/libretranslate>\n- R: <https://github.com/myanesp/libretranslateR>\n",
      "documentId": "guides/api_usage",
      "locale": "en",
      "contentLocale": "en",
      "contentVersion": "current",
      "versionScope": "site",
      "alternates": [
        {
          "locale": "en",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/guides/api_usage/",
          "markdown": "https://sourcey-libretranslate.pages.dev/guides/api_usage/index.md"
        }
      ]
    },
    {
      "id": "guides/installation/index.md",
      "kind": "page",
      "title": "Installation",
      "description": "Get up and running with LibreTranslate.",
      "tab": "",
      "url": "https://sourcey-libretranslate.pages.dev/guides/installation/",
      "markdown": "https://sourcey-libretranslate.pages.dev/guides/installation/index.md",
      "file": "guides/installation/index.md",
      "searchText": "\n## With Python {#with-python}\n\n\nMake sure you have Python >= 3.8 installed, then from a terminal run:\n\n```bash\npip install libretranslate\nlibretranslate [args]\n```\n\nThen open a web browser to <http://localhost:5000>\n\nBy default LibreTranslate will install support for all available languages. To only load certain languages and reduce startup time, you can use the `--load-only` argument:\n\n```bash\nlibretranslate --load-only en,es,fr\n```\n\nCheck the [arguments](#arguments) list for more options.\n\n\n\n> [!NOTE]\n> In production it's recommended to run LibreTranslate with Gunicorn or Docker (which is setup with Gunicorn) in order to avoid memory leaks.\n\n\n\nTo use the faster sentence boundary detector ([MiniSBD](https://github.com/LibreTranslate/MiniSBD)) use:\n\n```bash\nARGOS_CHUNK_TYPE=MINISBD libretranslate [...]\n```\n\n\n## With Docker {#with-docker}\n\n\nYou can also run the application with [docker](https://docker.com). First clone the repository:\n\n```bash\ngit clone https://github.com/LibreTranslate/LibreTranslate\ncd LibreTranslate\n```\n\nThen on Linux/macOS run `./run.sh [args]`, on Windows run `run.bat [args]`.\n\n\n### CUDA {#cuda}\n\n\nYou can use hardware acceleration to speed up translations on a GPU machine with CUDA 12.4.1 and [nvidia-docker](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html) installed.\n\nRun this version with:\n\n```bash\ndocker compose -f docker-compose.cuda.yml up -d --build\n```\n\n\n## With WSGI and Gunicorn {#with-wsgi-and-gunicorn}\n\n\n```bash\npip install gunicorn\ngunicorn --bind 0.0.0.0:5000 'wsgi:app()'\n```\n\nYou can pass application arguments directly to Gunicorn via:\n\n```bash\ngunicorn --bind 0.0.0.0:5000 'wsgi:app(api_keys=True)'\n```\n\n\n## With Kubernetes {#with-kubernetes}\n\n\nSee [Medium article by JM Robles](https://jmrobles.medium.com/libretranslate-your-own-translation-service-on-kubernetes-b46c3e1af630) and the improved [k8s.yaml](https://github.com/LibreTranslate/LibreTranslate/blob/main/k8s.yaml) by @rasos.\n\n\n### Helm Chart {#helm-chart}\n\n\nBased on @rasos work you can now install LibreTranslate on Kubernetes using Helm.\n\nA Helm chart is now available in the [helm-chart](https://github.com/LibreTranslate/helm-chart/) repository where you can find more details.\n\nYou can quickly install LibreTranslate on Kubernetes using Helm with the following command:\n\n```bash\nhelm repo add libretranslate https://libretranslate.github.io/helm-chart/\nhelm repo update\nhelm search repo libretranslate\n\nhelm install libretranslate libretranslate/libretranslate --namespace libretranslate --create-namespace\n```\n\n\n## Arguments {#arguments}\n\n\n| Argument                        | Description                                                                                                                                        | Default                 |\n| ------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------- |\n| `--host`                        | Set host to bind the server to                                                                                                                     | `127.0.0.1`             |\n| `--port`                        | Set port to bind the server to                                                                                                                     | `5000`                  |\n| `--char-limit`                  | Set character limit                                                                                                                                | `No limit`              |\n| `--req-limit`                   | Set maximum number of requests per minute per client (outside of limits set by api keys)                                                           | `No limit`              |\n| `--req-limit-storage`           | Storage URI to use for request limit data storage. See [Flask Limiter](https://flask-limiter.readthedocs.io/en/stable/configuration.html)          | `memory://`             |\n| `--req-time-cost`               | Considers a time cost (in seconds) for request limiting purposes. If a request takes 10 seconds and this value is set to 5, the request cost is 2. | `No cost`               |\n| `--batch-limit`                 | Set maximum number of texts to translate in a batch request                                                                                        | `No limit`              |\n| `--frontend-language-source`    | Set frontend default language - source                                                                                                             | `auto`                  |\n| `--frontend-language-target`    | Set frontend default language - target                                                                                                             | `locale`                |\n| `--frontend-title`              | Set frontend title                                                                                                                                 | `No title`              |\n| `--frontend-timeout`            | Set frontend translation timeout                                                                                                                   | `500`                   |\n| `--api-keys-db-path`            | Use a specific path inside the container for the local database. Can be absolute or relative                                                       | `db/api_keys.db`        |\n| `--api-keys-remote`             | Use this remote endpoint to query for valid API keys instead of using the local database                                                           | `Use local db`          |\n| `--get-api-key-link`            | Show a link in the UI where to direct users to get an API key                                                                                      | `No API link displayed` |\n| `--shared-storage`              | Shared storage URI to use for multi-process data sharing (e.g. when using gunicorn)                                                                | `memory://`             |\n| `--secondary`                   | Mark this instance as a secondary instance to avoid conflicts with the primary node in multi-node setups                                           | `Primary`               |\n| `--load-only`                   | Set available languages                                                                                                                            | `All`                   |\n| `--threads`                     | Set number of threads                                                                                                                              | `4`                     |\n| `--metrics-auth-token`          | Protect the /metrics endpoint by allowing only clients that have a valid Authorization Bearer token                                                | `No auth`               |\n| `--url-prefix`                  | Add prefix to URL: example.com:5000/url-prefix/                                                                                                    | `/`                     |\n| `--debug`                       | Enable debug environment                                                                                                                           | `Disabled`              |\n| `--ssl`                         | Whether to enable SSL                                                                                                                              | `Disabled`              |\n| `--api-keys`                    | Enable API keys database for per-client rate limits when --req-limit is reached                                                                    | `Disabled`              |\n| `--require-api-key-origin`      | Require use of an API key for programmatic access to the API, unless the request origin matches this domain                                        | `Disabled`              |\n| `--require-api-key-secret`      | Require use of an API key for programmatic access to the API, unless the client also sends a secret match                                          | `Disabled`              |\n| `--require-api-key-fingerprint` | Require use of an API key for programmatic access to the API, unless the client also matches a fingerprint                                         | `Disabled`              |\n| `--under-attack`                | Enable under attack mode. When enabled, requests must be made with an API key                                                                      | `Disabled`              |\n| `--suggestions`                 | Allow user suggestions                                                                                                                             | `Disabled`              |\n| `--disable-files-translation`   | Disable files translation                                                                                                                          | `Enabled`               |\n| `--disable-web-ui`              | Disable web UI                                                                                                                                     | `Enabled`               |\n| `--update-models`               | Update language models at startup                                                                                                                  | `Disabled`              |\n| `--metrics`                     | Enable the /metrics endpoint for exporting [Prometheus](https://prometheus.io/) usage metrics                                                      | `Disabled`              |\n| `--translation-cache`           | Cache translation output for users with a particular API key (or 'all' to cache all translations)                                                  | `Disabled`              |\n\n\n\n> [!TIP]\n> To always require the use of an API key, set `--req-limit` to `0` and add the `--api-keys` flag. Requests made without a proper API key will be rejected.\n\n\n\nEach argument has an equivalent environment variable that can be used instead. The environment variables override the default values but have lower priority than the command line arguments and are particularly useful if used with Docker. The environment variable names are the upper_snake_case of the equivalent command argument's name with a `LT` prefix. E.g. `--char-limit` --> `LT_CHAR_LIMIT`.\n\n\n\n## Update {#update}\n\n\n\n### Software {#software}\n\n\nIf you installed with pip:\n\n`pip install -U libretranslate`\n\nIf you're using docker:\n\n`docker pull libretranslate/libretranslate`\n\n\n### Language Models {#language-models}\n\n\nStart the program with the `--update-models` argument. For example: `libretranslate --update-models` or `./run.sh --update-models`. Setting `--update-models` will update models regardless of whether updates are available or not.\n\nAlternatively you can also run the `scripts/install_models.py` script.\n\n\n\n## Prometheus Metrics {#prometheus-metrics}\n\n\nLibreTranslate has Prometheus [exporter](https://prometheus.io/docs/instrumenting/exporters/) capabilities when you pass the `--metrics` argument at startup (disabled by default). When metrics are enabled, a `/metrics` endpoint is mounted on the instance:\n\n<http://localhost:5000/metrics>\n\n```promql\n# HELP libretranslate_http_requests_in_flight Multiprocess metric\n# TYPE libretranslate_http_requests_in_flight gauge\nlibretranslate_http_requests_in_flight{api_key=\"\",endpoint=\"/translate\",request_ip=\"127.0.0.1\"} 0.0\n# HELP libretranslate_http_request_duration_seconds Multiprocess metric\n# TYPE libretranslate_http_request_duration_seconds summary\nlibretranslate_http_request_duration_seconds_count{api_key=\"\",endpoint=\"/translate\",request_ip=\"127.0.0.1\",status=\"200\"} 0.0\nlibretranslate_http_request_duration_seconds_sum{api_key=\"\",endpoint=\"/translate\",request_ip=\"127.0.0.1\",status=\"200\"} 0.0\n```\n\nYou can then configure `prometheus.yml` to read the metrics:\n\n```yaml\nscrape_configs:\n  - job_name: \"libretranslate\"\n\n    # Needed only if you use --metrics-auth-token\n    #authorization:\n    #credentials: \"mytoken\"\n\n    static_configs:\n      - targets: [\"localhost:5000\"]\n```\n\nTo secure the `/metrics` endpoint you can also use `--metrics-auth-token mytoken`.\n\nIf you use Gunicorn, make sure to create a directory for storing multiprocess data metrics and set `PROMETHEUS_MULTIPROC_DIR`:\n\n```bash\nmkdir -p /tmp/prometheus_data\nrm /tmp/prometheus_data/*\nexport PROMETHEUS_MULTIPROC_DIR=/tmp/prometheus_data\ngunicorn -c scripts/gunicorn_conf.py --bind 0.0.0.0:5000 'wsgi:app(metrics=True)'\n```",
      "documentId": "guides/installation",
      "locale": "en",
      "contentLocale": "en",
      "contentVersion": "current",
      "versionScope": "site",
      "alternates": [
        {
          "locale": "en",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/guides/installation/",
          "markdown": "https://sourcey-libretranslate.pages.dev/guides/installation/index.md"
        }
      ]
    },
    {
      "id": "guides/build_from_sources/index.md",
      "kind": "page",
      "title": "Build From Sources",
      "description": "Get up and running with LibreTranslate.",
      "tab": "",
      "url": "https://sourcey-libretranslate.pages.dev/guides/build_from_sources/",
      "markdown": "https://sourcey-libretranslate.pages.dev/guides/build_from_sources/index.md",
      "file": "guides/build_from_sources/index.md",
      "searchText": "If you want to make changes to the code, you can build from sources.\n\nInstall [`hatch`](https://hatch.pypa.io) to manage the projects dependencies and run dev scripts:\n\n```bash\npipx install hatch\n```\n\nClone the repository:\n\n```bash\ngit clone https://github.com/LibreTranslate/LibreTranslate.git\ncd LibreTranslate\n```\n\nHatch will automatically install the required dependencies in a virtual environment, and enable [`pre-commit`](https://pre-commit.com/), which will run before each commit to run formatting. You can ignore `pre-commit` checks when committing if necessary: `git commit --no-verify -m \"Fix\"`\n\nRun in development:\n\n```bash\nhatch run dev --debug\n```\n\nThen open a web browser to <http://localhost:5000>\n\nYou can also start a new shell in a virtual environment with libretranslate installed:\n\n```bash\nhatch shell\nlibretranslate [args]\n# Or\npython main.py [args]\n```\n\n> You can still use `pip install -e \".[test]\"` directly if you don't want to use hatch.\n\n\n## Run the tests {#run-the-tests}\n\n\nRun the test suite and linting checks:\n\n```bash\nhatch run test\n```\n\nTo display all `print()` when debugging:\n\n```bash\nhatch run test -s\n```\n\nYou can also run the tests on multiple python versions:\n\n```bash\nhatch run all:test\n```\n\nYou can clean the virtual environment with:\n\n```bash\nhatch env prune\n```\n\n\n## Build with Docker {#build-with-docker}\n\n\n```bash\ndocker build -f docker/Dockerfile [--build-arg with_models=true] -t libretranslate .\n```\n\nIf you want to run the Docker image in a complete offline environment, you need to add the `--build-arg with_models=true` parameter. Then the language models are downloaded during the build process of the image. Otherwise, these models get downloaded on the first run of the image/container.\n\nRun the built image:\n\n```bash\ndocker run -it -p 5000:5000 libretranslate [args]\n```\n\nOr build and run using Docker Compose:\n\n```bash\ndocker compose up -d --build\n```\n\n> Feel free to change the [`docker-compose.yml`](https://github.com/LibreTranslate/LibreTranslate/blob/main/docker-compose.yml) file to adapt it to your deployment needs, or use an extra `docker-compose.prod.yml` file for your deployment configuration.\n>\n> The models are stored inside the container under `/home/libretranslate/.local/share` and `/home/libretranslate/.local/cache`. Feel free to use volumes if you do not want to redownload the models when the container is destroyed. To update the models, use the `--update-models` argument.\n\n\n## FAQ {#faq}\n\n\n\n### Externally Managed Environment {#externally-managed-environment}\n\n\nSome users may encounter the following error while installing packages:\n\n```\nerror: externally-managed-environment\n\n× This environment is externally managed\n╰─> To install Python packages system-wide, try apt install\n    python3-xyz, where xyz is the package you are trying to\n    install.\n\n    …\n```\n\nThis occurs when your operating system depends on and manages Python for core functionality. In this case, you should install and setup venv (virtual environments) to manage project dependencies.\n\nThis prevents pip packages from being installed system-wide. This way, there are no risks of pip packages conflicting between multiple projects or the operating system.",
      "documentId": "guides/build_from_sources",
      "locale": "en",
      "contentLocale": "en",
      "contentVersion": "current",
      "versionScope": "site",
      "alternates": [
        {
          "locale": "en",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/guides/build_from_sources/",
          "markdown": "https://sourcey-libretranslate.pages.dev/guides/build_from_sources/index.md"
        }
      ]
    },
    {
      "id": "guides/manage_api_keys/index.md",
      "kind": "page",
      "title": "Manage API Keys",
      "description": "Learn how to issue and manage API Keys.",
      "tab": "",
      "url": "https://sourcey-libretranslate.pages.dev/guides/manage_api_keys/",
      "markdown": "https://sourcey-libretranslate.pages.dev/guides/manage_api_keys/index.md",
      "file": "guides/manage_api_keys/index.md",
      "searchText": "\n\n> [!TIP]\n> **This information is for self-hosted instances**\n>\n> If you need an API Key for [libretranslate.com](https://libretranslate.com), you need to purchase it from [here](https://portal.libretranslate.com).\n\n\n\n\n## Manage API Keys {#manage-api-keys}\n\n\nLibreTranslate supports per-user limit quotas, e.g. you can issue API keys to users so that they can enjoy higher requests limits per minute (if you also set `--req-limit`). By default all users are rate-limited based on `--req-limit`, but passing an optional `api_key` parameter to the REST endpoints allows a user to enjoy higher request limits. You can also specify different character limits that bypass the default `--char-limit` value on a per-key basis.\n\nTo use API keys simply start LibreTranslate with the `--api-keys` option. If you modified the API keys database path with the option `--api-keys-db-path`, you must specify the path with the same argument flag when using the `ltmanage keys` command.\n\n\n### Add New Key {#add-new-key}\n\n\nTo issue a new API key with 120 requests per minute limits:\n\n```bash\nltmanage keys add 120\n```\n\nTo issue a new API key with 120 requests per minute and a maximum of 5,000 characters per request:\n\n```bash\nltmanage keys add 120 --char-limit 5000\n```\n\nIf you changed the API keys database path:\n\n```bash\nltmanage keys --api-keys-db-path path/to/db/dbName.db add 120\n```\n\n\n### Remove Keys {#remove-keys}\n\n\n```bash\nltmanage keys remove <api-key>\n```\n\n\n### View Keys {#view-keys}\n\n\n```bash\nltmanage keys\n```",
      "documentId": "guides/manage_api_keys",
      "locale": "en",
      "contentLocale": "en",
      "contentVersion": "current",
      "versionScope": "site",
      "alternates": [
        {
          "locale": "en",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/guides/manage_api_keys/",
          "markdown": "https://sourcey-libretranslate.pages.dev/guides/manage_api_keys/index.md"
        }
      ]
    },
    {
      "id": "guides/supported_languages/index.md",
      "kind": "page",
      "title": "Supported Languages",
      "description": "List of available language models.",
      "tab": "",
      "url": "https://sourcey-libretranslate.pages.dev/guides/supported_languages/",
      "markdown": "https://sourcey-libretranslate.pages.dev/guides/supported_languages/index.md",
      "file": "guides/supported_languages/index.md",
      "searchText": "LibreTranslate language models are hosted on the [argospm-index](https://github.com/argosopentech/argospm-index). For additional models (not included in this list) also check [this thread](https://community.libretranslate.com/t/opus-mt-language-models-port-thread/757).\n\nIf a direct language pair is not available, the program automatically pivots (usually via English).\n\n| From        | To        | Size (MB)      | Version | Link                                                              |\n| ----------- | ----------| --------- | ------- | ----------------------------------------------------------------- |\n| Albanian (sq) | English (en) | 67 | 1.9 | [Link](https://argos-net.com/v1/translate-sq_en-1_9.argosmodel) |\n| Arabic (ar) | English (en) | 78 | 1.0 | [Link](https://argos-net.com/v1/translate-ar_en-1_0.argosmodel) |\n| Azerbaijani (az) | English (en) | 115 | 1.5 | [Link](https://argos-net.com/v1/translate-az_en-1_5.argosmodel) |\n| Basque (eu) | English (en) | 72 | 1.9 | [Link](https://argos-net.com/v1/translate-eu_en-1_9.argosmodel) |\n| Bengali (bn) | English (en) | 67 | 1.9 | [Link](https://argos-net.com/v1/translate-bn_en-1_9.argosmodel) |\n| Bulgarian (bg) | English (en) | 69 | 1.9 | [Link](https://argos-net.com/v1/translate-bg_en-1_9.argosmodel) |\n| Catalan (ca) | English (en) | 72 | 1.7 | [Link](https://argos-net.com/v1/translate-ca_en-1_7.argosmodel) |\n| Chinese (traditional) (zt) | English (en) | 71 | 1.9 | [Link](https://argos-net.com/v1/translate-zt_en-1_9.argosmodel) |\n| Chinese (zh) | English (en) | 71 | 1.9 | [Link](https://argos-net.com/v1/translate-zh_en-1_9.argosmodel) |\n| Czech (cs) | English (en) | 68 | 1.9.6 | [Link](https://argos-net.com/v1/translate-cs_en-1_9_6.argosmodel) |\n| Danish (da) | English (en) | 66 | 1.9 | [Link](https://argos-net.com/v1/translate-da_en-1_9.argosmodel) |\n| Dutch (nl) | English (en) | 67 | 1.8 | [Link](https://argos-net.com/v1/translate-nl_en-1_8.argosmodel) |\n| English (en) | Albanian (sq) | 66 | 1.9 | [Link](https://argos-net.com/v1/translate-en_sq-1_9.argosmodel) |\n| English (en) | Arabic (ar) | 84 | 1.0 | [Link](https://argos-net.com/v1/translate-en_ar-1_0.argosmodel) |\n| English (en) | Azerbaijani (az) | 119 | 1.5 | [Link](https://argos-net.com/v1/translate-en_az-1_5.argosmodel) |\n| English (en) | Basque (eu) | 72 | 1.9 | [Link](https://argos-net.com/v1/translate-en_eu-1_9.argosmodel) |\n| English (en) | Bengali (bn) | 68 | 1.9 | [Link](https://argos-net.com/v1/translate-en_bn-1_9.argosmodel) |\n| English (en) | Bulgarian (bg) | 69 | 1.9 | [Link](https://argos-net.com/v1/translate-en_bg-1_9.argosmodel) |\n| English (en) | Catalan (ca) | 69 | 1.9 | [Link](https://argos-net.com/v1/translate-en_ca-1_9.argosmodel) |\n| English (en) | Chinese (zh) | 67 | 1.9 | [Link](https://argos-net.com/v1/translate-en_zh-1_9.argosmodel) |\n| English (en) | Chinese (traditional) (zt) | 67 | 1.9 | [Link](https://argos-net.com/v1/translate-en_zt-1_9.argosmodel) |\n| English (en) | Czech (cs) | 64 | 1.9.6 | [Link](https://argos-net.com/v1/translate-en_cs-1_9_6.argosmodel) |\n| English (en) | Danish (da) | 64 | 1.9 | [Link](https://argos-net.com/v1/translate-en_da-1_9.argosmodel) |\n| English (en) | Dutch (nl) | 68 | 1.8 | [Link](https://argos-net.com/v1/translate-en_nl-1_8.argosmodel) |\n| English (en) | Esperanto (eo) | 119 | 1.5 | [Link](https://argos-net.com/v1/translate-en_eo-1_5.argosmodel) |\n| English (en) | Estonian (et) | 149 | 1.9 | [Link](https://argos-net.com/v1/translate-en_et-1_9.argosmodel) |\n| English (en) | Finnish (fi) | 66 | 1.9 | [Link](https://argos-net.com/v1/translate-en_fi-1_9.argosmodel) |\n| English (en) | French (fr) | 62 | 1.9 | [Link](https://argos-net.com/v1/translate-en_fr-1_9.argosmodel) |\n| English (en) | Galician (gl) | 72 | 1.9 | [Link](https://argos-net.com/v1/translate-en_gl-1_9.argosmodel) |\n| English (en) | German (de) | 83 | 1.0 | [Link](https://argos-net.com/v1/translate-en_de-1_0.argosmodel) |\n| English (en) | Greek (el) | 66 | 1.9 | [Link](https://argos-net.com/v1/translate-en_el-1_9.argosmodel) |\n| English (en) | Hebrew (he) | 120 | 1.5 | [Link](https://argos-net.com/v1/translate-en_he-1_5.argosmodel) |\n| English (en) | Hindi (hi) | 102 | 1.1 | [Link](https://argos-net.com/v1/translate-en_hi-1_1.argosmodel) |\n| English (en) | Hungarian (hu) | 65 | 1.9 | [Link](https://argos-net.com/v1/translate-en_hu-1_9.argosmodel) |\n| English (en) | Indonesian (id) | 65 | 1.9 | [Link](https://argos-net.com/v1/translate-en_id-1_9.argosmodel) |\n| English (en) | Irish (ga) | 94 | 1.1 | [Link](https://argos-net.com/v1/translate-en_ga-1_1.argosmodel) |\n| English (en) | Italian (it) | 84 | 1.0 | [Link](https://argos-net.com/v1/translate-en_it-1_0.argosmodel) |\n| English (en) | Japanese (ja) | 115 | 1.1 | [Link](https://argos-net.com/v1/translate-en_ja-1_1.argosmodel) |\n| English (en) | Korean (ko) | 115 | 1.1 | [Link](https://argos-net.com/v1/translate-en_ko-1_1.argosmodel) |\n| English (en) | Kyrgyz (ky) | 155 | 1.4 | [Link](https://argos-net.com/v1/translate-en_ky-1_4.argosmodel) |\n| English (en) | Latvian (lv) | 65 | 1.9 | [Link](https://argos-net.com/v1/translate-en_lv-1_9.argosmodel) |\n| English (en) | Lithuanian (lt) | 65 | 1.9 | [Link](https://argos-net.com/v1/translate-en_lt-1_9.argosmodel) |\n| English (en) | Malay (ms) | 66 | 1.9 | [Link](https://argos-net.com/v1/translate-en_ms-1_9.argosmodel) |\n| English (en) | Norwegian (nb) | 63 | 1.9 | [Link](https://argos-net.com/v1/translate-en_nb-1_9.argosmodel) |\n| English (en) | Persian (fa) | 118 | 1.5 | [Link](https://argos-net.com/v1/translate-en_fa-1_5.argosmodel) |\n| English (en) | Polish (pl) | 64 | 1.9 | [Link](https://argos-net.com/v1/translate-en_pl-1_9.argosmodel) |\n| English (en) | Portuguese (pt) | 63 | 1.9 | [Link](https://argos-net.com/v1/translate-en_pt-1_9.argosmodel) |\n| English (en) | Portuguese (Brazil) (pb) | 63 | 1.9 | [Link](https://argos-net.com/v1/translate-en_pb-1_9.argosmodel) |\n| English (en) | Romanian (ro) | 68 | 1.9 | [Link](https://argos-net.com/v1/translate-en_ro-1_9.argosmodel) |\n| English (en) | Russian (ru) | 187 | 1.9 | [Link](https://argos-net.com/v1/translate-en_ru-1_9.argosmodel) |\n| English (en) | Slovak (sk) | 68 | 1.9 | [Link](https://argos-net.com/v1/translate-en_sk-1_9.argosmodel) |\n| English (en) | Slovenian (sl) | 66 | 1.9 | [Link](https://argos-net.com/v1/translate-en_sl-1_9.argosmodel) |\n| English (en) | Spanish (es) | 83 | 1.0 | [Link](https://argos-net.com/v1/translate-en_es-1_0.argosmodel) |\n| English (en) | Swedish (sv) | 103 | 1.5 | [Link](https://argos-net.com/v1/translate-en_sv-1_5.argosmodel) |\n| English (en) | Tagalog (tl) | 66 | 1.9 | [Link](https://argos-net.com/v1/translate-en_tl-1_9.argosmodel) |\n| English (en) | Thai (th) | 64 | 1.9 | [Link](https://argos-net.com/v1/translate-en_th-1_9.argosmodel) |\n| English (en) | Turkish (tr) | 119 | 1.5 | [Link](https://argos-net.com/v1/translate-en_tr-1_5.argosmodel) |\n| English (en) | Ukranian (uk) | 114 | 1.4 | [Link](https://argos-net.com/v1/translate-en_uk-1_4.argosmodel) |\n| English (en) | Urdu (ur) | 66 | 1.9 | [Link](https://argos-net.com/v1/translate-en_ur-1_9.argosmodel) |\n| English (en) | Vietnamese (vi) | 65 | 1.9 | [Link](https://argos-net.com/v1/translate-en_vi-1_9.argosmodel) |\n| Esperanto (eo) | English (en) | 114 | 1.5 | [Link](https://argos-net.com/v1/translate-eo_en-1_5.argosmodel) |\n| Estonian (et) | English (en) | 149 | 1.9 | [Link](https://argos-net.com/v1/translate-et_en-1_9.argosmodel) |\n| Finnish (fi) | English (en) | 66 | 1.9 | [Link](https://argos-net.com/v1/translate-fi_en-1_9.argosmodel) |\n| French (fr) | English (en) | 64 | 1.9 | [Link](https://argos-net.com/v1/translate-fr_en-1_9.argosmodel) |\n| Galician (gl) | English (en) | 72 | 1.9 | [Link](https://argos-net.com/v1/translate-gl_en-1_9.argosmodel) |\n| German (de) | English (en) | 83 | 1.0 | [Link](https://argos-net.com/v1/translate-de_en-1_0.argosmodel) |\n| Greek (el) | English (en) | 69 | 1.9 | [Link](https://argos-net.com/v1/translate-el_en-1_9.argosmodel) |\n| Hebrew (he) | English (en) | 110 | 1.5 | [Link](https://argos-net.com/v1/translate-he_en-1_5.argosmodel) |\n| Hindi (hi) | English (en) | 98 | 1.1 | [Link](https://argos-net.com/v1/translate-hi_en-1_1.argosmodel) |\n| Hungarian (hu) | English (en) | 68 | 1.9 | [Link](https://argos-net.com/v1/translate-hu_en-1_9.argosmodel) |\n| Indonesian (id) | English (en) | 65 | 1.9 | [Link](https://argos-net.com/v1/translate-id_en-1_9.argosmodel) |\n| Irish (ga) | English (en) | 91 | 1.1 | [Link](https://argos-net.com/v1/translate-ga_en-1_1.argosmodel) |\n| Italian (it) | English (en) | 83 | 1.0 | [Link](https://argos-net.com/v1/translate-it_en-1_0.argosmodel) |\n| Japanese (ja) | English (en) | 112 | 1.1 | [Link](https://argos-net.com/v1/translate-ja_en-1_1.argosmodel) |\n| Korean (ko) | English (en) | 113 | 1.1 | [Link](https://argos-net.com/v1/translate-ko_en-1_1.argosmodel) |\n| Kyrgyz (ky) | English (en) | 140 | 1.4 | [Link](https://argos-net.com/v1/translate-ky_en-1_4.argosmodel) |\n| Latvian (lv) | English (en) | 68 | 1.9 | [Link](https://argos-net.com/v1/translate-lv_en-1_9.argosmodel) |\n| Lithuanian (lt) | English (en) | 68 | 1.9 | [Link](https://argos-net.com/v1/translate-lt_en-1_9.argosmodel) |\n| Malay (ms) | English (en) | 66 | 1.9 | [Link](https://argos-net.com/v1/translate-ms_en-1_9.argosmodel) |\n| Norwegian (nb) | English (en) | 64 | 1.9 | [Link](https://argos-net.com/v1/translate-nb_en-1_9.argosmodel) |\n| Persian (fa) | English (en) | 113 | 1.5 | [Link](https://argos-net.com/v1/translate-fa_en-1_5.argosmodel) |\n| Polish (pl) | English (en) | 68 | 1.9 | [Link](https://argos-net.com/v1/translate-pl_en-1_9.argosmodel) |\n| Portuguese (Brazil) (pb) | English (en) | 66 | 1.9 | [Link](https://argos-net.com/v1/translate-pb_en-1_9.argosmodel) |\n| Portuguese (pt) | English (en) | 66 | 1.9 | [Link](https://argos-net.com/v1/translate-pt_en-1_9.argosmodel) |\n| Portuguese (pt) | Spanish (es) | 64 | 1.0 | [Link](https://argos-net.com/v1/translate-pt_es-1_0.argosmodel) |\n| Romanian (ro) | English (en) | 67 | 1.9 | [Link](https://argos-net.com/v1/translate-ro_en-1_9.argosmodel) |\n| Russian (ru) | English (en) | 149 | 1.9 | [Link](https://argos-net.com/v1/translate-ru_en-1_9.argosmodel) |\n| Slovak (sk) | English (en) | 68 | 1.9 | [Link](https://argos-net.com/v1/translate-sk_en-1_9.argosmodel) |\n| Slovenian (sl) | English (en) | 69 | 1.9 | [Link](https://argos-net.com/v1/translate-sl_en-1_9.argosmodel) |\n| Spanish (es) | English (en) | 272 | 1.9 | [Link](https://argos-net.com/v1/translate-es_en-1_9.argosmodel) |\n| Spanish (es) | Portuguese (pt) | 64 | 1.0 | [Link](https://argos-net.com/v1/translate-es_pt-1_0.argosmodel) |\n| Swedish (sv) | English (en) | 91 | 1.5 | [Link](https://argos-net.com/v1/translate-sv_en-1_5.argosmodel) |\n| Tagalog (tl) | English (en) | 68 | 1.9 | [Link](https://argos-net.com/v1/translate-tl_en-1_9.argosmodel) |\n| Thai (th) | English (en) | 68 | 1.9 | [Link](https://argos-net.com/v1/translate-th_en-1_9.argosmodel) |\n| Turkish (tr) | English (en) | 115 | 1.5 | [Link](https://argos-net.com/v1/translate-tr_en-1_5.argosmodel) |\n| Ukrainian (uk) | English (en) | 73 | 1.9 | [Link](https://argos-net.com/v1/translate-uk_en-1_9.argosmodel) |\n| Urdu (ur) | English (en) | 66 | 1.9 | [Link](https://argos-net.com/v1/translate-ur_en-1_9.argosmodel) |\n| Vietnamese (vi) | English (en) | 63 | 1.9 | [Link](https://argos-net.com/v1/translate-vi_en-1_9.argosmodel) |\n",
      "documentId": "guides/supported_languages",
      "locale": "en",
      "contentLocale": "en",
      "contentVersion": "current",
      "versionScope": "site",
      "alternates": [
        {
          "locale": "en",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/guides/supported_languages/",
          "markdown": "https://sourcey-libretranslate.pages.dev/guides/supported_languages/index.md"
        }
      ]
    },
    {
      "id": "guides/faq/index.md",
      "kind": "page",
      "title": "FAQ",
      "description": "Frequently asked questions for LibreTranslate.",
      "tab": "",
      "url": "https://sourcey-libretranslate.pages.dev/guides/faq/",
      "markdown": "https://sourcey-libretranslate.pages.dev/guides/faq/index.md",
      "file": "guides/faq/index.md",
      "searchText": "\n## Can I use your API server at libretranslate.com for my application in production? {#can-i-use-your-api-server-at-libretranslatecom-for-my-application-in-production}\n\n\nIn short, yes, [but only if you buy an API key](https://portal.libretranslate.com). You can always run LibreTranslate for free on your own server of course.\n\n\n## Some translations on libretranslate.com are different than the self-hosted ones. Why? {#some-translations-on-libretranslatecom-are-different-than-the-self-hosted-ones-why}\n\n\nBy default language models are loaded from the [argos-index](https://github.com/argosopentech/argospm-index). Sometimes we deploy models on libretranslate.com that haven't been added to the argos-index yet, such as those converted from OPUS ([thread](https://community.libretranslate.com/t/opus-mt-language-models-port-thread/757))\n\n\n## Where are the language models saved? {#where-are-the-language-models-saved}\n\n\nIn `$HOME/.local/share/argos-translate/packages`. On Windows that's `C:\\Users\\youruser\\.local\\share\\argos-translate\\packages`.\n\n\n## How do I update the language models in a running docker container? {#how-do-i-update-the-language-models-in-a-running-docker-container}\n\n\n```bash\ndocker exec -it libretranslate ./venv/bin/python scripts/install_models.py --update\n```\n\n\n## Can I use LibreTranslate behind a reverse proxy, like Apache2 or Caddy? {#can-i-use-libretranslate-behind-a-reverse-proxy-like-apache2-or-caddy}\n\n\nYes, here are config examples for Apache2 and Caddy that redirect a subdomain (with HTTPS certificate) to LibreTranslate running on a docker at localhost.\n\n```bash\nsudo docker run -ti --rm -p 127.0.0.1:5000:5000 libretranslate/libretranslate\n```\n\nYou can remove `127.0.0.1` on the above command if you want to be able to access it from `domain.tld:5000`, in addition to `subdomain.domain.tld` (this can be helpful to determine if there is an issue with Apache2 or the docker container).\n\nAdd `--restart unless-stopped` if you want this docker to start on boot, unless manually stopped.\n\n<details>\n<summary>Apache config</summary>\n<br>\n\nReplace [YOUR_DOMAIN] with your full domain; for example, `translate.domain.tld` or `libretranslate.domain.tld`.\n\nRemove `#` on the ErrorLog and CustomLog lines to log requests.\n\n```ApacheConf\n#Libretranslate\n\n#Redirect http to https\n<VirtualHost *:80>\n    ServerName http://[YOUR_DOMAIN]\n    Redirect / https://[YOUR_DOMAIN]\n    # ErrorLog ${APACHE_LOG_DIR}/error.log\n    # CustomLog ${APACHE_LOG_DIR}/tr-access.log combined\n </VirtualHost>\n\n#https\n<VirtualHost *:443>\n    ServerName https://[YOUR_DOMAIN]\n\n    ProxyPass / http://127.0.0.1:5000/\n    ProxyPassReverse / http://127.0.0.1:5000/\n    ProxyPreserveHost On\n\n    SSLEngine on\n    SSLCertificateFile /etc/letsencrypt/live/[YOUR_DOMAIN]/fullchain.pem\n    SSLCertificateKeyFile /etc/letsencrypt/live/[YOUR_DOMAIN]/privkey.pem\n    SSLCertificateChainFile /etc/letsencrypt/live/[YOUR_DOMAIN]/fullchain.pem\n\n    # ErrorLog ${APACHE_LOG_DIR}/tr-error.log\n    # CustomLog ${APACHE_LOG_DIR}/tr-access.log combined\n</VirtualHost>\n```\n\nAdd this to an existing site config, or a new file in `/etc/apache2/sites-available/new-site.conf` and run `sudo a2ensite new-site.conf`.\n\nTo get a HTTPS subdomain certificate, install `certbot` (snap), run `sudo certbot certonly --manual --preferred-challenges dns` and enter your information (with `subdomain.domain.tld` as the domain). Add a DNS TXT record with your domain registrar when asked. This will save your certificate and key to `/etc/letsencrypt/live/{subdomain.domain.tld}/`. Alternatively, comment the SSL lines out if you don't want to use HTTPS.\n\n</details>\n\n<details>\n<summary>Caddy config</summary>\n<br>\n\nReplace [YOUR_DOMAIN] with your full domain; for example, `translate.domain.tld` or `libretranslate.domain.tld`.\n\n```Caddyfile\n#Libretranslate\n[YOUR_DOMAIN] {\n  reverse_proxy localhost:5000\n}\n```\n\nAdd this to an existing Caddyfile or save it as `Caddyfile` in any directory and run `sudo caddy reload` in that same directory.\n\n</details>\n\n<details>\n<summary>NGINX config</summary>\n<br>\n\nReplace [YOUR_DOMAIN] with your full domain; for example, `translate.domain.tld` or `libretranslate.domain.tld`.\n\nRemove `#` on the `access_log` and `error_log` lines to disable logging.\n\n```NginxConf\nserver {\n  listen 80;\n  server_name [YOUR_DOMAIN];\n  return 301 https://$server_name$request_uri;\n}\n\nserver {\n  listen 443 http2 ssl;\n  server_name [YOUR_DOMAIN];\n\n  #access_log off;\n  #error_log off;\n\n  # SSL Section\n  ssl_certificate /etc/letsencrypt/live/[YOUR_DOMAIN]/fullchain.pem;\n  ssl_certificate_key /etc/letsencrypt/live/[YOUR_DOMAIN]/privkey.pem;\n\n  ssl_protocols TLSv1.2 TLSv1.3;\n\n  # Using the recommended cipher suite from: https://wiki.mozilla.org/Security/Server_Side_TLS\n  ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384';\n\n  ssl_session_timeout 10m;\n  ssl_session_cache shared:MozSSL:10m;  # about 40000 sessions\n  ssl_session_tickets off;\n\n  # Specifies a curve for ECDHE ciphers.\n  ssl_ecdh_curve prime256v1;\n  # Server should determine the ciphers, not the client\n  ssl_prefer_server_ciphers on;\n\n\n  # Header section\n  add_header Strict-Transport-Security  \"max-age=31536000; includeSubDomains; preload\" always;\n  add_header Referrer-Policy            \"strict-origin\" always;\n\n  add_header X-Frame-Options            \"SAMEORIGIN\"    always;\n  add_header X-XSS-Protection           \"1; mode=block\" always;\n  add_header X-Content-Type-Options     \"nosniff\"       always;\n  add_header X-Download-Options         \"noopen\"        always;\n  add_header X-Robots-Tag               \"none\"          always;\n\n  add_header Feature-Policy             \"microphone 'none'; camera 'none'; geolocation 'none';\"  always;\n  # Newer header but not everywhere supported\n  add_header Permissions-Policy         \"microphone=(), camera=(), geolocation=()\" always;\n\n  # Remove X-Powered-By, which is an information leak\n  fastcgi_hide_header X-Powered-By;\n\n  # Do not send nginx server header\n  server_tokens off;\n\n  # GZIP Section\n  gzip on;\n  gzip_disable \"msie6\";\n\n  gzip_vary on;\n  gzip_proxied any;\n  gzip_comp_level 6;\n  gzip_buffers 16 8k;\n  gzip_http_version 1.1;\n  gzip_min_length 256;\n  gzip_types text/xml text/javascript font/ttf font/eot font/otf application/x-javascript application/atom+xml application/javascript application/json application/manifest+json application/rss+xml application/x-web-app-manifest+json application/xhtml+xml application/xml image/svg+xml image/x-icon text/css text/plain;\n\n  location / {\n      proxy_pass http://127.0.0.1:5000/;\n      proxy_set_header Host $http_host;\n      proxy_set_header X-Real-IP $remote_addr;\n      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n      proxy_set_header X-Forwarded-Proto $scheme;\n      client_max_body_size 0;\n  }\n}\n\n```\n\nAdd this to an existing NGINX config or save it as `libretranslate` in the `/etc/nginx/site-enabled` directory and run `sudo nginx -s reload`.\n\n</details>\n\n\n## Can I run it as a systemd (default pip/python installed one)? {#can-i-run-it-as-a-systemd-default-pippython-installed-one}\n\n\nYes, just create a service file in /etc/systemd/system and enable it to run at startup.\nThe .env (environmant) file is optional based on your setup.\nAdd the below to the file (change to your values as necessary) and name the file as \"libretranslate.service)\n\n```javascript\n[Unit]\nDescription=LibreTranslate\nAfter=network.target\n[Service]\nUser=root\nType=idle\nRestart=always\nEnvironment=\"PATH=/usr/local/lib/python3.11/dist-packages/libretranslate\"\nExecStart=/usr/bin/python3 /usr/local/bin/libretranslate\nEnvironmentFile=/usr/local/lib/python3.11/dist-packages/libretranslate/.env\nExecReload=/bin/kill -s HUP $MAINPID\nKillMode=mixed\nTimeoutStopSec=1\n[Install]\nWantedBy=multi-user.target\n```\n\nOnce saved, reload the daemon & start the service:\n\n```javascript\nsystemctl daemon-reload\nsystemctl start libretranslate.service\nsystemctl enable libretranslate.service\n```\n\n\n## Can I do batch translations? {#can-i-do-batch-translations}\n\n\nYes, pass an array of strings instead of a string to the `q` field:\n\n```javascript\nconst res = await fetch(\"https://libretranslate.com/translate\", {\n  method: \"POST\",\n  body: JSON.stringify({\n    q: [\"Hello\", \"world\"],\n    source: \"en\",\n    target: \"es\",\n  }),\n  headers: { \"Content-Type\": \"application/json\" },\n});\n\nconsole.log(await res.json());\n// {\n//     \"translatedText\": [\n//         \"Hola\",\n//         \"mundo\"\n//     ]\n// }\n```\n",
      "documentId": "guides/faq",
      "locale": "en",
      "contentLocale": "en",
      "contentVersion": "current",
      "versionScope": "site",
      "alternates": [
        {
          "locale": "en",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/guides/faq/",
          "markdown": "https://sourcey-libretranslate.pages.dev/guides/faq/index.md"
        }
      ]
    },
    {
      "id": "guides/integrations/index.md",
      "kind": "page",
      "title": "Integrations",
      "description": "Discover software that works with LibreTranslate.",
      "tab": "",
      "url": "https://sourcey-libretranslate.pages.dev/guides/integrations/",
      "markdown": "https://sourcey-libretranslate.pages.dev/guides/integrations/index.md",
      "file": "guides/integrations/index.md",
      "searchText": "Many software packages have been integrated with LibreTranslate. Some of them are listed below:\n\n\n## Discourse Plugin {#discourse-plugin}\n\n\nYou can use the [official discourse translator plugin](https://github.com/discourse/discourse-translator) to translate [Discourse](https://discourse.org) topics with LibreTranslate. To install it simply modify `/var/discourse/containers/app.yml`:\n\n```yaml\n## Plugins go here\n## see https://meta.discourse.org/t/19157 for details\nhooks:\n  after_code:\n    - exec:\n        cd: $home/plugins\n        cmd:\n          - git clone https://github.com/discourse/docker_manager.git\n          - git clone https://github.com/discourse/discourse-translator\n    ...\n```\n\nThen issue `./launcher rebuild app`. From the Discourse's admin panel then select \"LibreTranslate\" as a translation provider and set the relevant endpoint configurations.\n\nSee it in action on this [page](https://community.libretranslate.com/t/have-you-considered-adding-the-libretranslate-discourse-translator-multilingual-to-this-forum/766).\n\n\n## Mobile Apps {#mobile-apps}\n\n\n- [LibreTranslator](https://codeberg.org/BeoCode/LibreTranslator) is an Android app available [in the F-Droid store](https://f-droid.org/packages/de.beowulf.libretranslater/) that uses the LibreTranslate API.\n- [Translate You](https://github.com/you-apps/TranslateYou) is a privacy focused translator app built with MD3 available [in F-Droid Store](https://f-droid.org/packages/com.bnyro.translate/) and uses the LibreTranslate API.\n- [LiTranslate](https://github.com/viktorkalyniuk/LiTranslate-iOS) is an iOS app [available on the App Store](https://apps.apple.com/us/app/litranslate/id1644385339) that uses the LibreTranslate API.\n\n\n## Web browser {#web-browser}\n\n\n- [LibreTranslate for Firefox](https://addons.mozilla.org/en-US/firefox/addon/libretranslate/) a Firefox extension for translating with LibreTranslate\n- [LibreTranslateClient for Firefox](https://addons.mozilla.org/en-US/firefox/addon/libretranslateclient/) another Firefox extension for translating with LibreTranslate\n- [minbrowser](https://minbrowser.org/) is a web browser with [integrated LibreTranslate support](https://github.com/argosopentech/argos-translate/discussions/158#discussioncomment-1141551)",
      "documentId": "guides/integrations",
      "locale": "en",
      "contentLocale": "en",
      "contentVersion": "current",
      "versionScope": "site",
      "alternates": [
        {
          "locale": "en",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/guides/integrations/",
          "markdown": "https://sourcey-libretranslate.pages.dev/guides/integrations/index.md"
        }
      ]
    },
    {
      "id": "guides/mcp_server/index.md",
      "kind": "page",
      "title": "MCP Server",
      "description": "How to make LibreTranslate available to AI agents.",
      "tab": "",
      "url": "https://sourcey-libretranslate.pages.dev/guides/mcp_server/",
      "markdown": "https://sourcey-libretranslate.pages.dev/guides/mcp_server/index.md",
      "file": "guides/mcp_server/index.md",
      "searchText": "LibreTranslate can give machine translation capabilities to AI agents that support the [MCP](https://modelcontextprotocol.io/docs/getting-started/intro) protocol.\n\n\n## Configuration {#configuration}\n\n\nAdd this to your client's configuration:\n\n\n### OpenCode {#opencode}\n\n\n```json\n{\n  \"mcp\": {\n    \"LibreTranslate\": {\n      \"type\": \"local\",\n      \"command\": [\"npx\", \"-y\", \"@libretranslate/mcp\"],\n      \"environment\": {\n        \"LIBRETRANSLATE_API_URL\": \"https://libretranslate.com\",\n        \"LIBRETRANSLATE_API_KEY\": \"your-api-key\"\n      }\n    }\n  }\n}\n```\n\n\n### Claude {#claude}\n\n\n```json\n{\n  \"mcpServers\": {\n    \"libretranslate\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@libretranslate/mcp\"],\n      \"env\": {\n        \"LIBRETRANSLATE_API_URL\": \"https://libretranslate.com\",\n        \"LIBRETRANSLATE_API_KEY\": \"your-api-key\"\n      }\n    }\n  }\n}\n```\n\n| Variable                 | Description                                                                |\n| ------------------------ | -------------------------------------------------------------------------- |\n| `LIBRETRANSLATE_API_URL` | URL of the LibreTranslate API (default: `https://libretranslate.com`)      |\n| `LIBRETRANSLATE_API_KEY` | API key for the LibreTranslate service (required for `libretranslate.com`) |\n\n\n\n## Available Tools {#available-tools}\n\n\n\n### [`detect`](/mcp/#operation-detect-tool) {#detect}\n\n\nDetect the language of a given text.\n\n\n### [`translate`](/mcp/#operation-translate-tool) {#translate}\n\n\nTranslate text from one language to another.\n\n\n### [`languages`](/mcp/#operation-languages-tool) {#languages}\n\n\nList all supported languages for translation.\n\nSee [LibreTranslate-MCP](https://github.com/LibreTranslate/LibreTranslate-MCP) for implementation details.\n\n\n## Tools and HTTP endpoints {#tools-and-http-endpoints}\n\n\n| MCP | Arguments | HTTP request |\n| --- | --- | --- |\n| [`detect`](/mcp/#operation-detect-tool) | `text` | [`POST /detect`](/api/operations/detect/) |\n| [`translate`](/mcp/#operation-translate-tool) | `text`, `source`, `target` | [`POST /translate`](/api/operations/translate/) |\n| [`languages`](/mcp/#operation-languages-tool) | None | [`GET /languages`](/api/operations/languages/) |\n\nThe `translate` tool requests three alternatives. The tools return JSON as text in an MCP content block; failed requests carry `isError: true`.\n\n\n\n> [!NOTE]\n> **Where translation runs**\n>\n> The MCP process runs on your machine. Translation happens on the LibreTranslate instance named by `LIBRETRANSLATE_API_URL`. To use your own instance, set this to its address; see the [self-hosting guide](/guides/installation/).\n\n\n",
      "documentId": "guides/mcp_server",
      "locale": "en",
      "contentLocale": "en",
      "contentVersion": "current",
      "versionScope": "site",
      "alternates": [
        {
          "locale": "en",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/guides/mcp_server/",
          "markdown": "https://sourcey-libretranslate.pages.dev/guides/mcp_server/index.md"
        }
      ]
    },
    {
      "id": "community/resources/index.md",
      "kind": "page",
      "title": "Resources",
      "description": "List of community resources for LibreTranslate.",
      "tab": "",
      "url": "https://sourcey-libretranslate.pages.dev/community/resources/",
      "markdown": "https://sourcey-libretranslate.pages.dev/community/resources/index.md",
      "file": "community/resources/index.md",
      "searchText": "\n## Forum {#forum}\n\n\nAll discussions related to the project take place on the community forum. This is also the best place to ask for help. Come say hi!\n\nhttps://community.libretranslate.com\n\n\n## GitHub {#github}\n\n\nThe source code for the project is hosted on GitHub. The issue tracker there can be used for reporting problems, but not for asking questions. Use the forum instead.\n\nhttps://github.com/LibreTranslate/LibreTranslate\n\n\n## BlueSky {#bluesky}\n\n\nWe have a low-volume BlueSky account that we use for broadcasting the latest news from the project.\n\nhttps://bsky.app/profile/libretranslate.com\n\n\n## Weblate {#weblate}\n\n\nYou can help translate the UI of LibreTranslate via Weblate.\n\nhttps://hosted.weblate.org/projects/libretranslate/app/",
      "documentId": "community/resources",
      "locale": "en",
      "contentLocale": "en",
      "contentVersion": "current",
      "versionScope": "site",
      "alternates": [
        {
          "locale": "en",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/community/resources/",
          "markdown": "https://sourcey-libretranslate.pages.dev/community/resources/index.md"
        }
      ]
    },
    {
      "id": "community/projects/index.md",
      "kind": "page",
      "title": "Projects",
      "description": "List of projects part of LibreTranslate.",
      "tab": "",
      "url": "https://sourcey-libretranslate.pages.dev/community/projects/",
      "markdown": "https://sourcey-libretranslate.pages.dev/community/projects/index.md",
      "file": "community/projects/index.md",
      "searchText": "In addition to [LibreTranslate](https://github.com/LibreTranslate/LibreTranslate) we work on and maintain several projects related to machine translation. Some of them are listed below:\n\n* [LTEngine](https://github.com/LibreTranslate/LTEngine): Machine translation powered by LLMs with a LibreTranslate-compatible API\n* [LexiLang](https://github.com/LibreTranslate/LexiLang): Simple, fast dictionary-based language detector for short texts\n* [Locomotive](https://github.com/LibreTranslate/Locomotive): Toolkit for training/converting LibreTranslate compatible language models\n* [MiniSBD](https://github.com/LibreTranslate/MiniSBD): Library for fast sentence boundary detection\n",
      "documentId": "community/projects",
      "locale": "en",
      "contentLocale": "en",
      "contentVersion": "current",
      "versionScope": "site",
      "alternates": [
        {
          "locale": "en",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/community/projects/",
          "markdown": "https://sourcey-libretranslate.pages.dev/community/projects/index.md"
        }
      ]
    },
    {
      "id": "community/mirrors/index.md",
      "kind": "page",
      "title": "Mirrors",
      "description": "List of available mirrors for LibreTranslate.",
      "tab": "",
      "url": "https://sourcey-libretranslate.pages.dev/community/mirrors/",
      "markdown": "https://sourcey-libretranslate.pages.dev/community/mirrors/index.md",
      "file": "community/mirrors/index.md",
      "searchText": "This is a list of public LibreTranslate instances. Some require an API key. If you want to add a new URL, please open a [pull request](https://github.com/LibreTranslate/Documentation/edit/main/src/content/docs/community/mirrors.md).\n\n| URL                                                                 | API Key Required | Links                                                                                                         |\n| ------------------------------------------------------------------- | ---------------- | ------------------------------------------------------------------------------------------------------------- |\n| [libretranslate.com](https://libretranslate.com)                    | ✔️             | [ [Get API Key](https://portal.libretranslate.com) ] [ [Service Status](https://status.libretranslate.com/) ] |\n| [translate.cutie.dating](https://translate.cutie.dating)            | ❌               | [ [Service Status](https://status.cutie.dating/status) ] |\n| [translate.fedilab.app](https://translate.fedilab.app/)             | ❌               | |\n\n\n## TOR/i2p Mirrors {#tori2p-mirrors}\n\n\n| URL                                                                                                                                            |\n| ---------------------------------------------------------------------------------------------------------------------------------------------- |\n| [lt.vernccvbvyi5qhfzyqengccj7lkove6bjot2xhh5kajhwvidqafczrad.onion](http://lt.vernccvbvyi5qhfzyqengccj7lkove6bjot2xhh5kajhwvidqafczrad.onion/) |\n| [lt.vern.i2p](http://vernf45n7mxwqnp5riaax7p67pwcl7wcefdcnqqvim7ckdx4264a.b32.i2p/)                                                            |\n| [cutetranskomrvygzfinjwlxny7fqpqvwe4nuioniui5rk4rw7yyw6id.onion](http://cutetranskomrvygzfinjwlxny7fqpqvwe4nuioniui5rk4rw7yyw6id.onion/)       |\n",
      "documentId": "community/mirrors",
      "locale": "en",
      "contentLocale": "en",
      "contentVersion": "current",
      "versionScope": "site",
      "alternates": [
        {
          "locale": "en",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/community/mirrors/",
          "markdown": "https://sourcey-libretranslate.pages.dev/community/mirrors/index.md"
        }
      ]
    },
    {
      "id": "guides/contributing/index.md",
      "kind": "page",
      "title": "Contributing",
      "description": "How to contribute to LibreTranslate.",
      "tab": "",
      "url": "https://sourcey-libretranslate.pages.dev/guides/contributing/",
      "markdown": "https://sourcey-libretranslate.pages.dev/guides/contributing/index.md",
      "file": "guides/contributing/index.md",
      "searchText": "We welcome contributions! Here's some ways to contribute to the project:\n\n\n## Financially {#financially}\n\n\nYou can support the project financially by getting yourself an [API key](https://portal.libretranslate.com) and/or support upstream libraries like [argos-translate](https://github.com/argosopentech/argos-translate) by visiting their [sponsorship page](https://github.com/sponsors/argosopentech).\n\n\n## In-Kind {#in-kind}\n\n\n\n### Documentation {#documentation}\n\n\nYou can help us improve this [documentation](https://github.com/LibreTranslate/Documentation) or [translate it](https://github.com/LibreTranslate/Documentation/#translation).\n\n\n### Web UI {#web-ui}\n\n\nThe LibreTranslate [Web UI](https://libretranslate.com) is available in all the languages for which LibreTranslate can translate to. It can also (roughly) [translate itself!](https://github.com/LibreTranslate/LibreTranslate/blob/main/scripts/update_locales.py) Some languages might not appear in the UI since they haven't been reviewed by a human yet. You can enable all languages by turning on `--debug` mode.\n\nYou can help us improve or review the UI translations:\n\n- Go to <https://hosted.weblate.org/projects/libretranslate/app/#translations>. All changes are automatically pushed to the repository.\n- Once all strings have been reviewed/edited, open a pull request and change `libretranslate/locales/{code}/meta.json` or let us know in the [community forum](https://community.libretranslate.com) which language you've reviewed and we'll do it for you:\n\n```json\n{\n \"name\": \"<Language>\",\n \"reviewed\": true <-- Change this from false to true\n}\n```\n\n\n### Developer Tasks {#developer-tasks}\n\n\n- You can train a new language model using [Locomotive](https://github.com/LibreTranslate/Locomotive). For example, we want to train improved neural networks for [German](https://community.libretranslate.com/t/help-wanted-improve-en-de-translation/935) and many other languages.\n- Can you beat the performance of our language models? Train a new one and let's compare it. To submit your model make a post on the [community forum](https://community.libretranslate.com/) with a link to download your .argosmodel file and some sample text that your model has translated.\n- Help us fix an existing [issue](https://github.com/LibreTranslate/LibreTranslate/issues).\n- Add a new feature that is useful to you. If you're unsure about it, open a discussion on our [community forum](https://community.libretranslate.com/) first.\n\n\n",
      "documentId": "guides/contributing",
      "locale": "en",
      "contentLocale": "en",
      "contentVersion": "current",
      "versionScope": "site",
      "alternates": [
        {
          "locale": "en",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/guides/contributing/",
          "markdown": "https://sourcey-libretranslate.pages.dev/guides/contributing/index.md"
        }
      ]
    },
    {
      "id": "api/index.md",
      "kind": "page",
      "title": "LibreTranslate",
      "description": "Free and Open Source Machine Translation API.",
      "tab": "api",
      "url": "https://sourcey-libretranslate.pages.dev/api/",
      "markdown": "https://sourcey-libretranslate.pages.dev/api/index.md",
      "file": "api/index.md",
      "searchText": "info title LibreTranslate summary  version 1.9.6 description Free and Open Source Machine Translation API. termsOfService  contact  license name AGPL-3.0 url  identifier  logo  servers 0 url https://libretranslate.com description  variables  tags 0 name translate summary  description  externalDocs  1 name misc summary  description  externalDocs  securitySchemes ",
      "documentId": "introduction",
      "locale": "en",
      "contentLocale": "en",
      "contentVersion": "current",
      "versionScope": "site",
      "alternates": [
        {
          "locale": "en",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/api/",
          "markdown": "https://sourcey-libretranslate.pages.dev/api/index.md"
        },
        {
          "locale": "it",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/it/api/",
          "markdown": "https://sourcey-libretranslate.pages.dev/it/api/index.md"
        },
        {
          "locale": "fr",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/fr/api/",
          "markdown": "https://sourcey-libretranslate.pages.dev/fr/api/index.md"
        },
        {
          "locale": "es",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/es/api/",
          "markdown": "https://sourcey-libretranslate.pages.dev/es/api/index.md"
        }
      ]
    },
    {
      "id": "api/operations/detect/index.md",
      "kind": "operation",
      "title": "Detect Language of Text",
      "description": "POST /detect: returns detections.",
      "tab": "api",
      "url": "https://sourcey-libretranslate.pages.dev/api/operations/detect/",
      "markdown": "https://sourcey-libretranslate.pages.dev/api/operations/detect/index.md",
      "file": "api/operations/detect/index.md",
      "searchText": "operationId  summary Detect Language of Text description  method post path /detect tags 0 translate parameters  requestBody description  required  content application/x-www-form-urlencoded schema name  type object format  title  description  default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  properties q name  type string format  title  description Text to detect default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example What language is this? examples  refName  api_key name  type string format  title  description API key default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx examples  refName  required 0 q example  examples  encoding  prefixEncoding  itemEncoding  responses 0 statusCode 200 summary  description Detections content application/json schema name  type array format  title  description  default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName detections items name  type object format  title  description  default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  properties confidence name  type number format float title  description Confidence value default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example 100 examples  refName  minimum 0 maximum 100 language name  type string format  title  description Language code default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example en examples  refName  example  examples  encoding  prefixEncoding  itemEncoding  headers  links  1 statusCode 400 summary  description Invalid request content application/json schema name  type object format  title  description  default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName error-response properties error name  type string format  title  description Error message default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  example  examples  encoding  prefixEncoding  itemEncoding  headers  links  2 statusCode 403 summary  description Banned content application/json schema name  type object format  title  description  default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName error-response properties error name  type string format  title  description Error message default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  example  examples  encoding  prefixEncoding  itemEncoding  headers  links  3 statusCode 429 summary  description Slow down content application/json schema name  type object format  title  description  default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName error-slow-down properties error name  type string format  title  description Reason for slow down default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  example  examples  encoding  prefixEncoding  itemEncoding  headers  links  4 statusCode 500 summary  description Detection error content application/json schema name  type object format  title  description  default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName error-response properties error name  type string format  title  description Error message default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  example  examples  encoding  prefixEncoding  itemEncoding  headers  links  security  deprecated  servers  externalDocs  callbacks  hidden  codeSamples ",
      "documentId": "POST /detect",
      "locale": "en",
      "contentLocale": "en",
      "contentVersion": "current",
      "versionScope": "site",
      "alternates": [
        {
          "locale": "en",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/api/operations/detect/",
          "markdown": "https://sourcey-libretranslate.pages.dev/api/operations/detect/index.md"
        },
        {
          "locale": "it",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/it/api/operations/detect/",
          "markdown": "https://sourcey-libretranslate.pages.dev/it/api/operations/detect/index.md"
        },
        {
          "locale": "fr",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/fr/api/operations/detect/",
          "markdown": "https://sourcey-libretranslate.pages.dev/fr/api/operations/detect/index.md"
        },
        {
          "locale": "es",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/es/api/operations/detect/",
          "markdown": "https://sourcey-libretranslate.pages.dev/es/api/operations/detect/index.md"
        }
      ]
    },
    {
      "id": "api/operations/frontendsettings/index.md",
      "kind": "operation",
      "title": "Retrieve Frontend Settings",
      "description": "GET /frontend/settings: returns frontend-settings.",
      "tab": "api",
      "url": "https://sourcey-libretranslate.pages.dev/api/operations/frontendsettings/",
      "markdown": "https://sourcey-libretranslate.pages.dev/api/operations/frontendsettings/index.md",
      "file": "api/operations/frontendsettings/index.md",
      "searchText": "operationId  summary Retrieve Frontend Settings description  method get path /frontend/settings tags 0 misc parameters  requestBody  responses 0 statusCode 200 summary  description frontend settings content application/json schema name  type object format  title  description  default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName frontend-settings properties apiKeys name  type boolean format  title  description Whether the API key database is enabled. default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  charLimit name  type integer format  title  description Character input limit for this language (-1 indicates no limit) default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  frontendTimeout name  type integer format  title  description Frontend translation timeout default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  keyRequired name  type boolean format  title  description Whether an API key is required. default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  language name  type object format  title  description  default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  properties source name  type object format  title  description  default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  properties code name  type string format  title  description Language code default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  name name  type string format  title  description Human-readable language name (in English) default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  target name  type object format  title  description  default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  properties code name  type string format  title  description Language code default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  name name  type string format  title  description Human-readable language name (in English) default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  suggestions name  type boolean format  title  description Whether submitting suggestions is enabled. default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  supportedFilesFormat name  type array format  title  description Supported files format default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  items name  type string format  title  description  default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  example  examples  encoding  prefixEncoding  itemEncoding  headers  links  security  deprecated  servers  externalDocs  callbacks  hidden  codeSamples ",
      "documentId": "GET /frontend/settings",
      "locale": "en",
      "contentLocale": "en",
      "contentVersion": "current",
      "versionScope": "site",
      "alternates": [
        {
          "locale": "en",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/api/operations/frontendsettings/",
          "markdown": "https://sourcey-libretranslate.pages.dev/api/operations/frontendsettings/index.md"
        },
        {
          "locale": "it",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/it/api/operations/frontendsettings/",
          "markdown": "https://sourcey-libretranslate.pages.dev/it/api/operations/frontendsettings/index.md"
        },
        {
          "locale": "fr",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/fr/api/operations/frontendsettings/",
          "markdown": "https://sourcey-libretranslate.pages.dev/fr/api/operations/frontendsettings/index.md"
        },
        {
          "locale": "es",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/es/api/operations/frontendsettings/",
          "markdown": "https://sourcey-libretranslate.pages.dev/es/api/operations/frontendsettings/index.md"
        }
      ]
    },
    {
      "id": "api/operations/health/index.md",
      "kind": "operation",
      "title": "Health Check",
      "description": "GET /health: returns health-response.",
      "tab": "api",
      "url": "https://sourcey-libretranslate.pages.dev/api/operations/health/",
      "markdown": "https://sourcey-libretranslate.pages.dev/api/operations/health/index.md",
      "file": "api/operations/health/index.md",
      "searchText": "operationId  summary Health Check description  method get path /health tags 0 misc parameters  requestBody  responses 0 statusCode 200 summary  description Service is healthy content application/json schema name  type object format  title  description  default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName health-response properties status name  type string format  title  description Health status default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example ok examples  refName  example  examples  encoding  prefixEncoding  itemEncoding  headers  links  security  deprecated  servers  externalDocs  callbacks  hidden  codeSamples ",
      "documentId": "GET /health",
      "locale": "en",
      "contentLocale": "en",
      "contentVersion": "current",
      "versionScope": "site",
      "alternates": [
        {
          "locale": "en",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/api/operations/health/",
          "markdown": "https://sourcey-libretranslate.pages.dev/api/operations/health/index.md"
        },
        {
          "locale": "it",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/it/api/operations/health/",
          "markdown": "https://sourcey-libretranslate.pages.dev/it/api/operations/health/index.md"
        },
        {
          "locale": "fr",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/fr/api/operations/health/",
          "markdown": "https://sourcey-libretranslate.pages.dev/fr/api/operations/health/index.md"
        },
        {
          "locale": "es",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/es/api/operations/health/",
          "markdown": "https://sourcey-libretranslate.pages.dev/es/api/operations/health/index.md"
        }
      ]
    },
    {
      "id": "api/operations/languages/index.md",
      "kind": "operation",
      "title": "Get Supported Languages",
      "description": "GET /languages: returns languages.",
      "tab": "api",
      "url": "https://sourcey-libretranslate.pages.dev/api/operations/languages/",
      "markdown": "https://sourcey-libretranslate.pages.dev/api/operations/languages/index.md",
      "file": "api/operations/languages/index.md",
      "searchText": "operationId  summary Get Supported Languages description  method get path /languages tags 0 translate parameters  requestBody  responses 0 statusCode 200 summary  description List of supported languages content application/json schema name  type array format  title  description  default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName languages items name  type object format  title  description Supported language default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  properties code name  type string format  title  description Language code default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  name name  type string format  title  description Human-readable language name (in English) default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  targets name  type array format  title  description Supported target language codes default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  items name  type string format  title  description  default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  example  examples  encoding  prefixEncoding  itemEncoding  headers  links  security  deprecated  servers  externalDocs  callbacks  hidden  codeSamples ",
      "documentId": "GET /languages",
      "locale": "en",
      "contentLocale": "en",
      "contentVersion": "current",
      "versionScope": "site",
      "alternates": [
        {
          "locale": "en",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/api/operations/languages/",
          "markdown": "https://sourcey-libretranslate.pages.dev/api/operations/languages/index.md"
        },
        {
          "locale": "it",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/it/api/operations/languages/",
          "markdown": "https://sourcey-libretranslate.pages.dev/it/api/operations/languages/index.md"
        },
        {
          "locale": "fr",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/fr/api/operations/languages/",
          "markdown": "https://sourcey-libretranslate.pages.dev/fr/api/operations/languages/index.md"
        },
        {
          "locale": "es",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/es/api/operations/languages/",
          "markdown": "https://sourcey-libretranslate.pages.dev/es/api/operations/languages/index.md"
        }
      ]
    },
    {
      "id": "api/operations/suggest/index.md",
      "kind": "operation",
      "title": "Submit a Suggestion to Improve a Translation",
      "description": "POST /suggest: returns suggest-response.",
      "tab": "api",
      "url": "https://sourcey-libretranslate.pages.dev/api/operations/suggest/",
      "markdown": "https://sourcey-libretranslate.pages.dev/api/operations/suggest/index.md",
      "file": "api/operations/suggest/index.md",
      "searchText": "operationId  summary Submit a Suggestion to Improve a Translation description  method post path /suggest tags 0 misc parameters  requestBody description  required  content application/x-www-form-urlencoded schema name  type object format  title  description  default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  properties q name  type string format  title  description Original text default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example Hello world! examples  refName  s name  type string format  title  description Suggested translation default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example ¡Hola mundo! examples  refName  source name  type string format  title  description Language of original text default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example en examples  refName  target name  type string format  title  description Language of suggested translation default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example es examples  refName  required 0 q 1 s 2 source 3 target example  examples  encoding  prefixEncoding  itemEncoding  responses 0 statusCode 200 summary  description Success content application/json schema name  type object format  title  description  default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName suggest-response properties success name  type boolean format  title  description Whether submission was successful default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  example  examples  encoding  prefixEncoding  itemEncoding  headers  links  1 statusCode 403 summary  description Not authorized content application/json schema name  type object format  title  description  default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName error-response properties error name  type string format  title  description Error message default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  example  examples  encoding  prefixEncoding  itemEncoding  headers  links  security  deprecated  servers  externalDocs  callbacks  hidden  codeSamples ",
      "documentId": "POST /suggest",
      "locale": "en",
      "contentLocale": "en",
      "contentVersion": "current",
      "versionScope": "site",
      "alternates": [
        {
          "locale": "en",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/api/operations/suggest/",
          "markdown": "https://sourcey-libretranslate.pages.dev/api/operations/suggest/index.md"
        },
        {
          "locale": "it",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/it/api/operations/suggest/",
          "markdown": "https://sourcey-libretranslate.pages.dev/it/api/operations/suggest/index.md"
        },
        {
          "locale": "fr",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/fr/api/operations/suggest/",
          "markdown": "https://sourcey-libretranslate.pages.dev/fr/api/operations/suggest/index.md"
        },
        {
          "locale": "es",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/es/api/operations/suggest/",
          "markdown": "https://sourcey-libretranslate.pages.dev/es/api/operations/suggest/index.md"
        }
      ]
    },
    {
      "id": "api/operations/translate/index.md",
      "kind": "operation",
      "title": "Translate Text",
      "description": "POST /translate: returns translate.",
      "tab": "api",
      "url": "https://sourcey-libretranslate.pages.dev/api/operations/translate/",
      "markdown": "https://sourcey-libretranslate.pages.dev/api/operations/translate/index.md",
      "file": "api/operations/translate/index.md",
      "searchText": "operationId  summary Translate Text description  method post path /translate tags 0 translate parameters  requestBody description  required  content application/x-www-form-urlencoded schema name  type object format  title  description  default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  properties q name  type  format  title  description Text(s) to translate default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  oneOf 0 name  type string format  title  description  default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example Hello world! examples  refName  1 name  type array format  title  description  default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example 0 Hello world! examples  refName  items name  type  format  title  description  default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  source name  type string format  title  description Source language code or \"auto\" for auto detection default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example en examples  refName  target name  type string format  title  description Target language code default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example es examples  refName  format name  type string format  title  description Format of source text:\n * `text` - Plain text\n * `html` - HTML markup\n default text enum 0 text 1 html enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example text examples  refName  alternatives name  type integer format  title  description Preferred number of alternative translations default 0 enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example 3 examples  refName  api_key name  type string format  title  description API key default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx examples  refName  required 0 q 1 source 2 target example  examples  encoding  prefixEncoding  itemEncoding  responses 0 statusCode 200 summary  description Translation content application/json schema name  type object format  title  description  default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName translate properties alternatives name  type  format  title  description Alternative translations default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  oneOf 0 name  type array format  title  description  default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  items name  type string format  title  description  default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  1 name  type array format  title  description  default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  items name  type array format  title  description  default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  items name  type string format  title  description  default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  detectedLanguage name  type  format  title  description  default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  oneOf 0 name  type object format  title  description  default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  properties confidence name  type number format float title  description Confidence value default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example 100 examples  refName  minimum 0 maximum 100 language name  type string format  title  description Language code default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  1 name  type array format  title  description  default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  items name  type object format  title  description  default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  properties confidence name  type number format float title  description Confidence value default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example 100 examples  refName  minimum 0 maximum 100 language name  type string format  title  description Language code default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  translatedText name  type  format  title  description Translated text(s) default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  oneOf 0 name  type string format  title  description  default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  1 name  type array format  title  description  default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  items name  type  format  title  description  default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  required 0 translatedText example  examples  encoding  prefixEncoding  itemEncoding  headers  links  1 statusCode 400 summary  description Invalid request content application/json schema name  type object format  title  description  default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName error-response properties error name  type string format  title  description Error message default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  example  examples  encoding  prefixEncoding  itemEncoding  headers  links  2 statusCode 403 summary  description Banned content application/json schema name  type object format  title  description  default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName error-response properties error name  type string format  title  description Error message default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  example  examples  encoding  prefixEncoding  itemEncoding  headers  links  3 statusCode 429 summary  description Slow down content application/json schema name  type object format  title  description  default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName error-slow-down properties error name  type string format  title  description Reason for slow down default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  example  examples  encoding  prefixEncoding  itemEncoding  headers  links  4 statusCode 500 summary  description Translation error content application/json schema name  type object format  title  description  default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName error-response properties error name  type string format  title  description Error message default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  example  examples  encoding  prefixEncoding  itemEncoding  headers  links  security  deprecated  servers  externalDocs  callbacks  hidden  codeSamples ",
      "documentId": "POST /translate",
      "locale": "en",
      "contentLocale": "en",
      "contentVersion": "current",
      "versionScope": "site",
      "alternates": [
        {
          "locale": "en",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/api/operations/translate/",
          "markdown": "https://sourcey-libretranslate.pages.dev/api/operations/translate/index.md"
        },
        {
          "locale": "it",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/it/api/operations/translate/",
          "markdown": "https://sourcey-libretranslate.pages.dev/it/api/operations/translate/index.md"
        },
        {
          "locale": "fr",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/fr/api/operations/translate/",
          "markdown": "https://sourcey-libretranslate.pages.dev/fr/api/operations/translate/index.md"
        },
        {
          "locale": "es",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/es/api/operations/translate/",
          "markdown": "https://sourcey-libretranslate.pages.dev/es/api/operations/translate/index.md"
        }
      ]
    },
    {
      "id": "api/operations/translate_file/index.md",
      "kind": "operation",
      "title": "Translate a File",
      "description": "POST /translate_file: returns translate-file.",
      "tab": "api",
      "url": "https://sourcey-libretranslate.pages.dev/api/operations/translate_file/",
      "markdown": "https://sourcey-libretranslate.pages.dev/api/operations/translate_file/index.md",
      "file": "api/operations/translate_file/index.md",
      "searchText": "operationId  summary Translate a File description  method post path /translate_file tags 0 translate parameters  requestBody description  required  content multipart/form-data schema name  type object format  title  description  default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  properties file name  type string format binary title  description File to translate default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  source name  type string format  title  description Source language code  or \"auto\" for auto detection default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example en examples  refName  target name  type string format  title  description Target language code default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example es examples  refName  api_key name  type string format  title  description API key default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx examples  refName  required 0 file 1 source 2 target example  examples  encoding  prefixEncoding  itemEncoding  responses 0 statusCode 200 summary  description Translated file content application/json schema name  type object format  title  description  default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName translate-file properties translatedFileUrl name  type string format  title  description Translated file url default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  example  examples  encoding  prefixEncoding  itemEncoding  headers  links  1 statusCode 400 summary  description Invalid request content application/json schema name  type object format  title  description  default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName error-response properties error name  type string format  title  description Error message default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  example  examples  encoding  prefixEncoding  itemEncoding  headers  links  2 statusCode 403 summary  description Banned content application/json schema name  type object format  title  description  default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName error-response properties error name  type string format  title  description Error message default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  example  examples  encoding  prefixEncoding  itemEncoding  headers  links  3 statusCode 429 summary  description Slow down content application/json schema name  type object format  title  description  default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName error-slow-down properties error name  type string format  title  description Reason for slow down default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  example  examples  encoding  prefixEncoding  itemEncoding  headers  links  4 statusCode 500 summary  description Translation error content application/json schema name  type object format  title  description  default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName error-response properties error name  type string format  title  description Error message default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  example  examples  encoding  prefixEncoding  itemEncoding  headers  links  security  deprecated  servers  externalDocs  callbacks  hidden  codeSamples ",
      "documentId": "POST /translate_file",
      "locale": "en",
      "contentLocale": "en",
      "contentVersion": "current",
      "versionScope": "site",
      "alternates": [
        {
          "locale": "en",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/api/operations/translate_file/",
          "markdown": "https://sourcey-libretranslate.pages.dev/api/operations/translate_file/index.md"
        },
        {
          "locale": "it",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/it/api/operations/translate_file/",
          "markdown": "https://sourcey-libretranslate.pages.dev/it/api/operations/translate_file/index.md"
        },
        {
          "locale": "fr",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/fr/api/operations/translate_file/",
          "markdown": "https://sourcey-libretranslate.pages.dev/fr/api/operations/translate_file/index.md"
        },
        {
          "locale": "es",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/es/api/operations/translate_file/",
          "markdown": "https://sourcey-libretranslate.pages.dev/es/api/operations/translate_file/index.md"
        }
      ]
    },
    {
      "id": "api/models/detections/index.md",
      "kind": "schema",
      "title": "detections",
      "description": "detections",
      "tab": "api",
      "url": "https://sourcey-libretranslate.pages.dev/api/models/detections/",
      "markdown": "https://sourcey-libretranslate.pages.dev/api/models/detections/index.md",
      "file": "api/models/detections/index.md",
      "searchText": "name detections type array format  title  description  default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName detections items name  type object format  title  description  default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  properties confidence name  type number format float title  description Confidence value default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example 100 examples  refName  minimum 0 maximum 100 language name  type string format  title  description Language code default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example en examples  refName ",
      "documentId": "schema:detections",
      "locale": "en",
      "contentLocale": "en",
      "contentVersion": "current",
      "versionScope": "site",
      "alternates": [
        {
          "locale": "en",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/api/models/detections/",
          "markdown": "https://sourcey-libretranslate.pages.dev/api/models/detections/index.md"
        },
        {
          "locale": "it",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/it/api/models/detections/",
          "markdown": "https://sourcey-libretranslate.pages.dev/it/api/models/detections/index.md"
        },
        {
          "locale": "fr",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/fr/api/models/detections/",
          "markdown": "https://sourcey-libretranslate.pages.dev/fr/api/models/detections/index.md"
        },
        {
          "locale": "es",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/es/api/models/detections/",
          "markdown": "https://sourcey-libretranslate.pages.dev/es/api/models/detections/index.md"
        }
      ]
    },
    {
      "id": "api/models/error-response/index.md",
      "kind": "schema",
      "title": "error-response",
      "description": "Field: error.",
      "tab": "api",
      "url": "https://sourcey-libretranslate.pages.dev/api/models/error-response/",
      "markdown": "https://sourcey-libretranslate.pages.dev/api/models/error-response/index.md",
      "file": "api/models/error-response/index.md",
      "searchText": "name error-response type object format  title  description  default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName error-response properties error name  type string format  title  description Error message default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName ",
      "documentId": "schema:error-response",
      "locale": "en",
      "contentLocale": "en",
      "contentVersion": "current",
      "versionScope": "site",
      "alternates": [
        {
          "locale": "en",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/api/models/error-response/",
          "markdown": "https://sourcey-libretranslate.pages.dev/api/models/error-response/index.md"
        },
        {
          "locale": "it",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/it/api/models/error-response/",
          "markdown": "https://sourcey-libretranslate.pages.dev/it/api/models/error-response/index.md"
        },
        {
          "locale": "fr",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/fr/api/models/error-response/",
          "markdown": "https://sourcey-libretranslate.pages.dev/fr/api/models/error-response/index.md"
        },
        {
          "locale": "es",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/es/api/models/error-response/",
          "markdown": "https://sourcey-libretranslate.pages.dev/es/api/models/error-response/index.md"
        }
      ]
    },
    {
      "id": "api/models/error-slow-down/index.md",
      "kind": "schema",
      "title": "error-slow-down",
      "description": "Field: error.",
      "tab": "api",
      "url": "https://sourcey-libretranslate.pages.dev/api/models/error-slow-down/",
      "markdown": "https://sourcey-libretranslate.pages.dev/api/models/error-slow-down/index.md",
      "file": "api/models/error-slow-down/index.md",
      "searchText": "name error-slow-down type object format  title  description  default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName error-slow-down properties error name  type string format  title  description Reason for slow down default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName ",
      "documentId": "schema:error-slow-down",
      "locale": "en",
      "contentLocale": "en",
      "contentVersion": "current",
      "versionScope": "site",
      "alternates": [
        {
          "locale": "en",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/api/models/error-slow-down/",
          "markdown": "https://sourcey-libretranslate.pages.dev/api/models/error-slow-down/index.md"
        },
        {
          "locale": "it",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/it/api/models/error-slow-down/",
          "markdown": "https://sourcey-libretranslate.pages.dev/it/api/models/error-slow-down/index.md"
        },
        {
          "locale": "fr",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/fr/api/models/error-slow-down/",
          "markdown": "https://sourcey-libretranslate.pages.dev/fr/api/models/error-slow-down/index.md"
        },
        {
          "locale": "es",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/es/api/models/error-slow-down/",
          "markdown": "https://sourcey-libretranslate.pages.dev/es/api/models/error-slow-down/index.md"
        }
      ]
    },
    {
      "id": "api/models/frontend-settings/index.md",
      "kind": "schema",
      "title": "frontend-settings",
      "description": "Fields: apiKeys, charLimit, frontendTimeout, keyRequired, language, suggestions and 1 more.",
      "tab": "api",
      "url": "https://sourcey-libretranslate.pages.dev/api/models/frontend-settings/",
      "markdown": "https://sourcey-libretranslate.pages.dev/api/models/frontend-settings/index.md",
      "file": "api/models/frontend-settings/index.md",
      "searchText": "name frontend-settings type object format  title  description  default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName frontend-settings properties apiKeys name  type boolean format  title  description Whether the API key database is enabled. default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  charLimit name  type integer format  title  description Character input limit for this language (-1 indicates no limit) default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  frontendTimeout name  type integer format  title  description Frontend translation timeout default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  keyRequired name  type boolean format  title  description Whether an API key is required. default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  language name  type object format  title  description  default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  properties source name  type object format  title  description  default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  properties code name  type string format  title  description Language code default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  name name  type string format  title  description Human-readable language name (in English) default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  target name  type object format  title  description  default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  properties code name  type string format  title  description Language code default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  name name  type string format  title  description Human-readable language name (in English) default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  suggestions name  type boolean format  title  description Whether submitting suggestions is enabled. default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  supportedFilesFormat name  type array format  title  description Supported files format default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  items name  type string format  title  description  default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName ",
      "documentId": "schema:frontend-settings",
      "locale": "en",
      "contentLocale": "en",
      "contentVersion": "current",
      "versionScope": "site",
      "alternates": [
        {
          "locale": "en",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/api/models/frontend-settings/",
          "markdown": "https://sourcey-libretranslate.pages.dev/api/models/frontend-settings/index.md"
        },
        {
          "locale": "it",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/it/api/models/frontend-settings/",
          "markdown": "https://sourcey-libretranslate.pages.dev/it/api/models/frontend-settings/index.md"
        },
        {
          "locale": "fr",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/fr/api/models/frontend-settings/",
          "markdown": "https://sourcey-libretranslate.pages.dev/fr/api/models/frontend-settings/index.md"
        },
        {
          "locale": "es",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/es/api/models/frontend-settings/",
          "markdown": "https://sourcey-libretranslate.pages.dev/es/api/models/frontend-settings/index.md"
        }
      ]
    },
    {
      "id": "api/models/health-response/index.md",
      "kind": "schema",
      "title": "health-response",
      "description": "Field: status.",
      "tab": "api",
      "url": "https://sourcey-libretranslate.pages.dev/api/models/health-response/",
      "markdown": "https://sourcey-libretranslate.pages.dev/api/models/health-response/index.md",
      "file": "api/models/health-response/index.md",
      "searchText": "name health-response type object format  title  description  default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName health-response properties status name  type string format  title  description Health status default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example ok examples  refName ",
      "documentId": "schema:health-response",
      "locale": "en",
      "contentLocale": "en",
      "contentVersion": "current",
      "versionScope": "site",
      "alternates": [
        {
          "locale": "en",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/api/models/health-response/",
          "markdown": "https://sourcey-libretranslate.pages.dev/api/models/health-response/index.md"
        },
        {
          "locale": "it",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/it/api/models/health-response/",
          "markdown": "https://sourcey-libretranslate.pages.dev/it/api/models/health-response/index.md"
        },
        {
          "locale": "fr",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/fr/api/models/health-response/",
          "markdown": "https://sourcey-libretranslate.pages.dev/fr/api/models/health-response/index.md"
        },
        {
          "locale": "es",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/es/api/models/health-response/",
          "markdown": "https://sourcey-libretranslate.pages.dev/es/api/models/health-response/index.md"
        }
      ]
    },
    {
      "id": "api/models/languages/index.md",
      "kind": "schema",
      "title": "languages",
      "description": "languages",
      "tab": "api",
      "url": "https://sourcey-libretranslate.pages.dev/api/models/languages/",
      "markdown": "https://sourcey-libretranslate.pages.dev/api/models/languages/index.md",
      "file": "api/models/languages/index.md",
      "searchText": "name languages type array format  title  description  default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName languages items name  type object format  title  description Supported language default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  properties code name  type string format  title  description Language code default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  name name  type string format  title  description Human-readable language name (in English) default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  targets name  type array format  title  description Supported target language codes default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  items name  type string format  title  description  default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName ",
      "documentId": "schema:languages",
      "locale": "en",
      "contentLocale": "en",
      "contentVersion": "current",
      "versionScope": "site",
      "alternates": [
        {
          "locale": "en",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/api/models/languages/",
          "markdown": "https://sourcey-libretranslate.pages.dev/api/models/languages/index.md"
        },
        {
          "locale": "it",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/it/api/models/languages/",
          "markdown": "https://sourcey-libretranslate.pages.dev/it/api/models/languages/index.md"
        },
        {
          "locale": "fr",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/fr/api/models/languages/",
          "markdown": "https://sourcey-libretranslate.pages.dev/fr/api/models/languages/index.md"
        },
        {
          "locale": "es",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/es/api/models/languages/",
          "markdown": "https://sourcey-libretranslate.pages.dev/es/api/models/languages/index.md"
        }
      ]
    },
    {
      "id": "api/models/suggest-response/index.md",
      "kind": "schema",
      "title": "suggest-response",
      "description": "Field: success.",
      "tab": "api",
      "url": "https://sourcey-libretranslate.pages.dev/api/models/suggest-response/",
      "markdown": "https://sourcey-libretranslate.pages.dev/api/models/suggest-response/index.md",
      "file": "api/models/suggest-response/index.md",
      "searchText": "name suggest-response type object format  title  description  default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName suggest-response properties success name  type boolean format  title  description Whether submission was successful default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName ",
      "documentId": "schema:suggest-response",
      "locale": "en",
      "contentLocale": "en",
      "contentVersion": "current",
      "versionScope": "site",
      "alternates": [
        {
          "locale": "en",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/api/models/suggest-response/",
          "markdown": "https://sourcey-libretranslate.pages.dev/api/models/suggest-response/index.md"
        },
        {
          "locale": "it",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/it/api/models/suggest-response/",
          "markdown": "https://sourcey-libretranslate.pages.dev/it/api/models/suggest-response/index.md"
        },
        {
          "locale": "fr",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/fr/api/models/suggest-response/",
          "markdown": "https://sourcey-libretranslate.pages.dev/fr/api/models/suggest-response/index.md"
        },
        {
          "locale": "es",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/es/api/models/suggest-response/",
          "markdown": "https://sourcey-libretranslate.pages.dev/es/api/models/suggest-response/index.md"
        }
      ]
    },
    {
      "id": "api/models/translate/index.md",
      "kind": "schema",
      "title": "translate",
      "description": "Fields: alternatives, detectedLanguage and translatedText.",
      "tab": "api",
      "url": "https://sourcey-libretranslate.pages.dev/api/models/translate/",
      "markdown": "https://sourcey-libretranslate.pages.dev/api/models/translate/index.md",
      "file": "api/models/translate/index.md",
      "searchText": "name translate type object format  title  description  default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName translate properties alternatives name  type  format  title  description Alternative translations default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  oneOf 0 name  type array format  title  description  default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  items name  type string format  title  description  default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  1 name  type array format  title  description  default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  items name  type array format  title  description  default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  items name  type string format  title  description  default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  detectedLanguage name  type  format  title  description  default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  oneOf 0 name  type object format  title  description  default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  properties confidence name  type number format float title  description Confidence value default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example 100 examples  refName  minimum 0 maximum 100 language name  type string format  title  description Language code default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  1 name  type array format  title  description  default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  items name  type object format  title  description  default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  properties confidence name  type number format float title  description Confidence value default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example 100 examples  refName  minimum 0 maximum 100 language name  type string format  title  description Language code default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  translatedText name  type  format  title  description Translated text(s) default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  oneOf 0 name  type string format  title  description  default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  1 name  type array format  title  description  default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  items name  type  format  title  description  default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName  required 0 translatedText",
      "documentId": "schema:translate",
      "locale": "en",
      "contentLocale": "en",
      "contentVersion": "current",
      "versionScope": "site",
      "alternates": [
        {
          "locale": "en",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/api/models/translate/",
          "markdown": "https://sourcey-libretranslate.pages.dev/api/models/translate/index.md"
        },
        {
          "locale": "it",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/it/api/models/translate/",
          "markdown": "https://sourcey-libretranslate.pages.dev/it/api/models/translate/index.md"
        },
        {
          "locale": "fr",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/fr/api/models/translate/",
          "markdown": "https://sourcey-libretranslate.pages.dev/fr/api/models/translate/index.md"
        },
        {
          "locale": "es",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/es/api/models/translate/",
          "markdown": "https://sourcey-libretranslate.pages.dev/es/api/models/translate/index.md"
        }
      ]
    },
    {
      "id": "api/models/translate-file/index.md",
      "kind": "schema",
      "title": "translate-file",
      "description": "Field: translatedFileUrl.",
      "tab": "api",
      "url": "https://sourcey-libretranslate.pages.dev/api/models/translate-file/",
      "markdown": "https://sourcey-libretranslate.pages.dev/api/models/translate-file/index.md",
      "file": "api/models/translate-file/index.md",
      "searchText": "name translate-file type object format  title  description  default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName translate-file properties translatedFileUrl name  type string format  title  description Translated file url default  enum  enumNames  enumDescriptions  const  nullable  readOnly  writeOnly  deprecated  example  examples  refName ",
      "documentId": "schema:translate-file",
      "locale": "en",
      "contentLocale": "en",
      "contentVersion": "current",
      "versionScope": "site",
      "alternates": [
        {
          "locale": "en",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/api/models/translate-file/",
          "markdown": "https://sourcey-libretranslate.pages.dev/api/models/translate-file/index.md"
        },
        {
          "locale": "it",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/it/api/models/translate-file/",
          "markdown": "https://sourcey-libretranslate.pages.dev/it/api/models/translate-file/index.md"
        },
        {
          "locale": "fr",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/fr/api/models/translate-file/",
          "markdown": "https://sourcey-libretranslate.pages.dev/fr/api/models/translate-file/index.md"
        },
        {
          "locale": "es",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/es/api/models/translate-file/",
          "markdown": "https://sourcey-libretranslate.pages.dev/es/api/models/translate-file/index.md"
        }
      ]
    },
    {
      "id": "mcp/index.md",
      "kind": "page",
      "title": "libretranslate-mcp",
      "description": "Translate text, detect its language, and list supported languages from an MCP client. The server runs locally over stdio and forwards requests to the LibreTranslate instance you configure.",
      "tab": "mcp",
      "url": "https://sourcey-libretranslate.pages.dev/mcp/",
      "markdown": "https://sourcey-libretranslate.pages.dev/mcp/index.md",
      "file": "mcp/index.md",
      "searchText": "info title libretranslate-mcp version 1.0.1 description Translate text, detect its language, and list supported languages from an MCP client. The server runs locally over stdio and forwards requests to the LibreTranslate instance you configure.\n\n[Set up your client](/guides/mcp_server/) for the hosted service or your own instance. The [HTTP API](/api/) also supports file translation and other operations beyond these three tools. servers  tags 0 name Tools summary  description  externalDocs  securitySchemes ",
      "documentId": "introduction",
      "locale": "en",
      "contentLocale": "en",
      "contentVersion": "current",
      "versionScope": "site",
      "alternates": [
        {
          "locale": "en",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/mcp/",
          "markdown": "https://sourcey-libretranslate.pages.dev/mcp/index.md"
        },
        {
          "locale": "it",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/it/mcp/",
          "markdown": "https://sourcey-libretranslate.pages.dev/it/mcp/index.md"
        },
        {
          "locale": "fr",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/fr/mcp/",
          "markdown": "https://sourcey-libretranslate.pages.dev/fr/mcp/index.md"
        },
        {
          "locale": "es",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/es/mcp/",
          "markdown": "https://sourcey-libretranslate.pages.dev/es/mcp/index.md"
        }
      ]
    },
    {
      "id": "mcp/operations/operation-detect-tool.md",
      "kind": "operation",
      "title": "detect",
      "description": "Detect the language of a given text",
      "tab": "mcp",
      "url": "https://sourcey-libretranslate.pages.dev/mcp/#operation-detect-tool",
      "markdown": "https://sourcey-libretranslate.pages.dev/mcp/operations/operation-detect-tool.md",
      "file": "mcp/operations/operation-detect-tool.md",
      "searchText": "operationId detect summary detect description Detect the language of a given text\n\nSends `text` as `q` to `POST /detect` on your configured instance.\n\nReturns the first detection from the API: `language` is its language code and `confidence` is a score from 0 to 100. The tool returns one detection, even when the HTTP API supplies several. The JSON is encoded in `content[0].text`.\n\n**Errors.** Failed requests set `isError: true` and return an `error` message in the JSON text block.\n\n<details>\n<summary>Response examples</summary>\n\nDecoded success result:\n\n```json\n{\n  \"language\": \"en\",\n  \"confidence\": 100\n}\n```\n\nDecoded failure result (`isError: true`):\n\n```json\n{\n  \"error\": \"No detection result returned\"\n}\n```\n\n</details> method tool path detect tags 0 Tools parameters 0 name text in argument description Text to identify. required  deprecated  schema type string description Text to identify. example  requestBody  responses  security  deprecated  codeSamples 0 lang json label JSON-RPC source {\n  \"jsonrpc\": \"2.0\",\n  \"id\": 1,\n  \"method\": \"tools/call\",\n  \"params\": {\n    \"name\": \"detect\",\n    \"arguments\": {\n        \"text\": \"Hello\"\n      }\n  }\n} 1 lang typescript label TypeScript source const result = await client.callTool({\n  \"name\": \"detect\",\n  \"arguments\": {\n    \"text\": \"Hello\"\n  }\n}); 2 lang python label Python source result = await session.call_tool(\"detect\", arguments={\n  \"text\": \"Hello\"\n}) mcpExtras type tool annotations  outputSchema  connection transport type stdio command npx args 0 --yes 1 @libretranslate/mcp@1.0.2 env LIBRETRANSLATE_API_URL https://libretranslate.com LIBRETRANSLATE_API_KEY your-api-key url  headers  serverName libretranslate-mcp mcpVersion 2025-11-25 capabilities tools listChanged ",
      "documentId": "TOOL detect",
      "locale": "en",
      "contentLocale": "en",
      "contentVersion": "current",
      "versionScope": "site",
      "alternates": [
        {
          "locale": "en",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/mcp/#operation-detect-tool",
          "markdown": "https://sourcey-libretranslate.pages.dev/mcp/operations/operation-detect-tool.md"
        },
        {
          "locale": "it",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/it/mcp/#operation-detect-tool",
          "markdown": "https://sourcey-libretranslate.pages.dev/it/mcp/operations/operation-detect-tool.md"
        },
        {
          "locale": "fr",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/fr/mcp/#operation-detect-tool",
          "markdown": "https://sourcey-libretranslate.pages.dev/fr/mcp/operations/operation-detect-tool.md"
        },
        {
          "locale": "es",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/es/mcp/#operation-detect-tool",
          "markdown": "https://sourcey-libretranslate.pages.dev/es/mcp/operations/operation-detect-tool.md"
        }
      ]
    },
    {
      "id": "mcp/operations/operation-translate-tool.md",
      "kind": "operation",
      "title": "translate",
      "description": "Translate text from one language to another",
      "tab": "mcp",
      "url": "https://sourcey-libretranslate.pages.dev/mcp/#operation-translate-tool",
      "markdown": "https://sourcey-libretranslate.pages.dev/mcp/operations/operation-translate-tool.md",
      "file": "mcp/operations/operation-translate-tool.md",
      "searchText": "operationId translate summary translate description Translate text from one language to another\n\nSends `text` as `q`, together with `source` and `target`, to `POST /translate` on your configured instance.\n\nReturns `translatedText` and requests up to three `alternatives`. With `source: \"auto\"`, the API can also return `detectedLanguage`. Available alternatives depend on your instance’s models. The JSON is encoded in `content[0].text`.\n\n**Errors.** Failed requests set `isError: true` and return an `error` message in the JSON text block. The managed service requires `LIBRETRANSLATE_API_KEY`; self-hosted instances use their own access settings.\n\n<details>\n<summary>Response examples</summary>\n\nDecoded success result:\n\n```json\n{\n  \"translatedText\": \"Hola\",\n  \"alternatives\": [\n    \"Hola.\"\n  ]\n}\n```\n\nDecoded failure result (`isError: true`):\n\n```json\n{\n  \"error\": \"Unsupported target language\"\n}\n```\n\n</details> method tool path translate tags 0 Tools parameters 0 name text in argument description Text to translate. required  deprecated  schema type string description Text to translate. example  1 name source in argument description Source language code, or auto for automatic detection. required  deprecated  schema type string description Source language code, or auto for automatic detection. example  2 name target in argument description Target language code, such as es for Spanish. required  deprecated  schema type string description Target language code, such as es for Spanish. example  requestBody  responses  security  deprecated  codeSamples 0 lang json label JSON-RPC source {\n  \"jsonrpc\": \"2.0\",\n  \"id\": 1,\n  \"method\": \"tools/call\",\n  \"params\": {\n    \"name\": \"translate\",\n    \"arguments\": {\n        \"text\": \"Hello\",\n        \"source\": \"en\",\n        \"target\": \"es\"\n      }\n  }\n} 1 lang typescript label TypeScript source const result = await client.callTool({\n  \"name\": \"translate\",\n  \"arguments\": {\n    \"text\": \"Hello\",\n    \"source\": \"en\",\n    \"target\": \"es\"\n  }\n}); 2 lang python label Python source result = await session.call_tool(\"translate\", arguments={\n  \"text\": \"Hello\",\n  \"source\": \"en\",\n  \"target\": \"es\"\n}) mcpExtras type tool annotations  outputSchema  connection transport type stdio command npx args 0 --yes 1 @libretranslate/mcp@1.0.2 env LIBRETRANSLATE_API_URL https://libretranslate.com LIBRETRANSLATE_API_KEY your-api-key url  headers  serverName libretranslate-mcp mcpVersion 2025-11-25 capabilities tools listChanged ",
      "documentId": "TOOL translate",
      "locale": "en",
      "contentLocale": "en",
      "contentVersion": "current",
      "versionScope": "site",
      "alternates": [
        {
          "locale": "en",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/mcp/#operation-translate-tool",
          "markdown": "https://sourcey-libretranslate.pages.dev/mcp/operations/operation-translate-tool.md"
        },
        {
          "locale": "it",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/it/mcp/#operation-translate-tool",
          "markdown": "https://sourcey-libretranslate.pages.dev/it/mcp/operations/operation-translate-tool.md"
        },
        {
          "locale": "fr",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/fr/mcp/#operation-translate-tool",
          "markdown": "https://sourcey-libretranslate.pages.dev/fr/mcp/operations/operation-translate-tool.md"
        },
        {
          "locale": "es",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/es/mcp/#operation-translate-tool",
          "markdown": "https://sourcey-libretranslate.pages.dev/es/mcp/operations/operation-translate-tool.md"
        }
      ]
    },
    {
      "id": "mcp/operations/operation-languages-tool.md",
      "kind": "operation",
      "title": "languages",
      "description": "List all supported languages for translation",
      "tab": "mcp",
      "url": "https://sourcey-libretranslate.pages.dev/mcp/#operation-languages-tool",
      "markdown": "https://sourcey-libretranslate.pages.dev/mcp/operations/operation-languages-tool.md",
      "file": "mcp/operations/operation-languages-tool.md",
      "searchText": "operationId languages summary languages description List all supported languages for translation\n\nCalls `GET /languages` on your configured instance. No arguments are needed.\n\nReturns an array of languages. Each entry has a `code` and an English `name`; the API can also supply `targets`, the language codes that entry can translate into. Use this list when choosing `source` and `target` for a translation. The JSON is encoded in `content[0].text`.\n\n**Errors.** Failed requests set `isError: true` and return an `error` message in the JSON text block.\n\n<details>\n<summary>Response examples</summary>\n\nDecoded success result:\n\n```json\n[\n  {\n    \"code\": \"en\",\n    \"name\": \"English\",\n    \"targets\": [\n      \"es\"\n    ]\n  },\n  {\n    \"code\": \"es\",\n    \"name\": \"Spanish\",\n    \"targets\": [\n      \"en\"\n    ]\n  }\n]\n```\n\nDecoded failure result (`isError: true`):\n\n```json\n{\n  \"error\": \"Languages request failed: 503 Service Unavailable\"\n}\n```\n\n</details> method tool path languages tags 0 Tools parameters  requestBody  responses  security  deprecated  codeSamples 0 lang json label JSON-RPC source {\n  \"jsonrpc\": \"2.0\",\n  \"id\": 1,\n  \"method\": \"tools/call\",\n  \"params\": {\n    \"name\": \"languages\",\n    \"arguments\": {}\n  }\n} 1 lang typescript label TypeScript source const result = await client.callTool({\n  \"name\": \"languages\",\n  \"arguments\": {}\n}); 2 lang python label Python source result = await session.call_tool(\"languages\", arguments={}) mcpExtras type tool annotations  outputSchema  connection transport type stdio command npx args 0 --yes 1 @libretranslate/mcp@1.0.2 env LIBRETRANSLATE_API_URL https://libretranslate.com LIBRETRANSLATE_API_KEY your-api-key url  headers  serverName libretranslate-mcp mcpVersion 2025-11-25 capabilities tools listChanged ",
      "documentId": "TOOL languages",
      "locale": "en",
      "contentLocale": "en",
      "contentVersion": "current",
      "versionScope": "site",
      "alternates": [
        {
          "locale": "en",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/mcp/#operation-languages-tool",
          "markdown": "https://sourcey-libretranslate.pages.dev/mcp/operations/operation-languages-tool.md"
        },
        {
          "locale": "it",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/it/mcp/#operation-languages-tool",
          "markdown": "https://sourcey-libretranslate.pages.dev/it/mcp/operations/operation-languages-tool.md"
        },
        {
          "locale": "fr",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/fr/mcp/#operation-languages-tool",
          "markdown": "https://sourcey-libretranslate.pages.dev/fr/mcp/operations/operation-languages-tool.md"
        },
        {
          "locale": "es",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/es/mcp/#operation-languages-tool",
          "markdown": "https://sourcey-libretranslate.pages.dev/es/mcp/operations/operation-languages-tool.md"
        }
      ]
    },
    {
      "id": "about-this-preview/index.md",
      "kind": "page",
      "title": "About this preview",
      "description": "An unofficial rebuild of the LibreTranslate documentation with Sourcey, and how it measures against the current site.",
      "tab": "@pages",
      "url": "https://sourcey-libretranslate.pages.dev/about-this-preview/",
      "markdown": "https://sourcey-libretranslate.pages.dev/about-this-preview/index.md",
      "file": "about-this-preview/index.md",
      "searchText": "\n# About this preview {#about-this-preview}\n\n\nThis is an unofficial preview of the LibreTranslate documentation, rebuilt with [Sourcey](https://sourcey.com), an open-source docs engine licensed under AGPL-3.0. It is not run by the LibreTranslate project. Search engines are asked not to index it, and it comes down on request, or after 30 days.\n\n\n## What it is built from {#what-it-is-built-from}\n\n\n- The documentation repository, [LibreTranslate/Documentation](https://github.com/LibreTranslate/Documentation) at `e4be096`, converted with `sourcey migrate`: all 61 pages in English, Spanish, French and Italian at their current addresses, with every heading link still landing.\n- The [API reference](/api/) from LibreTranslate's OpenAPI specification.\n- The [MCP reference](/mcp/) from the official server, `@libretranslate/mcp` 1.0.2: its three tools as the server itself reports them when it starts. No tool was run to capture them.\n\n\n## Measured beside the current site {#measured-beside-the-current-site}\n\n\nBoth sites were built from their own sources and served side by side on one machine, compressed as hosts serve them. Each page was opened in a fresh browser at 1440 by 1000 pixels and measured once the network settled, on 21 October 2026 with Sourcey 3.8.3.\n\n| | Current site | This preview |\n| --- | --- | --- |\n| Page | `/guides/installation/` | `/hosting/installation/` |\n| Requests | 11 | 5 |\n| Download | 53.3 KB | 36.9 KB |\n| JavaScript heap | 1.1 MB | 0.7 MB |\n| DOM nodes | 2,402 | 343 |\n| First search, typing \"install\" | 113.8 KB in 10 requests | 14.5 KB in 3 requests |\n\nThe preview builds in 3.0 s from cold, peaking at 631 MB of memory, and in 1.8 s with its cache. It writes 8.2 MB, of which 6.8 MB is what readers load (the current site writes 4.4 MB) and 1.3 MB is the machine-readable output below.\n\n\n## For agents {#for-agents}\n\n\nEvery page and operation is also published as Markdown, with an [llms.txt](/llms.txt), a [documents index](/documents.json), the [OpenAPI bundle](/api/openapi.json) and the [MCP tool descriptor](/reference/libretranslate.mcp.json).\n\n\n## Links on the current site that miss their section {#links-on-the-current-site-that-miss-their-section}\n\n\nThe Spanish and Italian guides link to the English pages' heading anchors, which their translated headings do not have.\n\n| Page | Link | Should be |\n| --- | --- | --- |\n| [es/guides/api_usage](https://docs.libretranslate.com/es/guides/api_usage/) | `#language-bindings` | `#enlaces-de-lenguaje` |\n| [it/guides/api_usage](https://docs.libretranslate.com/it/guides/api_usage/) | `#language-bindings` | `#interfacce-di-binding` |\n| [es/guides/installation](https://docs.libretranslate.com/es/guides/installation/) | `#arguments` | `#argumentos` |\n| [it/guides/installation](https://docs.libretranslate.com/it/guides/installation/) | `#arguments` | `#argomenti` |\n",
      "documentId": "about-this-preview",
      "locale": "en",
      "contentLocale": "en",
      "contentVersion": "current",
      "versionScope": "site",
      "alternates": [
        {
          "locale": "en",
          "contentVersion": "current",
          "url": "https://sourcey-libretranslate.pages.dev/about-this-preview/",
          "markdown": "https://sourcey-libretranslate.pages.dev/about-this-preview/index.md"
        }
      ]
    }
  ]
}
