# Generowanie obrazu

> POST /api/generate: packshot, lifestyle, mockup lub infografika ze zdjęcia produktu.

```text
POST https://api-design.prosecaptain.com/api/generate
```

## Przykład: packshot studyjny

```json
{
  "productImage": { "data": "<base64>", "mimeType": "image/png" },
  "sceneType": "product_packshot",
  "packshotStyle": "studio",
  "studioBackgroundColor": "white",
  "studioCameraDistance": "medium",
  "aspectRatio": "1:1",
  "imageSize": "2K"
}
```

## Przykład: zdjęcie lifestyle

```json
{
  "productImage": { "data": "<base64>", "mimeType": "image/jpeg" },
  "sceneType": "product_packshot",
  "packshotStyle": "auto",
  "location": "home",
  "people": "with_people",
  "prompt": "Butelka na stoliku w jasnym salonie, poranne światło",
  "aspectRatio": "4:5"
}
```

## Przykład: szablon Twojej marki

```json
{
  "productImage": { "data": "<base64>", "mimeType": "image/jpeg" },
  "sceneType": "product_packshot",
  "template": "3f2b9c1e-8a4d-4c2e-9b1f-5d6e7a8b9c0d",
  "aspectRatio": "4:5"
}
```

Styl, światło i obrazy wzorcowe pochodzą z szablonu. Więcej w [Szablony](/dokumentacja/paqshot-szablony/).

## Parametry

| Pole | Opis |
|---|---|
| `productImage` | Zdjęcie produktu: `{ data, mimeType }`, `data` w base64. Maksymalnie 10 MB. `mimeType` jest wymagany. |
| `sceneType` | `product_packshot` (packshot i lifestyle), `mockup`, `action`, `abstract`, `linear`. |
| `packshotStyle` | `studio` dla packshotu studyjnego, `auto` dla zdjęcia lifestyle. |
| `prompt` | Dodatkowy opis sceny, maksymalnie 5000 znaków. |
| `aspectRatio` | `auto` (domyślnie), `1:1`, `4:3`, `3:4`, `16:9`, `9:16`, `3:2`, `2:3`, `5:4`, `4:5`, `21:9`, `9:21`. |
| `imageSize` | `1K`, `2K`, `4K`. Działa, gdy `aspectRatio` nie jest `auto`. |
| `studioBackgroundColor` | `auto`, `white`, `off_white`, `light_gray`, `mid_gray`, `black`, `beige`, `pastel_blue`, `pastel_pink`, `pastel_green`, `custom`. |
| `studioBackgroundHex` | Kolor tła przy `custom`, np. `#F5F5F5`. |
| `studioCameraDistance` | `auto`, `extreme_close_up`, `close_up`, `medium_close_up`, `medium`, `medium_wide`, `wide`. |
| `location` | Miejsce dla lifestyle: `office`, `home`, `outdoor`, `cafe`, `studio`, `urban`, `nature`, `industrial`, `minimal`, `luxury`, albo `custom` + `customLocation`. |
| `people` | `without_people` (domyślnie) albo `with_people`. Dodatkowo `peopleGender`, `peopleAge`, `peopleCount`, `peopleEthnicity`, `peopleInteraction`. |
| `dimensionPlacement` | Ustawienie produktu: `auto`, `on_ground`, `on_surface`, `on_pedestal`, `floating`. |
| `dimensionsEnabled`, `dimensionWidth`, `dimensionHeight`, `dimensionDepth` | Wymiary produktu w cm, żeby zachować skalę. |
| `referenceImages` | Obrazy referencyjne stylu: tablica `{ data, mimeType }`. |
| `imageStyle` | `photo`, `illustration`, `infographic`, `icon`. |
| `template` | Identyfikator [szablonu](/dokumentacja/paqshot-szablony/): UUID szablonu Twojej marki albo szablon infografiki (`flat`, `isometric` i inne). Listę zwraca `GET /api/templates`. |
| `designSessionId` | Kontynuacja sesji: kolejne wersje tego samego obrazu. |

Wymagane jest zdjęcie produktu, szablon albo `prompt`.

## Odpowiedź

```json
{
  "success": true,
  "image": "<base64>",
  "mimeType": "image/jpeg",
  "filename": "image-1766172464378-c2158164.jpeg",
  "id": "b1e2…",
  "designSessionId": "5b0f…",
  "iterationIndex": 1,
  "directus": {
    "url": "https://api.paqshot.com/assets/54c4528c-…"
  },
  "credits": 29
}
```

- `image`: gotowy obraz w base64.
- `directus.url`: stały adres obrazu w Twojej bibliotece.
- `designSessionId`: przekaż w kolejnym wywołaniu, żeby poprawiać ten sam obraz.
- `credits`: liczba obrazów w planie przed tym wywołaniem.