Stripe product images: build a set of 8 with the Sume image API
Stripe's product object holds up to 8 image URLs. Plan a set of eight shots with Sume, price it by model, and host copies you control before you set the field.

Stripe's Product object has an images field that holds a list of up to 8 URLs, meant to be displayed to the customer. Eight AI shots from Sume cost between $0.20 on Qwen Image and $0.80 on Nano Banana 2 at the listed per-image prices, and eight GPT Image 2.5 high renders at 4:5 come to about $0.45 by the repo estimate. Plan the set before you spend it, and put the files on a host you control before you write the URLs into Stripe.
What Stripe documents
Stripe's reference page for the Product object (read 2026-10-03) describes images as an array of strings: a list of up to 8 URLs of images for the product, meant to be displayable to the customer. This post uses only that fact about the field.
A shot list that fills eight slots
Treat the eight slots like a small shoot, not eight versions of the same shot. Edit your own packshot by passing it as an input reference, so the product stays the same across the set. The Image API docs list input_references as an array of public HTTPS image URLs, and the number accepted depends on the model, so check the model's record.
- 1. Main shot on white, 1:1
- 2. Three-quarter angle on white, 1:1
- 3. Detail close-up of texture or label, 1:1
- 4. Product in a lifestyle scene, 4:5
- 5. Product with a hand for scale, 4:5
- 6. Flat lay with the parts or accessories, 1:1
- 7. Packaging next to the product, 1:1
- 8. A second lifestyle scene in a different setting, 4:5
Price the set
The per-image prices are the endpoint line on the Sume model record (list x 1.25). GPT Image 2.5 prices are the repo's estimate for the size and quality, read 2026-10-03.
| Model | Per image | Eight images |
|---|---|---|
| Qwen Image | $0.025 | $0.20 |
| Flux 2 Pro | $0.0375 | $0.30 |
| Seedream 4.5 | $0.05 | $0.40 |
| GPT Image 2.5 high at 4:5 (estimate) | $0.0568 | $0.45 |
| Nano Banana 2 | $0.10 | $0.80 |
Script: eight shots, one list
This sends one call per shot, uses a packshot URL as a reference, and prints a JSON list you can review before anything reaches Stripe. It stops on the first non-200 so you see the status instead of a half set.
import os, json, requests
H = {"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"}
PACKSHOT = "https://example.com/packshot.png"
SHOTS = ["main shot on a white background", "three-quarter angle on white",
"close-up of the label and texture", "in a bright kitchen scene",
"held in one hand for scale", "flat lay with its accessories",
"next to its box on white", "on a wooden table by a window"]
urls = []
for shot in SHOTS:
r = requests.post("https://api.sume.com/v1/images", headers=H, timeout=120, json={
"model": "openai/gpt-image-2.5", "quality": "high",
"aspect_ratio": "4:5",
"prompt": f"Keep the product identical to the reference: {shot}",
"input_references": [{"type": "image_url", "image_url": {"url": PACKSHOT}}]})
if r.status_code != 200:
raise SystemExit(f"{shot}: {r.status_code} {r.text[:200]}")
urls.append(r.json()["data"][0]["url"])
print(json.dumps(urls, indent=1))
Host copies before you set the field
The docs describe data[].url as a Sume-hosted, signed URL. A storefront wants addresses that keep working for as long as the product page exists, so download each file and publish it from your own storage or CDN. Then set that list on the product. Sume does not call Stripe or manage your product catalog.
Sources
Related posts
More in Integrations
- stt_create in a read-only MCP session: insufficient_scope, not a bug
A read-only OAuth session on Sume's MCP server can list tools but paid calls such as stt_create and tts_create return insufficient_scope. What to switch on.
- Sume hosted MCP OAuth scopes: mcp:read, mcp:write, and no paid scope
What a client gets after OAuth consent on https://mcp.sume.com/mcp: mcp:read always, mcp:write opt-in, and an API key for the full tool set.
- Sume MCP with an API key versus OAuth: which tools your AI client sees
Why Claude, Cursor, Codex or Copilot may show fewer Sume tools: OAuth is read-only until consent includes write; an API key shows all.
- Sume MCP script_run: timeout 5 to 55 seconds, max_paid_calls brake
script_run in the hosted Sume MCP runs JavaScript with sume.call, a 5 to 55 second timeout and call limits, and journals every call and job it started.
Written by Sume