---
title: "Get texts"
description: "Read the customer-facing texts in one locale, as the settings Translate view shows them: the download email, download page, download limit messages, order status and customer account blocks, and the EU withdrawal consent"
url: https://docs.filemonk.io/v2/api-reference/settings/get-texts/
api: "API v2 reference"
method: GET
path: "/settings/texts"
---

# Get texts

`GET https://app.filemonk.io/api/v2/external/settings/texts`

Read the customer-facing texts in one locale, as the settings Translate view shows them: the download email, download page, download limit messages, order status and customer account blocks, and the EU withdrawal consent. locale defaults to the shop's default language. Values are what is stored for that locale only; untranslated lists the texts not translated yet (buyers see the default language there).

**Note:** Paths match [`GET /settings`](https://docs.filemonk.io/v2/api-reference/settings/get-settings/). Write them with [`PATCH /settings/texts`](https://docs.filemonk.io/v2/api-reference/settings/update-texts/); fill a whole locale with Filemonk's own translation using [`POST /settings/texts/setup`](https://docs.filemonk.io/v2/api-reference/settings/set-up-texts-for-a-language/).

## Query parameters

- `locale` (string)

## Returns

- `locale` (string, nullable, required): e.g. `fr`
- `default_locale` (string, nullable, required): e.g. `en`
- `multi_language_enabled` (boolean, nullable, required): e.g. `true`
- `shop_locales` (array of strings, required)
- `setup_locales` (array of strings, required)
- `texts` (object, required)
  - `email` (object, required)
    - `subject` (string, nullable, required): e.g. `Vos téléchargements sont prêts`
    - `button` (object, required)
      - `text` (string, nullable, required): e.g. `Télécharger`
  - `download_page` (object, required)
    - `texts` (object, required)
      - `thanks` (string, nullable, required): e.g. `Merci pour votre commande`
      - `button` (any, required)
- `untranslated` (array of strings, required)

Rate limit: this call costs 1 point ([rate limits](https://docs.filemonk.io/v2/errors-and-rate-limits/)).

## Examples

### Get texts

```sh
curl "https://app.filemonk.io/api/v2/external/settings/texts" \
  -H "X-Auth-Token: $FILEMONK_API_KEY"
```

### Get texts filtered by locale

```sh
curl "https://app.filemonk.io/api/v2/external/settings/texts?locale=fr" \
  -H "X-Auth-Token: $FILEMONK_API_KEY"
```

## 200

Success: the requested resource.

```json
{
  "locale": "fr",
  "default_locale": "en",
  "multi_language_enabled": true,
  "shop_locales": [
    "en",
    "fr"
  ],
  "setup_locales": [
    "pt-BR",
    "zh",
    "da",
    "nl",
    "en",
    "pt-PT",
    "fr",
    "de",
    "it",
    "ja",
    "ko",
    "nb",
    "es",
    "sv",
    "tr",
    "zh-TW",
    "pl"
  ],
  "texts": {
    "email": {
      "subject": "Vos téléchargements sont prêts",
      "button": {
        "text": "Télécharger"
      }
    },
    "download_page": {
      "texts": {
        "thanks": "Merci pour votre commande",
        "button": null
      }
    }
  },
  "untranslated": [
    "download_page.texts.button"
  ]
}
```

## 401

Missing or invalid API key.

```json
{
  "errors": [
    "Invalid API key"
  ]
}
```

## 422

The request failed validation, or sent a key the action does not take (`code: &quot;unknown_parameters&quot;` with `unknown` and `accepted`). Nothing was saved.

```json
{
  "errors": [
    "access.download_limit_count must be an integer of at least 0"
  ],
  "field_errors": {
    "access.download_limit_count": [
      "must be an integer of at least 0"
    ]
  }
}
```

## 429

Rate limited. Cost-weighted per API key, shared with API v1: a read costs 1 point, a write 2, 40 points per fixed 60-second window. Every response carries `X-RateLimit-Limit`, `X-RateLimit-Remaining` and `X-RateLimit-Reset` (Unix time the window ends); a 429 adds `Retry-After` (seconds), `retry_after`, `retryable: true` and a `next_step` in the body. A 429 did nothing: wait `retry_after` seconds, then send the same request again. The budget is per key, so every tool or script using the key shares it; prefer one list call with `per_page` over many single reads.

```json
{
  "errors": [
    "You have exceeded the rate limit of 40 points per 60 seconds. Read requests cost 1 point(s) and write requests cost 2 point(s). Please retry after 12 second(s)."
  ],
  "code": "rate_limited",
  "retry_after": 12,
  "error": "Rate limit exceeded",
  "message": "You have exceeded the rate limit of 40 points per 60 seconds. Read requests cost 1 point(s) and write requests cost 2 point(s). Please retry after 12 second(s)."
}
```

