# How to: Product shots

> A studio photo of your product for a shop page, a landing page or an ad, from one request to your agent.

## When to use it

A product shown as a studio photograph: a coffee bag, a bottle, a pair of headphones. Your agent can draw a
packaging mockup in code, but it won't read as a photo. In our side-by-side test of 14 asset jobs, the product photo
was one of the jobs vincevangen won outright, and a blind judge agreed ([how we tested](https://vincevangen.com/compare#our-test)).

Leave the label blank. Image models paint fake lettering on packaging, and your real artwork goes on afterwards.

## What to ask your agent

> Make a product shot for the shop page: our coffee bag, matte espresso brown with a plain crema label band,
> standing next to a teal cup of black coffee, a few beans in front. Then cut it out for the shop page.

## What your agent sends

Claude Code calls [`vvgen_generate_asset`](https://vincevangen.com/docs/tools.md#vvgen_generate_asset) with the `product-shot` preset. This
is the call from our test, word for word:

```json
{
  "preset": "product-shot",
  "subject": "a matte espresso-brown #3B2418 kraft coffee bag with a plain crema #E9C79A label band, standing upright, next to a deep teal #0F4C4A ceramic cup of black coffee, a few whole roasted beans in front",
  "seed": 11
}
```

The preset adds the studio set: a three-quarter angle on a seamless light-grey sweep, softbox light and a soft contact
shadow. Pass `lighting` to change the light, for example `"warm late-afternoon sun from the right"`. Name colours as
hex codes in the subject when they matter.

One call, one final: a brief this complete needs no drafts. For a transparent PNG the agent then calls
[`vvgen_remove_background`](https://vincevangen.com/docs/tools.md#vvgen_remove_background) on the result's id.

To see options first, say so. The agent drafts four on the cheapest tier (`"model": "fast", "n": 4`), looks at the
contact sheet, and finishes the one you like with `vvgen_generate_image` and `"from_draft": "<its id>"`: an edit of
that draft on the Final tier, so the result is the same picture. The finish costs more than a plain final, so this
path pays off when you would otherwise want two or more finished shots.

## What comes back

The file lands in your repo (or downloads by id), with one small preview for the agent to look at, the credits the
call cost, the model and its licence. The preset now delivers 1600 × 1200; the image above was made before that size
fix, at the model's own 1152 × 864.

Ask your agent to look at the preview before it moves on: fake text on the label, the product's proportions, a cup
handle that melts into the bag.

## In Cursor and Codex

Same tools, same arguments. Add the server with the [Cursor](https://vincevangen.com/docs/quickstart/cursor.md) or
[Codex](https://vincevangen.com/docs/quickstart/codex.md) quickstart. Codex also has its own `$imagegen` image tool. For a one-off image that is
fine, and [`vvgen_import`](https://vincevangen.com/docs/tools.md#vvgen_import) brings its file in for size exports, exact text and a provenance
record at no charge.

## Results

- The product-shot preset with the call below, seed 11, from our test run on 12 October 2026 (FLUX.2 [pro], the model behind the Final tier). The label is blank on purpose. Image: https://vincevangen.com/how-to/product-shot.webp (Studio photo of a brown coffee bag with a blank cream label band, a teal cup of black coffee and a few beans on a grey sweep)

## Cost

- One final, as above: 6 credits ($0.06)
- One final, then a cut-out: 10 credits ($0.10)
- Four options first, the pick finished, then a cut-out: 15 credits ($0.15)
