Tote bag mockup with an AI image API: your logo on a canvas bag

Send your logo as a reference to GPT Image 2.5 on Sume and ask for a canvas tote on a plain studio set. Check the logo against the original before you list it.

5 min readSume
All posts

To make a tote bag mockup with an AI image API, host your logo at a public https URL, send it in input_references to GPT Image 2.5 on Sume, and ask for a plain canvas tote with that logo centered on the front. Then compare the logo in the result with your original; a model may redraw it, so treat the output as a concept image, not proof art.

fal lists GPT Image 2.5 as OpenAI's default image model, with natural lighting and rich textures (read 2026-10-06, fal). On Sume it takes up to 16 references, as documented in the Image API docs. Reference URLs must be public https links; private addresses are rejected.

What to put in the prompt

Describe the bag, the surface and the camera, and refer to the logo as the attached image. Keep the scene simple: one bag, one background, soft light. A cluttered lifestyle scene gives the model more chances to distort the logo.

Tote mockup prompt parts, read 2026-10-06
PartExampleReason
Objectnatural canvas tote bagSets the product
Logothe attached logo, centered on the frontTies the reference to a place
Sceneplain light grey studio backgroundKeeps attention on the bag
Lightsoft daylight from the leftGives believable shading
Ratio4:5Fits a product card

The request

The script sends the logo and prints the image URL. Change the colour words for each colourway.

import os
import requests

body = {
    "model": "openai/gpt-image-2.5",
    "prompt": (
        "Product photo of a natural canvas tote bag standing upright on a "
        "plain light grey studio background. Place the attached logo "
        "centered on the front, unchanged. Soft daylight from the left."
    ),
    "input_references": [
        {"type": "image_url", "image_url": {"url": os.environ["LOGO_URL"]}}
    ],
    "aspect_ratio": "4:5",
    "quality": "medium",
}
r = requests.post(
    "https://api.sume.com/v1/images",
    headers={"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"},
    json=body,
    timeout=60,
)
print(r.status_code)
print(r.json()["data"][0]["url"] if r.status_code == 200 else r.text[:300])

Mockup checklist

Review the mockup against this list before it goes on a product page. A mockup is a promise about a physical item, so it should not show anything the bag cannot deliver.

  • The logo is your real logo, not a redrawn approximation.
  • Its colors match your print file within reason.
  • The print area on the bag is plausible for the printer you use.
  • The bag, straps and stitching look like the product you actually sell.
  • The background does not imply a brand or a person that you do not have rights to.

Cost and iteration

Plan for a few tries per bag color. At GPT Image 2.5 medium, check the endpoint pricing line for the size you pick, and run the first pass at low quality to settle the wording. Keep the prompt that worked beside the logo file, so the next colorway is one command, not a new search for wording.

Several colorways without drift

A common need is the same bag in four colors. Keep the prompt identical except for the color word, keep the logo reference the same, and keep the ratio fixed. That gives you a matching set where only the fabric changes. Generate each color at low quality first to check the wording, then run the final at medium, and open each result next to the original logo before it goes on a page.

Do not expect every run to place the logo at the same height. If the position matters, say where it sits, such as a hand's width below the strap line, or composite the logo yourself so every color has it in exactly the same place.

Where a mockup fits

A generated mockup is good for early listings, social posts and checking whether people like a design before you pay for a print run. It is not a substitute for a sample from your printer, which shows how ink sits on real fabric. Say plainly in your listing which images are illustrations if they differ from the item that ships.

If the logo is altered, you have two options. Ask again with a stronger line such as keep the logo exactly as in the reference, or generate the bag with an empty front and paste the real logo with Pillow. The second route is the one to use when the logo has to be exact, as for a printer's proof. The same split between model art and code appears in AI product photos from a white background.

Sources

Related posts

More in Use cases

All Use cases posts

Written by Sume