# API: скрипты, шаги и папки

_API · Чтение 5 мин · Обновлено 2026-10-22 · https://lanachat.ai/guides/ru/api-scripts/_

**Скрипт**, это фиксированная последовательность шагов для одного автора: каждый шаг, это текст, опциональные медиа из Vault, цена в Stars и пауза перед следующим шагом. Скрипты хранятся в папках. Один скрипт на автора может быть отмечен как **первый**: он запускается при новых разговорах.

## Endpoints

| Method | Path | Description | Permission | Status |
|---|---|---|---|---|
| GET | `/scripts` | Список скриптов (`creator_id=` обязателен, `folder_id=`, `active=true`) | `can_setup` | Planned |
| POST | `/scripts` | Создать скрипт с его шагами | `can_setup` | Planned |
| GET | `/scripts/{id}` | Один скрипт и его шаги | `can_setup` | Planned |
| PUT | `/scripts/{id}` | Заменить скрипт (название, шаги, папка, аккаунты) | `can_setup` | Planned |
| PATCH | `/scripts/{id}` | Включить или выключить, отметить первым, переместить в папку | `can_setup` | Planned |
| POST | `/scripts/{id}/duplicate` | Копировать скрипт (копия никогда не первая) | `can_setup` | Planned |
| DELETE | `/scripts/{id}` | Удалить скрипт | `can_setup` | Planned |
| GET | `/scripts/folders` | Папки автора (`creator_id=`) | `can_setup` | Planned |
| POST | `/scripts/folders` | Создать папку | `can_setup` | Planned |
| PATCH | `/scripts/folders/{id}` | Переименовать папку | `can_setup` | Planned |
| DELETE | `/scripts/folders/{id}` | Удалить папку; скрипты перемещаются в "Без папки" | `can_setup` | Planned |
| POST | `/conversations/{id}/script` | Запустить скрипт в одном разговоре (см. [Conversations](https://lanachat.ai/guides/ru/api-conversations/)) | `can_chat` | Planned |

## Объект скрипта

```json
{
  "id": "scr_204",
  "creator_id": "cr_lea",
  "name": "Welcome message",
  "goal": "First sale within the first day",
  "folder_id": "fld_12",
  "active": true,
  "first": true,
  "account_ids": null,
  "steps": [
    { "id": "st_1", "name": "Hello", "text": "Hey you 😊 glad you found me here", "media": [], "wait_minutes": 0, "pricing": { "mode": "free" } },
    { "id": "st_2", "name": "First set", "text": "Made this one this morning…", "media": ["med_5521", "med_5522"], "wait_minutes": 20, "pricing": { "mode": "paid", "stars": 250, "discount_stars": 200 } }
  ],
  "created_at": "2026-09-30T10:00:00Z",
  "updated_at": "2026-10-05T16:22:00Z"
}
```

| Поле | Тип | Описание |
|---|---|---|
| `id` | string | Начинается с `scr_` |
| `creator_id` | string | Автор, чьи фанаты получают скрипт |
| `name` | string | Название в Console |
| `goal` | string или null | Цель скрипта, вашими словами |
| `folder_id` | string или null | Папка; `null`, "Без папки" |
| `active` | boolean | `false`, скрипт не запускается |
| `first` | boolean | `true`, запускается при новых разговорах |
| `account_ids` | array или null | `null`, все Telegram аккаунты автора; массив, только указанные (минимум один) |
| `steps` | array | Шаги в порядке (см. ниже) |
| `created_at`, `updated_at` | string | ISO 8601, UTC |

Каждый шаг содержит:

| Поле | Тип | Описание |
|---|---|---|
| `id` | string | Начинается с `st_` |
| `name` | string | Название в редакторе |
| `text` | string | Сообщение, которое получает фан |
| `media` | массив строк | ID медиа из [Vault](https://lanachat.ai/guides/ru/api-vault/) автора |
| `wait_minutes` | number | Пауза перед отправкой шага |
| `pricing.mode` | string | `free`, `vault` (каждое медиа по цене из Vault) или `paid` (одна цена за весь шаг) |
| `pricing.stars` | number | Цена в Stars при `mode` = `paid` |
| `pricing.discount_stars` | number | Опциональная сниженная цена в Stars |

Установка `first: true` для скрипта снимает этот статус с других скриптов автора.

## Скрипты

### Список скриптов

`GET /scripts` · `can_setup`

| Параметр | Тип | Обязателен | Описание |
|---|---|---|---|
| `creator_id` | string | Да | Автор |
| `folder_id` | string | Нет | Только скрипты из этой папки |
| `active` | boolean | Нет | `true`, только включённые скрипты |
| `limit`, `cursor` | number, string | Нет | [Пагинация](https://lanachat.ai/guides/ru/api-overview/) |

```bash
curl "https://api.lanachat.ai/v1/scripts?creator_id=cr_lea&active=true" \
  -H "Authorization: Bearer $LANACHAT_TOKEN"
```

Ответ, страница объектов скриптов в `data` с `next_cursor`. Без `creator_id` API возвращает `400`.

### Создать скрипт

`POST /scripts` · `can_setup`

| Параметр | Тип | Обязателен | Описание |
|---|---|---|---|
| `creator_id` | string | Да | Автор |
| `name` | string | Да | Название |
| `steps` | array | Да | Шаги, как в объекте выше (без `id`) |
| `goal` | string | Нет | Цель |
| `folder_id` | string | Нет | Папка того же автора |
| `account_ids` | массив строк | Нет | Только эти аккаунты; если не указано, все |

```bash
curl -X POST https://api.lanachat.ai/v1/scripts \
  -H "Authorization: Bearer $LANACHAT_TOKEN" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"creator_id": "cr_lea", "name": "Win back", "steps": [{"name": "Miss you", "text": "Hey stranger, where did you go?", "wait_minutes": 0, "pricing": {"mode": "free"}}]}'
```

```json
{
  "id": "scr_231",
  "creator_id": "cr_lea",
  "name": "Win back",
  "goal": null,
  "folder_id": null,
  "active": true,
  "first": false,
  "account_ids": null,
  "steps": [ { "id": "st_1", "name": "Miss you", "text": "Hey stranger, where did you go?", "media": [], "wait_minutes": 0, "pricing": { "mode": "free" } } ],
  "created_at": "2026-10-06T14:30:00Z",
  "updated_at": "2026-10-06T14:30:00Z"
}
```

Ответ, новый скрипт (`201`), активный, не первый, без папки. ID медиа из Vault другого автора отклоняется (`400`).

### Получить скрипт

`GET /scripts/{id}` · `can_setup`

```bash
curl https://api.lanachat.ai/v1/scripts/scr_204 \
  -H "Authorization: Bearer $LANACHAT_TOKEN"
```

Ответ, объект скрипта со всеми шагами.

### Заменить скрипт

`PUT /scripts/{id}` · `can_setup`

Отправьте весь скрипт: `name`, `steps`, `folder_id` и `account_ids`, как в Создать скрипт. Пропущенные шаги удаляются.

```bash
curl -X PUT https://api.lanachat.ai/v1/scripts/scr_231 \
  -H "Authorization: Bearer $LANACHAT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name": "Win back", "folder_id": "fld_12", "account_ids": null, "steps": [{"name": "Miss you", "text": "Hey stranger, where did you go?", "wait_minutes": 0, "pricing": {"mode": "free"}}, {"name": "Gift", "text": "Kept this one for you", "media": ["med_5522"], "wait_minutes": 30, "pricing": {"mode": "paid", "stars": 200}}]}'
```

Ответ, обновлённый скрипт. Пустой массив `account_ids` возвращает `400`: используйте `null` для всех аккаунтов.

### Включить, отметить первым, переместить

`PATCH /scripts/{id}` · `can_setup`

| Параметр | Тип | Обязателен | Описание |
|---|---|---|---|
| `active` | boolean | Нет | Включить или выключить |
| `first` | boolean | Нет | `true`, скрипт для новых разговоров |
| `folder_id` | string или null | Нет | Переместить; `null`, "Без папки" |

```bash
curl -X PATCH https://api.lanachat.ai/v1/scripts/scr_231 \
  -H "Authorization: Bearer $LANACHAT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"first": true}'
```

Ответ, обновлённый скрипт. Предыдущий первый скрипт автора теряет статус `first`.

### Дублировать скрипт

`POST /scripts/{id}/duplicate` · `can_setup`

```bash
curl -X POST https://api.lanachat.ai/v1/scripts/scr_204/duplicate \
  -H "Authorization: Bearer $LANACHAT_TOKEN" \
  -H "Idempotency-Key: $(uuidgen)"
```

Ответ, копия (`201`). Копия никогда не первая.

### Удалить скрипт

`DELETE /scripts/{id}` · `can_setup`

```bash
curl -X DELETE https://api.lanachat.ai/v1/scripts/scr_231 \
  -H "Authorization: Bearer $LANACHAT_TOKEN"
```

## Папки

### Список папок

`GET /scripts/folders` · `can_setup`

| Параметр | Тип | Обязателен | Описание |
|---|---|---|---|
| `creator_id` | string | Да | Автор |

```bash
curl "https://api.lanachat.ai/v1/scripts/folders?creator_id=cr_lea" \
  -H "Authorization: Bearer $LANACHAT_TOKEN"
```

### Создать папку

`POST /scripts/folders` · `can_setup`

| Параметр | Тип | Обязателен | Описание |
|---|---|---|---|
| `creator_id` | string | Да | Автор |
| `name` | string | Да | Название папки |

```bash
curl -X POST https://api.lanachat.ai/v1/scripts/folders \
  -H "Authorization: Bearer $LANACHAT_TOKEN" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"creator_id": "cr_lea", "name": "Win back"}'
```

### Переименовать папку

`PATCH /scripts/folders/{id}` · `can_setup`

```bash
curl -X PATCH https://api.lanachat.ai/v1/scripts/folders/fld_12 \
  -H "Authorization: Bearer $LANACHAT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name": "Welcome"}'
```

### Удалить папку

`DELETE /scripts/folders/{id}` · `can_setup`

```bash
curl -X DELETE https://api.lanachat.ai/v1/scripts/folders/fld_12 \
  -H "Authorization: Bearer $LANACHAT_TOKEN"
```

Её скрипты сохраняются и перемещаются в "Без папки".

## Запустить скрипт в разговоре

`POST /conversations/{id}/script` · `can_chat`

Запускает скрипт в разговоре с одним фаном: `state` становится `script` до окончания. Тело запроса, пример и правила в [Conversations](https://lanachat.ai/guides/ru/api-conversations/).

## Похожие статьи

- [LanaChat API: быстрое начало, аутентификация и ошибки](https://lanachat.ai/guides/ru/api-overview/)
- [Скрипты: пишите, организуйте и используйте их](https://lanachat.ai/guides/ru/scripts/)
- [Скрипты и ИИ: когда бот следует скрипту](https://lanachat.ai/guides/ru/scripts-vs-ai/)
