---
title: "GET /templates — List Templates"
url: https://lumean.app/developers/docs/api/get-templates
locale: ru
description: "List Templates"
generated: 2026-10-17
operationId: template.index
method: GET
path: /templates
scopes: [templates.read]
spec_version: 0.0.1
---

# GET /templates

**List Templates**

Постраничный список шаблонов владельца ключа: по умолчанию — **корневые** (без папки),
новые первыми, **не больше 30 на странице**.

Шаблон — сохранённый набор настроек генерации: сервис, голос, модель, формат вывода.
Его `id` подставляется в `template_id` при создании заказа. Заводить шаблон на каждый
заказ не нужно: один шаблон переиспользуется, а настройки под конкретный заказ меняет
`config_override` в `POST /orders`.

Ответ: `data.items[]` — шаблоны, `data.current_page` / `last_page` / `per_page` /
`total` — пагинация. Обход всех страниц: `page=1, 2, …` до `current_page = last_page`.
Найти шаблон по названию — `search`, по сервису — `service`, внутри папки —
`folder_id`; папки вместе с шаблонами — `GET /templates/browse`.

**Прежний режим (устарел).** Запрос **без единого параметра** по-прежнему отдаёт все
корневые шаблоны одним массивом в `data` и несёт заголовки `Deprecation` и
`Sunset` (дата снятия). После неё такой запрос получит первую страницу. Переход —
добавить `?page=1` и читать `data.items`.

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

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

## Запрос

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

## Параметры

| Поле | Где | Тип | Обяз. | Описание |
| --- | --- | --- | --- | --- |
| `page` | query | `integer` | — | Номер страницы, начиная с `1`. Любой параметр списка включает постраничный ответ; запрос совсем без параметров — устаревший полный список (до 06.11.2026). |
| `per_page` | query | `integer` | — | Шаблонов на странице, `1..30`. По умолчанию 30. |
| `sort_by` | query | `string` — `created_at` · `name` | — | Поле сортировки. По умолчанию `created_at` (новые первыми при `sort_order=desc`). |
| `sort_order` | query | `string` — `asc` · `desc` | — | Направление сортировки. По умолчанию `desc`. |
| `search` | query | `string` | — | Подстрока названия шаблона. Регистр не учитывается. |
| `service` | query | `string` | — | Показать только шаблоны этого сервиса. Код — короткая латинская строка: `elevenlabs`, `heygen`, `cartesia`, `sfx`, `music`. |
| `folder_id` | query | `string` | — | UUID папки. Не передан — шаблоны корня (`folder_id = null`). |

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

Тела нет.

## Ответы

### 200 — `TemplateCollection`

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

| Поле | Тип | Обяз. | Описание |
| --- | --- | --- | --- |
| `data` | `TemplateList` | обяз. | Страница шаблонов владельца ключа (не больше 30): `items` и мета пагинации. Обход с папками — `GET /templates/browse`. |
| `data.items` | `array<Template>` | обяз. | Записи текущей страницы в порядке сортировки списка. |
| `data.items[].id` | `string` | обяз. | UUID шаблона. Его кладут в `template_id` при создании заказа. |
| `data.items[].user_id` | `integer` | обяз. | ID владельца шаблона. |
| `data.items[].slug` | `string` | обяз. | Короткий публичный идентификатор для расшаривания. `null` у шаблона, которым не делились. |
| `data.items[].name` | `string` | обяз. | Название шаблона — только для человека, на поведение генерации не влияет. |
| `data.items[].service_key` | `string` | обяз. | Код сервиса, по схеме которого валидируется `config`: `elevenlabs`, `lumimg` и т. д. |
| `data.items[].service` | `Service \| null` — nullable | обяз. | Сервис шаблона справочно: название и тарификация, без схем конфигурации. `null` означает, что сервиса с таким кодом больше нет. |
| `data.items[].config` | `object` | обяз. | Настройки генерации: голос, модель, скорость и прочее — набор ключей задаёт сервис. Допустимые значения смотрите в `GET /templates/config-options?service=<код>`, значение вне схемы отклоняется с `422`. В заказе (`template` в `GET /orders/{order}`) это настройки самого заказа — снимок на момент его создания с `config_override`, а не текущий конфиг шаблона (у заказов, созданных до конца сентября 2026 года, — текущий конфиг шаблона с `config_override`). |
| `data.items[].is_public` | `boolean` | обяз. | Опубликован ли шаблон в общем каталоге. |
| `data.items[].folder_id` | `string` | обяз. | UUID папки, в которой лежит шаблон, либо `null` для корня. Структура папок видна в `GET /templates/browse`. |
| `data.items[].created_at` | `string` — date-time — nullable | обяз. | Когда шаблон создан, ISO 8601. |
| `data.items[].updated_at` | `string` — date-time — nullable | обяз. | Когда шаблон последний раз менялся, ISO 8601. |
| `data.current_page` | `integer` | обяз. | Номер текущей страницы, с единицы. |
| `data.last_page` | `integer` | обяз. | Номер последней страницы. Обход списка закончен, когда `current_page` равен `last_page`. |
| `data.per_page` | `integer` | обяз. | Размер страницы, применённый сервером. |
| `data.total` | `integer` | обяз. | Сколько записей всего по фильтру. |

**Пример**

```json
{
  "success": true,
  "message": "Templates retrieved",
  "data": {
    "items": [
      {
        "id": "7e2a4c1d-8b3f-4a5e-9c6d-1f2e3a4b5c6d",
        "user_id": 501,
        "slug": null,
        "name": "Narrator Voice (EN)",
        "service_key": "elevenlabs",
        "service": {
          "id": 3,
          "code": "elevenlabs",
          "name": "ElevenLabs",
          "display_name": "ElevenLabs TTS",
          "payg_access": "everyone",
          "billing_mode": "pay_as_you_go",
          "unit_asset_id": 5,
          "unit_asset": {
            "id": 5,
            "code": "tts_units",
            "kind": "unit",
            "precision": 0,
            "name": "TTS Units",
            "deleted_at": null,
            "created_at": "2026-01-10T09:00:00+00:00",
            "updated_at": "2026-01-10T09:00:00+00:00"
          },
          "required_entitlement_id": null,
          "units_per_call": null,
          "units_per_char": 1,
          "units_per_image": null,
          "units_per_second": null,
          "min_billable_chars": 1,
          "lumcoin_per_token": 10,
          "lumc_precision": 2,
          "price_lumc_minor": null,
          "unit_size": 1,
          "uses_money_first_pricing": false,
          "rate_unit": "char",
          "display_category": "voice",
          "is_premium": false,
          "display_order": 1,
          "metadata": null,
          "is_active": true,
          "created_at": "2026-01-10T09:00:00+00:00",
          "updated_at": "2026-01-10T09:00:00+00:00"
        },
        "config": {
          "tts_settings": {
            "model_id": "eleven_multilingual_v2",
            "voice_id": "21m00Tcm4TlvDq8ikWAM",
            "mode": "mode_v1",
            "language_code": null,
            "advanced_voice_settings": true,
            "voice_settings": {
              "stability": 0.5,
              "similarity_boost": 0.75,
              "use_speaker_boost": true
            }
          }
        },
        "is_public": false,
        "folder_id": null,
        "created_at": "2026-06-01T10:00:00+00:00",
        "updated_at": "2026-06-01T10:00:00+00:00"
      },
      {
        "id": "a1b2c3d4-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
        "user_id": 501,
        "slug": null,
        "name": "Podcast Host (RU)",
        "service_key": "elevenlabs",
        "service": {
          "id": 3,
          "code": "elevenlabs",
          "name": "ElevenLabs",
          "display_name": "ElevenLabs TTS",
          "payg_access": "everyone",
          "billing_mode": "pay_as_you_go",
          "unit_asset_id": 5,
          "unit_asset": {
            "id": 5,
            "code": "tts_units",
            "kind": "unit",
            "precision": 0,
            "name": "TTS Units",
            "deleted_at": null,
            "created_at": "2026-01-10T09:00:00+00:00",
            "updated_at": "2026-01-10T09:00:00+00:00"
          },
          "required_entitlement_id": null,
          "units_per_call": null,
          "units_per_char": 1,
          "units_per_image": null,
          "units_per_second": null,
          "min_billable_chars": 1,
          "lumcoin_per_token": 10,
          "lumc_precision": 2,
          "price_lumc_minor": null,
          "unit_size": 1,
          "uses_money_first_pricing": false,
          "rate_unit": "char",
          "display_category": "voice",
          "is_premium": false,
          "display_order": 1,
          "metadata": null,
          "is_active": true,
          "created_at": "2026-01-10T09:00:00+00:00",
          "updated_at": "2026-01-10T09:00:00+00:00"
        },
        "config": {
          "tts_settings": {
            "model_id": "eleven_multilingual_v2",
            "voice_id": "AZnzlk1XvdvUeBnXmlld",
            "mode": "mode_v1",
            "language_code": "ru",
            "advanced_voice_settings": true,
            "voice_settings": {
              "stability": 0.4,
              "similarity_boost": 0.8,
              "use_speaker_boost": true
            }
          }
        },
        "is_public": false,
        "folder_id": null,
        "created_at": "2026-06-10T08:00:00+00:00",
        "updated_at": "2026-06-10T08:00:00+00:00"
      }
    ],
    "current_page": 1,
    "last_page": 1,
    "per_page": 30,
    "total": 2
  }
}
```

### 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`.

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

| Поле | Тип | Обяз. | Описание |
| --- | --- | --- | --- |
| `message` | `string` | обяз. | Errors overview. |
| `errors` | `object` | обяз. | A detailed description of each field that failed validation. |
| `errors.*` | `array<string>` — произвольные ключи | — |  |

**Пример**

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

---

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