# API: Media w Vault i podpisane przesyłanie plików

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

**Vault** przechowuje zdjęcia, filmy i notatki głosowe twórczyni, posegregowane w folderach. Każdy element jest **Free**, **Teaser** lub **Paid** z ceną w Stars. Pliki nigdy nie przechodzą przez API: prosisz o **podpisany URL do przesłania**, wysyłasz tam plik, a potem potwierdzasz.

## Endpoints

| Method | Path | Description | Permission | Status |
|---|---|---|---|---|
| GET | `/media` | Lista mediów (`creator_id=` wymagane, `folder_id=`, `type=photo,video,voice`, `access=free,teaser,paid`) | `can_setup` | Planned |
| POST | `/media/uploads` | Pobierz podpisany URL do przesłania jednego pliku (ważny 15 minut) | `can_setup` | Planned |
| POST | `/media/uploads/{upload_id}/complete` | Potwierdź przesłanie; media zostaje utworzone i przetworzone | `can_setup` | Planned |
| GET | `/media/{id}` | Jedno media, jego podgląd i gdzie jest używane | `can_setup` | Planned |
| PATCH | `/media/{id}` | Zmień opis, dostęp, cenę lub folder | `can_setup` | Planned |
| DELETE | `/media/{id}` | Usuń je (odmowa, jeśli używa go krok skryptu) | `can_setup` | Planned |
| GET | `/media/folders` | Foldery w Vault twórczyni | `can_setup` | Planned |
| POST | `/media/folders` | Utwórz folder | `can_setup` | Planned |
| PATCH | `/media/folders/{id}` | Zmień nazwę lub przenieś folder | `can_setup` | Planned |
| DELETE | `/media/folders/{id}` | Usuń pusty folder | `can_setup` | Planned |

## Obiekt media

```json
{
  "id": "med_5521",
  "creator_id": "cr_lea",
  "type": "photo",
  "status": "ready",
  "folder_id": "vf_3",
  "access": "paid",
  "stars": 300,
  "description": "Beach, golden hour, white bikini",
  "preview_url": "https://cdn.lanachat.ai/w/7Hq2/cr_lea/med_5521/preview.jpg",
  "created_at": "2026-10-06T14:21:40Z"
}
```

| Pole | Typ | Opis |
|---|---|---|
| `id` | string | Zaczyna się od `med_` |
| `creator_id` | string | Czyj Vault |
| `type` | string | `photo`, `video` lub `voice` |
| `status` | string | `processing`, `ready` lub `failed` (z powodem) |
| `folder_id` | string lub null | Folder w Vault |
| `access` | string | `free`, `teaser` lub `paid` |
| `stars` | number lub null | Cena w Stars, wymagana gdy `access` to `paid` (1 do 100000) |
| `description` | string lub null | Pomaga AI wybrać właściwe media; nigdy nie jest pokazywana fanowi |
| `preview_url` | string lub null | Podgląd, gdy media jest `ready` |
| `created_at` | string | ISO 8601, UTC |

## Media

### Lista mediów

`GET /media` · `can_setup`

| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
| `creator_id` | string | Tak | Twórczyni |
| `folder_id` | string | Nie | Tylko ten folder |
| `type` | string | Nie | `photo`, `video` lub `voice`; kilka oddzielonych przecinkami |
| `access` | string | Nie | `free`, `teaser` lub `paid`; kilka oddzielonych przecinkami |
| `limit`, `cursor` | number, string | Nie | [Paginacja](https://lanachat.ai/guides/pl/api-overview/) |

```bash
curl "https://api.lanachat.ai/v1/media?creator_id=cr_lea&type=photo&access=paid" \
  -H "Authorization: Bearer $LANACHAT_TOKEN"
```

```json
{
  "data": [
    { "id": "med_5522", "creator_id": "cr_lea", "type": "photo", "status": "ready", "folder_id": "vf_3", "access": "paid", "stars": 250, "description": "Mirror, black dress", "preview_url": "https://cdn.lanachat.ai/w/7Hq2/cr_lea/med_5522/preview.jpg", "created_at": "2026-10-06T14:25:10Z" },
    { "id": "med_5521", "creator_id": "cr_lea", "type": "photo", "status": "ready", "folder_id": "vf_3", "access": "paid", "stars": 300, "description": "Beach, golden hour, white bikini", "preview_url": "https://cdn.lanachat.ai/w/7Hq2/cr_lea/med_5521/preview.jpg", "created_at": "2026-10-06T14:21:40Z" }
  ],
  "next_cursor": null
}
```

Bez `creator_id` API odpowiada `400`.

### Przesyłanie pliku

Trzy wywołania: prosisz o podpisany URL, wysyłasz plik, potwierdzasz.

**Krok 1.** `POST /media/uploads` · `can_setup`

| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
| `creator_id` | string | Tak | Czyj Vault go otrzymuje |
| `file_name` | string | Tak | Nazwa pliku, np. `beach-01.jpg` |
| `content_type` | string | Tak | Na przykład `image/jpeg` lub `video/mp4` |
| `size_bytes` | number | Tak | Rozmiar pliku, do 2 GB |
| `folder_id` | string | Nie | Folder Vault, do którego trafi |

```bash
curl -X POST https://api.lanachat.ai/v1/media/uploads \
  -H "Authorization: Bearer $LANACHAT_TOKEN" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"creator_id": "cr_lea", "file_name": "beach-01.jpg", "content_type": "image/jpeg", "size_bytes": 2483201, "folder_id": "vf_3"}'
```

```json
{
  "upload_id": "up_7781",
  "url": "https://uploads.lanachat.ai/w/7Hq2/up_7781?X-Signature=…&X-Expires=1759760100",
  "method": "PUT",
  "headers": { "Content-Type": "image/jpeg" },
  "expires_at": "2026-10-06T14:35:00Z"
}
```

URL jest ważny 15 minut.

**Krok 2.** Wyślij plik metodą `PUT` na `url`, z dokładnie podanymi `headers` (bez nagłówka `Authorization`).

```bash
curl -X PUT "https://uploads.lanachat.ai/w/7Hq2/up_7781?X-Signature=…&X-Expires=1759760100" \
  -H "Content-Type: image/jpeg" --data-binary @beach-01.jpg
```

**Krok 3.** `POST /media/uploads/{upload_id}/complete` · `can_setup`

```bash
curl -X POST https://api.lanachat.ai/v1/media/uploads/up_7781/complete \
  -H "Authorization: Bearer $LANACHAT_TOKEN" \
  -H "Idempotency-Key: $(uuidgen)"
```

```json
{
  "id": "med_5521",
  "creator_id": "cr_lea",
  "type": "photo",
  "status": "processing",
  "folder_id": "vf_3",
  "access": "paid",
  "stars": null,
  "description": null,
  "preview_url": null,
  "created_at": "2026-10-06T14:21:40Z"
}
```

`status` zmienia się z `processing` na `ready` (tworzone są podglądy i kopia do Telegrama) lub `failed` z powodem. Webhook `media.ready` powiadomi Cię o gotowości, zobacz [Webhooks](https://lanachat.ai/guides/pl/api-webhooks/). Akceptowane formaty: JPEG, PNG, HEIC, MP4, MOV, OGG i M4A, do 2 GB.

### Pobierz media

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

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

Odpowiedź to obiekt media z podglądem i miejscami użycia. Nieznane id zwraca `404`.

### Cena i opis

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

| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
| `access` | string | Nie | `free`, `teaser` lub `paid` |
| `stars` | number | Gdy `access` to `paid` | 1 do 100000 |
| `description` | string | Nie | Co pokazuje, dla AI |
| `folder_id` | string lub null | Nie | Przenieś do innego folderu |

```bash
curl -X PATCH https://api.lanachat.ai/v1/media/med_5521 \
  -H "Authorization: Bearer $LANACHAT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"access": "paid", "stars": 300, "description": "Beach, golden hour, white bikini"}'
```

Odpowiedzią jest zaktualizowane media. `stars` jest wymagane, gdy `access` to `paid` (1 do 100000), inaczej API zwraca `400`. Opis pomaga AI wybrać właściwe media; nigdy nie jest pokazywany fanowi.

### Usuń media

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

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

Media używane przez krok skryptu nie zostanie usunięte (`409`): najpierw usuń je ze [skryptu](https://lanachat.ai/guides/pl/api-scripts/).

## Foldery

### Lista folderów

`GET /media/folders` · `can_setup`

| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
| `creator_id` | string | Tak | Czyj Vault |

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

### Utwórz folder

`POST /media/folders` · `can_setup`

| Parametr | Typ | Wymagany | Opis |
|---|---|---|---|
| `creator_id` | string | Tak | Czyj Vault |
| `name` | string | Tak | Nazwa folderu |

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

### Zmień nazwę lub przenieś folder

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

```bash
curl -X PATCH https://api.lanachat.ai/v1/media/folders/vf_3 \
  -H "Authorization: Bearer $LANACHAT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name": "Beach, summer"}'
```

### Usuń folder

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

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

Można usunąć tylko pusty folder; w przeciwnym razie API zwraca `409`.

## Powiązane artykuły

- [LanaChat API: szybki start, uwierzytelnianie i błędy](https://lanachat.ai/guides/pl/api-overview/)
- [Vault: przesyłanie mediów, podglądy i foldery](https://lanachat.ai/guides/pl/vault/)
- [API: skrypty, kroki i foldery](https://lanachat.ai/guides/pl/api-scripts/)
