Christmas tree lot flyer art with GPT Image 2.5: quote every line

Tree lot flyer on GPT Image 2.5: custom 1536x2048 is legal, quality defaults to high, and usage.cost shows the billed price.

5 min readSume
All posts

To make a Christmas tree lot flyer, call openai/gpt-image-2.5 with the headline and hours in quotes, a 3:4 aspect_ratio or a custom image_size such as 1536x2048, and leave quality at its default of high. Price depends on quality and size, so read usage.cost on the response, which is the billed amount at list times 1.25.

Facts here come from Sume's Image API page and the catalog source, read on 2026-10-05. A lot flyer is mostly words (the lot name, the date range, the hours), so the first job is to choose a model that is documented to take quoted text and a size that is legal for it.

Which size and quality settings are legal?

For custom pixels on ChatGPT Image 2.5 both edges must be multiples of 16, the longest edge is at most 3840, the aspect ratio is at most 3:1, and the total is between 655,360 and 8,294,400 pixels. 1536x2048 passes all four tests: 1536 and 2048 are both multiples of 16, and the area is 3,145,728 pixels.

ChatGPT Image 2.5 limits for a flyer (read 2026-10-05)
SettingValue on SumeWhy it matters
Model idopenai/gpt-image-2.5Flare variant; Sunburst is a second id
qualityauto, low, medium, high, xhigh, max; default highHigher tiers cost more
aspect_ratioIncludes 3:4, 4:5 and 9:16Portrait flyer shapes
image_sizeCustom WxH, multiples of 16Takes priority over aspect_ratio
Billed priceRead usage.costList x 1.25, varies by quality and size
Reference imagesUp to 16For a lot logo or a map

How do I send the flyer text?

Quote each line exactly and say how many times it appears. Do not ask the model for a phone number or address you cannot proofread; set those in your layout tool. This call asks for three quoted lines on a portrait canvas.

import os, requests

body = {
    "model": "openai/gpt-image-2.5",
    "prompt": "Poster for a Christmas tree lot. Title in large letters: \"PINE HILL TREE LOT\". Under it: \"Fresh trees, Nov 28 to Dec 23\". Illustrated fir trees and string lights, no other text.",
    "image_size": {
        "width": 1536,
        "height": 2048
    },
    "quality": "high"
}
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 proof before printing?

  • Read every word at full size; compare each quoted line character by character with your copy.
  • Print sizes need pixels: see Sume's pixel-per-inch posts before choosing a trim size.
  • If the title is wrong, regenerate with the same quoted line rather than editing it in a raster tool.
  • Keep the date and hours in code or layout software for the final file so a typo costs nothing.

Sources

Related posts

More in Models

All Models posts

Written by Sume