# Szablony

> Jak wskazać w API szablon marki zapisany w Paqshot: lista szablonów, ich identyfikatory i użycie w generowaniu.

Szablon to zapisany styl obrazów Twojej marki: opis sceny i światła, lista rzeczy, których ma unikać, oraz obrazy wzorcowe (key visuals). Zamiast za każdym razem opisywać styl w `prompt`, wskazujesz w API identyfikator szablonu i każdy obraz powstaje w tym samym stylu.

## Rodzaje szablonów

| Rodzaj | Identyfikator | Skąd się bierze |
|---|---|---|
| Szablony Twojej marki | UUID, np. `3f2b9c1e-…` | Przygotowujemy je razem z Tobą i zapisujemy w Twoim workspace. Widzisz tylko szablony swojego workspace i szablony wspólne. |
| Styl marki z Reislo | `reislo:<slug marki>`, np. `reislo:squares` | Paqshot czyta kolory, styl i wytyczne marki prosto z Reislo przy każdym użyciu. Nie trzeba zakładać szablonu w Paqshot. |
| Szablony infografik | `light-minimalistic`, `flat`, `illustrative-book`, `illustrative-editorial`, `clay`, `isometric`, `architectural-technical` | Wbudowane, dostępne dla wszystkich. |

## Lista szablonów

```text
GET https://api-design.prosecaptain.com/api/templates
Authorization: Bearer TWOJ_TOKEN
```

Z tokenem zwraca szablony Twojego workspace, szablony wspólne i wbudowane infografiki. Bez tokenu tylko szablony wspólne.

```json
{
  "success": true,
  "count": 3,
  "templates": [
    { "id": "auto", "name": "Auto", "type": "auto" },
    { "id": "flat", "name": "Flat", "type": "infographic" },
    {
      "id": "3f2b9c1e-8a4d-4c2e-9b1f-5d6e7a8b9c0d",
      "name": "Jesień – kampania",
      "description": "Ciepłe światło, drewno, len",
      "type": "photography",
      "previewUrl": "https://api.paqshot.com/assets/…"
    }
  ]
}
```

Pole `id` przekazujesz potem w parametrze `template`. `previewUrl` to podgląd pierwszego obrazu wzorcowego.

## Generowanie z szablonem

```json
{
  "productImage": { "data": "<base64>", "mimeType": "image/jpeg" },
  "sceneType": "product_packshot",
  "template": "3f2b9c1e-8a4d-4c2e-9b1f-5d6e7a8b9c0d",
  "prompt": "Produkt na lnianym obrusie",
  "aspectRatio": "4:5",
  "imageSize": "2K"
}
```

Co bierze się z szablonu, a co ustawiasz w żądaniu:

| Z szablonu | Z żądania |
|---|---|
| Opis stylu, światła i sceny | Zdjęcie produktu |
| Lista rzeczy do unikania | Dodatkowy `prompt`, dopisany do opisu z szablonu |
| Obrazy wzorcowe, wysyłane jako referencja stylu | `aspectRatio`, `imageSize`, `location`, `people` |

Odpowiedź ma pole `template` z nazwą użytego szablonu, więc możesz sprawdzić, czy został zastosowany.

## Szablon nie istnieje

Gdy szablon nie istnieje, nie jest opublikowany albo należy do innego workspace, API zwraca błąd 400, a obraz nie jest liczony:

```json
{
  "success": false,
  "error": "Template 3f2b9c1e-… not found in Directus or not accessible for your workspace"
}
```

Wartości `auto`, `none` albo brak pola `template` oznaczają generowanie bez szablonu.