AI gift basket product photo from six item photos: 16 references
GPT Image 2.5 on Sume takes up to 16 reference images, so six item photos can go into one gift basket scene; and the billed price is in usage.cost.

To make a gift basket product photo from six item photos, send all six as input_references to openai/gpt-image-2.5, which accepts up to 16 references on Sume, and describe the basket and the arrangement in the prompt. Price depends on size and quality, so read usage.cost on the response, which is the billed list times 1.25.
Gift baskets are bought in the next six weeks, and a seller with 40 baskets cannot shoot each combination. Facts here come from Sume's Image API page and the catalog source, read on 2026-10-05. The honest limit: a generated basket shows items placed by a model, so use it as a mockup unless the contents match what you ship.
How many references can a basket use?
Most edit-capable rows take up to 10 references; the two ChatGPT Image 2.5 rows take 16. References must be public HTTPS URLs; Sume rejects localhost, private-network and non-HTTPS URLs before submission.
| Model on Sume | Reference limit | Notes |
|---|---|---|
openai/gpt-image-2.5 | 16 | Also mask_url and background |
openai/gpt-image-2.5-sunburst | 16 | Same limits and price |
| Most other edit rows | 10 | For example Nano Banana 2 |
ideogram/ideogram-v4.5 | 5 | First image is the source |
How do I send six items?
List the items in the prompt in the same order as the references so the model knows which photo is which.
import os, requests
body = {
"model": "openai/gpt-image-2.5",
"prompt": "A wicker gift basket on a kitchen table holding the six items from the reference photos in order: jam jar, tea tin, shortbread box, candle, soap bar, wool socks. Keep each item's label and shape. Soft daylight, no added text.",
"aspect_ratio": "4:5",
"input_references": [
{
"type": "image_url",
"image_url": {
"url": "https://example.com/item-1.jpg"
}
},
{
"type": "image_url",
"image_url": {
"url": "https://example.com/item-2.jpg"
}
},
{
"type": "image_url",
"image_url": {
"url": "https://example.com/item-3.jpg"
}
},
{
"type": "image_url",
"image_url": {
"url": "https://example.com/item-4.jpg"
}
},
{
"type": "image_url",
"image_url": {
"url": "https://example.com/item-5.jpg"
}
},
{
"type": "image_url",
"image_url": {
"url": "https://example.com/item-6.jpg"
}
}
]
}
r = requests.post(
"https://api.sume.com/v1/images",
headers={"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"},
json=body,
timeout=60,
)
if r.status_code == 200:
out = r.json()
for img in out["data"]:
print(img["url"])
print("billed USD:", out["usage"]["cost"])
elif r.status_code == 202:
print("still running, poll:", r.json()["data"]["status_url"])
else:
print(r.status_code, r.text)What should I check?
- Count the items; a missing sock means regenerate.
- Zoom into each label; the model may redraw printed text, so use the real item photo for a listing.
- If
usage.costis higher than expected, the size or quality is above the 1024 high default. - Use
mask_urlto fix one region after the first pass instead of regenerating the basket.
Sources
Related posts
More in Models
- AI greeting card front art on Qwen Image Max: ratio and price check
Qwen Image Max on Sume gives card-front art in 3:4, 4:5 or 2:3 portrait; read the catalog's n range and the billed usage.cost before pricing a card line.
- AI photo booth strip from one selfie: a 1:4 Nano Banana 2 edit
A four-frame photo strip fits the 1:4 ratio that Nano Banana 2 lists on Sume; one selfie reference and one call cost $0.10 billed per strip.
- AI photo edit came back a different size: four causes on Sume
A different edit size on Sume comes from four things: a shape request, a pixel string snapped to a ratio, the larger 1K edit size, or no aspect_ratio auto.
- AI tattoo flash sheet: 12 designs in one Ideogram V3 image, sliced
One Ideogram V3 image holds a 3x4 sheet of 12 flash designs for $0.075 billed; slice it into 12 files in Pillow instead of paying for 12 calls ($0.90).
Written by Sume