# API: skrypty, kroki i foldery

_API · 5 min czytania · Zaktualizowano 2026-10-22 · https://lanachat.ai/guides/pl/api-scripts/_

**Skrypt** to ustalona sekwencja kroków dla jednej twórczyni: każdy krok to tekst, opcjonalnie media z Vault, cena w Stars i czas oczekiwania przed kolejnym krokiem. Skrypty są w folderach. Jeden skrypt na twórczynię może być oznaczony jako **first**: uruchamia się przy nowych rozmowach.

## Endpoints

| Method | Path | Description | Permission | Status |
|---|---|---|---|---|
| GET | `/scripts` | Lista skryptów (`creator_id=` wymagany, `folder_id=`, `active=true`) | `can_setup` | Planned |
| POST | `/scripts` | Utwórz skrypt z krokami | `can_setup` | Planned |
| GET | `/scripts/{id}` | Jeden skrypt i jego kroki | `can_setup` | Planned |
| PUT | `/scripts/{id}` | Zastąp skrypt (nazwa, kroki, folder, konta) | `can_setup` | Planned |
| PATCH | `/scripts/{id}` | Włącz/wyłącz, oznacz jako first, przenieś do folderu | `can_setup` | Planned |
| POST | `/scripts/{id}/duplicate` | Skopiuj skrypt (kopia nigdy nie jest first) | `can_setup` | Planned |
| DELETE | `/scripts/{id}` | Usuń skrypt | `can_setup` | Planned |
| GET | `/scripts/folders` | Foldery twórczyni (`creator_id=`) | `can_setup` | Planned |
| POST | `/scripts/folders` | Utwórz folder | `can_setup` | Planned |
| PATCH | `/scripts/folders/{id}` | Zmień nazwę folderu | `can_setup` | Planned |
| DELETE | `/scripts/folders/{id}` | Usuń folder; jego skrypty trafiają do "No folder" | `can_setup` | Planned |
| POST | `/conversations/{id}/script` | Uruchom skrypt w jednej rozmowie (patrz [Conversations](https://lanachat.ai/guides/pl/api-conversations/)) | `can_chat` | Planned |

## Obiekt skryptu

```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"
}
```

| Field | Type | Description |
|---|---|---|
| `id` | string | Zaczyna się od `scr_` |
| `creator_id` | string | Twórczyni, której fani otrzymują skrypt |
| `name` | string | Nazwa w Console |
| `goal` | string or null | Cel skryptu, własnymi słowami |
| `folder_id` | string or null | Folder; `null` to "No folder" |
| `active` | boolean | `false` oznacza, że nigdy się nie uruchomi |
| `first` | boolean | `true` oznacza, że uruchamia się przy nowych rozmowach |
| `account_ids` | array or null | `null` oznacza wszystkie konta Telegram twórczyni; tablica tylko te (przynajmniej jedno) |
| `steps` | array | Kroki, w kolejności (patrz niżej) |
| `created_at`, `updated_at` | string | ISO 8601, UTC |

Każdy krok zawiera:

| Field | Type | Description |
|---|---|---|
| `id` | string | Zaczyna się od `st_` |
| `name` | string | Nazwa w edytorze |
| `text` | string | Wiadomość, którą otrzyma fan |
| `media` | array of strings | Id mediów z [Vault](https://lanachat.ai/guides/pl/api-vault/) twórczyni |
| `wait_minutes` | number | Czas oczekiwania przed wysłaniem tego kroku |
| `pricing.mode` | string | `free`, `vault` (każde medium w cenie z Vault) lub `paid` (jedna cena za cały krok) |
| `pricing.stars` | number | Cena w Stars, gdy `mode` to `paid` |
| `pricing.discount_stars` | number | Opcjonalnie niższa cena w Stars |

Ustawienie `first: true` w skrypcie usuwa to oznaczenie z innych skryptów twórczyni.

## Skrypty

### Lista skryptów

`GET /scripts` · `can_setup`

| Parameter | Type | Required | Description |
|---|---|---|---|
| `creator_id` | string | Yes | Twórczyni |
| `folder_id` | string | No | Tylko skrypty z tego folderu |
| `active` | boolean | No | `true` tylko aktywne skrypty |
| `limit`, `cursor` | number, string | No | [Paginacja](https://lanachat.ai/guides/pl/api-overview/) |

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

Odpowiedź to strona z obiektami skryptów w `data`, z `next_cursor`. Bez `creator_id` API zwraca `400`.

### Utwórz skrypt

`POST /scripts` · `can_setup`

| Parameter | Type | Required | Description |
|---|---|---|---|
| `creator_id` | string | Yes | Twórczyni |
| `name` | string | Yes | Nazwa skryptu |
| `steps` | array | Yes | Kroki, jak w obiekcie powyżej (bez `id`) |
| `goal` | string | No | Cel skryptu |
| `folder_id` | string | No | Folder tej samej twórczyni |
| `account_ids` | array of strings | No | Tylko te konta; pomiń, by wszystkie |

```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"
}
```

Odpowiedź to nowy skrypt (`201`), aktywny, nie first, bez folderu. Id medium z Vault innej twórczyni jest odrzucane (`400`).

### Pobierz skrypt

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

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

Odpowiedź to obiekt skryptu ze wszystkimi krokami.

### Zastąp skrypt

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

Wyślij cały skrypt: `name`, `steps`, `folder_id` i `account_ids`, jak w Utwórz skrypt. Kroki pominięte zostaną usunięte.

```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}}]}'
```

Odpowiedź to zaktualizowany skrypt. Pusta tablica `account_ids` zwraca `400`: użyj `null` dla wszystkich kont.

### Włącz, oznacz jako first, przenieś

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

| Parameter | Type | Required | Description |
|---|---|---|---|
| `active` | boolean | No | Włącz lub wyłącz |
| `first` | boolean | No | `true` ustawia jako skrypt nowych rozmów |
| `folder_id` | string or null | No | Przenieś; `null` to "No folder" |

```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}'
```

Odpowiedź to zaktualizowany skrypt. Poprzedni skrypt first tej twórczyni traci oznaczenie `first`.

### Duplikuj skrypt

`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)"
```

Odpowiedź to kopia (`201`). Kopia nigdy nie jest first.

### Usuń skrypt

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

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

## Foldery

### Lista folderów

`GET /scripts/folders` · `can_setup`

| Parameter | Type | Required | Description |
|---|---|---|---|
| `creator_id` | string | Yes | Twórczyni |

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

### Utwórz folder

`POST /scripts/folders` · `can_setup`

| Parameter | Type | Required | Description |
|---|---|---|---|
| `creator_id` | string | Yes | Twórczyni |
| `name` | string | Yes | Nazwa folderu |

```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"}'
```

### Zmień nazwę folderu

`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"}'
```

### Usuń folder

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

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

Skrypty z folderu zostają i trafiają do "No folder".

## Uruchom skrypt w rozmowie

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

Uruchamia skrypt w rozmowie z jednym fanem: `state` zmienia się na `script` do końca skryptu. Treść, przykład i zasady znajdziesz w [Conversations](https://lanachat.ai/guides/pl/api-conversations/).

## Powiązane artykuły

- [LanaChat API: szybki start, uwierzytelnianie i błędy](https://lanachat.ai/guides/pl/api-overview/)
- [Skrypty: pisz, organizuj i używaj ich](https://lanachat.ai/guides/pl/scripts/)
- [Skrypty a AI: kiedy bot podąża za skryptem](https://lanachat.ai/guides/pl/scripts-vs-ai/)
