---
title: "GET /templates/config-options — Параметры конфигурации шаблона"
url: https://lumean.app/developers/docs/api/get-templates-config-options
locale: ru
description: "Параметры конфигурации шаблона"
generated: 2026-11-08
operationId: template.getConfigOptions
method: GET
path: /templates/config-options
scopes: [templates.read]
spec_version: 1.0.0
---

# GET /templates/config-options

**Параметры конфигурации шаблона**

Справочник допустимых значений `config` для конкретного сервиса: что можно положить
в шаблон и в `config_override` заказа.

> Справочник описывает **настройки сервиса** и покрывает не весь `config`. Позаказный
> режим генерации (`generation_mode`, абзацная озвучка) задаётся отдельно и здесь не
> перечислен — он описан у поля `config_override` в `POST /orders`.

Ответ — карта дескрипторов полей. У каждого поля приходят `type`, `default`, `nullable`
и, в зависимости от типа, `options` (список допустимых значений), `min`/`max`/`step`
(диапазон). Отдельная секция `conditional_overrides` описывает сужения, которые
включаются при определённом выборе: например, для не-v3 моделей ElevenLabs список
языков сокращается с 73 до 29, а на v3-семействе `stability` принимает только
`0.0`, `0.5` и `1.0`.

Сверяйтесь с этим ответом вместо того, чтобы угадывать: значение вне допустимого
набора отклоняется валидацией (`422`) при создании шаблона или заказа.

### `heygen`: `voice_engine` — набор СЕРВИСА, а не голоса

Перечисленные здесь `options` — то, что поддерживает **сервис**. Какие из них
поддерживает конкретный голос — свойство голоса: смотрите `voice_engines` у элемента
каталога `GET /voices/heygen` и берите значение, которое есть в обоих списках. Из 2330
голосов каталога `elevenLabs` поддерживают 1947, а 383 не поддерживают ни одного из
перечисленных здесь движков.

Несовпадающая пара «голос + движок» отклоняется с `422` в поле
`config.tts_settings.voice_id`.

### Группировка по секциям — не всегда путь в конфиге

Ответ всегда сгруппирован: имя секции, внутри — её поля. У `elevenlabs`, `heygen` и
`lumimg` это же имя является и путём (`tts_settings.model_id`,
`image_settings.aspect_ratio`), поэтому структуру можно повторять как есть. А у `sfx`,
`music` и `voice_search` секция чисто оформительская: настоящие ключи лежат в корне.
Для них берите из ответа **имена полей и их диапазоны, но не обёртку**:

| Сервис | Показано в справочнике | Принимается в `config` и `task_data` |
| --- | --- | --- |
| `elevenlabs` | `tts_settings` → `model_id` | `{"tts_settings": {"model_id": …}}` |
| `sfx` | `sfx_settings` → `text` | `{"text": …}` |
| `music` | `music_settings` → `prompt` | `{"prompt": …}` |
| `voice_search` | `voice_search_settings` → `top` | `{"top": …}` |

Присланная обёртка в шаблоне даёт `422` («поле обязательно» — обязательный ключ
оказался спрятан), а в `config_override` заказа отбрасывается молча.

**Требуемое право ключа:** `templates.read`.

- Право ключа: `templates.read`

## Запрос

```bash
curl -X GET 'https://api.lumean.app/api/public/templates/config-options' \
  -H 'Accept: application/json' \
  -H 'X-API-KEY: YOUR_API_KEY'
```

## Параметры

| Поле | Где | Тип | Обяз. | Описание |
| --- | --- | --- | --- | --- |
| `service` | query | `string` | обяз. | **Обязателен.** Код сервиса, для которого нужны опции конфига: короткая латинская строка — `elevenlabs`, `heygen`, `lumimg`, `sfx`, `music`. Доступные вам коды перечисляет `GET /usage` в поле `service_code`. Ответ — карта дескрипторов полей (`type`, `options`, `min`, `max`, `step`, `default`, `nullable`, `conditional_overrides`): допустимые модели, голоса, диапазоны настроек. Сверяйтесь с ним вместо того, чтобы угадывать. Справочник описывает **настройки сервиса** и покрывает не весь `config`: позаказный режим генерации (`generation_mode`) в него не входит — он описан у поля `config_override` в `POST /orders`. |
| `X-Locale` | header | `string` | — | Язык локализованных текстов ответа (`message`, подписи, причины ошибок), код ISO-639-1. Необязателен; без него — язык аккаунта владельца ключа, затем `Accept-Language`, затем язык по умолчанию. Неизвестный или неподдерживаемый код пропускается так же, как отсутствующий. |
| `X-Timezone` | header | `string` | — | IANA-зона (`Europe/Moscow`), в которой ответ показывает моменты времени — ISO-8601 со смещением. Необязателен; без него даты приходят в UTC. Невалидная зона игнорируется. Применённую зону сервер возвращает в одноимённом заголовке ответа. |

## Тело запроса

Тела нет.

## Ответы

### 200 — Опции конфигурации

**Поля ответа**

| Поле | Тип | Обяз. | Описание |
| --- | --- | --- | --- |
| `success` | `boolean` | обяз. | Признак успеха. Решение принимайте по HTTP-коду: у любого ответа 2xx здесь `true`, а ошибка приходит телом другой формы, где этого поля может не быть вовсе. |
| `message` | `string` | обяз. | Пояснение для человека, на языке аккаунта. Показать пользователю можно; разбирать программно — нет: формулировки меняются без предупреждения и кодом ошибки не являются. |
| `data` | `object` | обяз. | Карта дескрипторов: ключ — имя поля `config`, значение — что в него можно положить. У дескриптора всегда есть `type`, `default` и `nullable`; дальше по типу — `options` (список допустимых значений) либо `min`/`max`/`step` (диапазон). Отдельный ключ `conditional_overrides` описывает сужения, включающиеся при определённом выборе: например, на v3-моделях ElevenLabs `stability` принимает только `0.0`, `0.5` и `1.0`, а список языков у не-v3 моделей короче. Пустой объект — у сервиса нет настраиваемого `config` (так у клонирования голоса). |
| `data.*` | `any` — произвольные ключи | — |  |

**Пример**

```json
{
  "success": true,
  "message": "Template config options retrieved",
  "data": {
    "tts_settings": {
      "model_id": {
        "type": "select",
        "options": [
          "eleven_v4",
          "eleven_v4_exp",
          "eleven_v3",
          "eleven_v3_beta",
          "eleven_multilingual_v2",
          "eleven_flash_v2_5",
          "eleven_turbo_v2_5",
          "eleven_turbo_v2",
          "eleven_flash_v2"
        ],
        "default": "eleven_multilingual_v2"
      },
      "public_owner_id": {
        "type": "string",
        "default": null,
        "nullable": true
      },
      "voice_id": {
        "type": "string"
      },
      "mode": {
        "type": "select",
        "options": [
          "mode_v1"
        ],
        "default": "mode_v1"
      },
      "language_code": {
        "type": "select",
        "options": [
          "en",
          "ja",
          "zh",
          "de",
          "hi",
          "fr",
          "ko",
          "pt",
          "it",
          "es",
          "id",
          "nl",
          "tr",
          "fil",
          "pl",
          "sv",
          "bg",
          "ro",
          "ar",
          "cs",
          "el",
          "fi",
          "hr",
          "ms",
          "sk",
          "da",
          "ta",
          "uk",
          "ru",
          "af",
          "hy",
          "as",
          "az",
          "be",
          "bn",
          "bs",
          "ca",
          "ceb",
          "ny",
          "et",
          "gl",
          "ka",
          "gu",
          "ha",
          "he",
          "hu",
          "is",
          "ga",
          "jv",
          "kn",
          "kk",
          "ky",
          "lv",
          "ln",
          "lt",
          "lb",
          "mk",
          "ml",
          "mr",
          "ne",
          "no",
          "or",
          "ps",
          "fa",
          "pa",
          "sr",
          "sl",
          "sw",
          "te",
          "th",
          "ur",
          "vi",
          "cy"
        ],
        "default": null,
        "nullable": true
      },
      "advanced_voice_settings": {
        "type": "boolean",
        "default": false,
        "nullable": true
      },
      "prev_next_text": {
        "type": "boolean",
        "default": false,
        "nullable": true
      },
      "request_ids": {
        "type": "boolean",
        "default": false,
        "nullable": true
      },
      "apply_text_normalization": {
        "type": "select",
        "options": [
          "auto",
          "on",
          "off"
        ],
        "default": "auto",
        "nullable": true
      },
      "voice_settings": {
        "stability": {
          "type": "range",
          "default": 0.5,
          "min": 0,
          "max": 1,
          "step": 0.1,
          "conditional_overrides": [
            {
              "when": {
                "operator": "and",
                "rules": [
                  {
                    "field": "tts_settings.model_id",
                    "op": "eq",
                    "value": "eleven_v3"
                  }
                ]
              },
              "set": {
                "min": 0,
                "max": 1,
                "step": 0.5,
                "default": 0.5
              }
            },
            {
              "when": {
                "operator": "and",
                "rules": [
                  {
                    "field": "tts_settings.model_id",
                    "op": "eq",
                    "value": "eleven_v3_beta"
                  }
                ]
              },
              "set": {
                "min": 0,
                "max": 1,
                "step": 0.5,
                "default": 0.5
              }
            }
          ]
        },
        "similarity_boost": {
          "type": "range",
          "default": 0.75,
          "min": 0,
          "max": 1,
          "step": 0.01
        },
        "style": {
          "type": "range",
          "default": 0,
          "nullable": true,
          "min": 0,
          "max": 1,
          "step": 0.01
        },
        "use_speaker_boost": {
          "type": "boolean",
          "default": true
        },
        "speed": {
          "type": "range",
          "default": 1,
          "min": 0.7,
          "max": 1.2,
          "step": 0.01
        }
      }
    },
    "pause_settings": {
      "enabled": {
        "type": "boolean",
        "default": false
      },
      "max_pause_symbols": {
        "type": "integer",
        "default": 500,
        "min": 1,
        "max": 20000
      },
      "default_duration": {
        "type": "range",
        "default": 0.5,
        "min": 0.1,
        "max": 10,
        "step": 0.1
      },
      "auto_paragraph_pause": {
        "type": "boolean",
        "default": false
      },
      "max_shift": {
        "type": "range",
        "default": 0.1,
        "nullable": true,
        "min": 0,
        "max": 2,
        "step": 0.01
      },
      "min_anchor_silence": {
        "type": "number",
        "default": 0.00001,
        "nullable": true,
        "min": 0,
        "max": 1,
        "step": 0.00001
      }
    },
    "stress_settings": {
      "enabled": {
        "type": "boolean",
        "default": false
      }
    },
    "output_settings": {
      "audio_format": {
        "type": "select",
        "options": [
          "mp3",
          "wav",
          "ogg"
        ],
        "default": "mp3",
        "nullable": true
      },
      "audio_quality": {
        "type": "select",
        "options": [
          "low",
          "medium",
          "high",
          "lossless"
        ],
        "default": "high",
        "nullable": true
      },
      "sample_rate": {
        "type": "select",
        "options": [
          22050,
          44100,
          48000
        ],
        "default": 44100,
        "nullable": true
      },
      "crossfade_ms": {
        "type": "integer",
        "default": 0,
        "nullable": true,
        "min": 0,
        "max": 5000
      },
      "loudnorm": {
        "enabled": {
          "type": "boolean",
          "default": false,
          "nullable": true
        },
        "integrated_loudness": {
          "type": "number",
          "default": -16,
          "nullable": true,
          "min": -70,
          "max": 0,
          "step": 0.1
        },
        "true_peak": {
          "type": "number",
          "default": -1.5,
          "nullable": true,
          "min": -9,
          "max": 0,
          "step": 0.1
        },
        "loudness_range": {
          "type": "number",
          "default": 11,
          "nullable": true,
          "min": 1,
          "max": 50,
          "step": 0.1
        }
      }
    }
  }
}
```

### 401 — Невалидный или отсутствующий X-API-KEY

**Поля ответа**

| Поле | Тип | Обяз. | Описание |
| --- | --- | --- | --- |
| `success` | `boolean` | обяз. | Всегда `false` в ответах об ошибке. |
| `message` | `string` | обяз. | Текст ошибки на языке ключа (задаётся заголовком `X-Locale`). |
| `data` | `null` — nullable | обяз. | Всегда `null`, когда запрос отклонён до обработки. |

**Пример**

```json
{
  "success": false,
  "message": "API key is missing. Provide it in the X-API-KEY header.",
  "data": null
}
```

### 403 — У ключа нет права templates.read

**Поля ответа**

| Поле | Тип | Обяз. | Описание |
| --- | --- | --- | --- |
| `success` | `boolean` | обяз. | Всегда `false` в ответах об ошибке. |
| `message` | `string` | обяз. | Текст ошибки на языке ключа (задаётся заголовком `X-Locale`). |

**Пример**

```json
{
  "success": false,
  "message": "This API key does not have permission to perform this action."
}
```

### 422 — Ошибка валидации. Поля с ошибками перечислены в `errors`.

**Поля ответа**

| Поле | Тип | Обяз. | Описание |
| --- | --- | --- | --- |
| `success` | `boolean` | обяз. | Всегда `false` в ответах об ошибке. |
| `message` | `string` | обяз. | Сводка ошибок валидации словами, на языке ответа (`X-Locale`). |
| `errors` | `object` | обяз. | Разбор по полям: ключ — поле запроса, значение — список претензий к нему. |
| `errors.*` | `array<string>` — произвольные ключи | — |  |

**Пример**

```json
{
  "success": true,
  "message": "string",
  "errors": {}
}
```

---

- Эта же страница в браузере: https://lumean.app/developers/docs/api/get-templates-config-options
- Машинный справочник целиком: https://api.lumean.app/docs/llm.md
