Planter and plant pot photos with AI: scale, drainage and plant

Staging a planter with a plant in it changes how big the pot looks. Sume image API prompt and checks for scale, drainage hole, saucer and the plant itself.

4 min readSume
All posts

Planters sell on how they look with a plant in them, and the studio shot is usually empty. Adding a plant, a shelf and a window is exactly what a reference edit is for. The risks are different from other products: the model decides the pot's apparent size, may close the drainage hole, and may invent a saucer.

On Sume's Image API, openai/gpt-image-2.5 accepts the empty planter as a reference and stages it.

State the size

A model has no sense of your pot's diameter. Say it: a 20 cm planter holds a small pothos, a 40 cm planter holds a fiddle-leaf fig. Pick a plant that fits the size and say the plant is a living, healthy plant without visible tape or labels.

import os, requests

H = {"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"}
resp = requests.post("https://api.sume.com/v1/images", headers=H, timeout=90, json={
    "model": "openai/gpt-image-2.5",
    "prompt": "Place this exact terracotta planter on a wooden shelf by a window, holding a small trailing pothos. The planter is 20 cm wide. Keep the pot's colour, rim and shape as in the reference. Keep the saucer if the reference has one.",
    "input_references": [
        {"type": "image_url", "image_url": {"url": "https://example.com/planter-empty.jpg"}}
    ],
    "aspect_ratio": "auto",
})
resp.raise_for_status()
if resp.status_code == 202:
    raise SystemExit("job envelope: poll data.status_url")
body = resp.json()
print([d["url"] for d in body["data"]], body.get("usage"))

Planter checks

  • The rim thickness and the colour of the terracotta match the reference.
  • The plant fits a pot of that size, with no rootball larger than the opening.
  • A saucer appears only if the product ships with one.
  • Soil level sits below the rim, and nothing spills.

Several sizes, one pass

If you sell three sizes, run the same prompt three times with the size line changed, and log usage.cost for each. Group the three results on one product page so the buyer sees the plant that suits each size, not three identical scenes.

Before you run a catalog

Run one SKU end to end first. POST /v1/images returns the images directly when it finishes within 30 seconds; past that it returns a 202 envelope with status_url and result_url, which the jobs and results guide explains. Handle that branch before you loop over a catalog, and write each result's URL and usage.cost to a file keyed by SKU, so a failed run restarts where it stopped and nothing is paid for twice.

Sources

Related posts

More in Use cases

All Use cases posts

Written by Sume