# Generate an image

> POST /api/generate: a packshot, lifestyle photo, mockup or infographic from a product photo.

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

## Example: studio packshot

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

## Example: lifestyle photo

```json
{
  "productImage": { "data": "<base64>", "mimeType": "image/jpeg" },
  "sceneType": "product_packshot",
  "packshotStyle": "auto",
  "location": "home",
  "people": "with_people",
  "prompt": "Bottle on a coffee table in a bright living room, morning light",
  "aspectRatio": "4:5"
}
```

## Example: your brand template

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

Style, lighting and reference images come from the template. More in [Templates](/en/docs/paqshot-templates/).

## Parameters

| Field | Description |
|---|---|
| `productImage` | Product photo: `{ data, mimeType }`, `data` as base64. Up to 10 MB. `mimeType` is required. |
| `sceneType` | `product_packshot` (packshots and lifestyle), `mockup`, `action`, `abstract`, `linear`. |
| `packshotStyle` | `studio` for a studio packshot, `auto` for a lifestyle photo. |
| `prompt` | Extra scene description, up to 5000 characters. |
| `aspectRatio` | `auto` (default), `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`. Applies when `aspectRatio` is not `auto`. |
| `studioBackgroundColor` | `auto`, `white`, `off_white`, `light_gray`, `mid_gray`, `black`, `beige`, `pastel_blue`, `pastel_pink`, `pastel_green`, `custom`. |
| `studioBackgroundHex` | Background colour for `custom`, e.g. `#F5F5F5`. |
| `studioCameraDistance` | `auto`, `extreme_close_up`, `close_up`, `medium_close_up`, `medium`, `medium_wide`, `wide`. |
| `location` | Location for lifestyle: `office`, `home`, `outdoor`, `cafe`, `studio`, `urban`, `nature`, `industrial`, `minimal`, `luxury`, or `custom` + `customLocation`. |
| `people` | `without_people` (default) or `with_people`. Also `peopleGender`, `peopleAge`, `peopleCount`, `peopleEthnicity`, `peopleInteraction`. |
| `dimensionPlacement` | Product placement: `auto`, `on_ground`, `on_surface`, `on_pedestal`, `floating`. |
| `dimensionsEnabled`, `dimensionWidth`, `dimensionHeight`, `dimensionDepth` | Product dimensions in cm, to keep the scale right. |
| `referenceImages` | Style reference images: an array of `{ data, mimeType }`. |
| `imageStyle` | `photo`, `illustration`, `infographic`, `icon`. |
| `template` | [Template](/en/docs/paqshot-templates/) id: the UUID of your brand template or an infographic template (`flat`, `isometric` and others). `GET /api/templates` returns the list. |
| `designSessionId` | Continue a session: further versions of the same image. |

A product photo, a template or a `prompt` is required.

## Response

```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`: the finished image as base64.
- `directus.url`: permanent URL of the image in your library.
- `designSessionId`: pass it in the next call to refine the same image.
- `credits`: images left in your plan before this call.