AI trade show booth mockup: put your graphics on a booth photo

Show your graphics on a booth wall before printing: a booth photo, your artwork as the second reference, and one Sume edit call with a mask for the panels.

4 min readSume
All posts

A booth shell and the graphics

Exhibitors approve large-format prints from a mockup. Use a photo of the empty shell or a previous booth as image 1 and the new back-wall artwork as image 2, and ask for the artwork on the back wall only.

Mask the back wall with mask_url if the prompt alone redraws the floor or neighbors. Sume lists the field on ChatGPT Image 2.5 only.

Sume Image API docs list ChatGPT Image 2.5 as openai/gpt-image-2.5 (Flare) and openai/gpt-image-2.5-sunburst. OpenAI's guide says to choose Sunburst where editing precision matters most and Flare for fast everyday generation, so these edits use Sunburst.

Say which wall and what stays

Name the surface: the central back wall, full height, edge to edge. Say the carpet, counter, lights and neighboring booths stay as photographed. If the artwork has a headline, check it character by character afterward.

import os
import requests

REFS = [
    "https://example.com/booth.jpg",
    "https://example.com/backwall.png",
]
resp = requests.post(
    "https://api.sume.com/v1/images",
    headers={"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"},
    json={
        "model": "openai/gpt-image-2.5-sunburst",
        "prompt": "Image 1 is a booth photo, image 2 is back-wall artwork. "
                  "Show image 2 on the central back wall, full height, edge "
                  "to edge, with matching perspective. Keep carpet, counter, "
                  "lights and neighboring booths unchanged.",
        "aspect_ratio": "auto",
        "mask_url": "https://example.com/backwall-mask.png",
        "input_references": [
            {"type": "image_url", "image_url": {"url": u}} for u in REFS
        ],
    },
    timeout=60,
)
print(resp.status_code)
print(resp.json())

What to hand to the printer

The render is a preview. The printer needs the original artwork at the right size.

Booth mockup handoff (Sume docs and OpenAI guide, read 2026-10-03)
ItemSource
Layout agreementThe render
Artwork of recordYour original file
Headline spellingChecked on the original, not the render
Maskalpha channel, same size and format as the photo

Proof the copy, not the render

OpenAI's guide says its image model can still struggle with precise text placement and clarity. Treat every word in the render as unproven and proof the real file.

Quality and the first try

On ChatGPT Image 2.5 the quality field takes auto, low, medium, high, xhigh or max, and leaving it out means high. For a first pass at a layout idea, a lower tier is a reasonable way to look at composition before you pay for a final render.

Keep the source photo, the prompt and the response together for each option. That makes it easy to rerun the one you pick at a higher quality tier.

Sync, jobs and the bill

Treat the response code as the switch. 200 means the image body is in the response. 202 means a job was created because the 30-second wait ran out, and the image is read later from GET /v1/jobs/{id}/result.

A completed image is billed in full and a failed or cancelled one is not. The charge shown in usage.cost is provider list price times 1.25, so you can log it per edit and sum a batch from those numbers.

Sources

Related posts

More in Use cases

All Use cases posts

Written by Sume