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).

To make a tattoo flash sheet, generate one 3:4 sheet on ideogram/ideogram-v3 showing a 3-by-4 grid of small designs, then cut it into 12 files with Pillow. Sume lists Ideogram V3 at $0.06 per image, billed at list times 1.25 as $0.075, so the whole sheet costs $0.075 against $0.90 for twelve separate calls.
A flash sheet is a page of separate small designs an artist can choose from, which is what makes the one-image-then-slice approach work. Prices and parameters are from Sume's Image API page and the catalog source, read on 2026-10-05. Treat the designs as concepts for an artist to redraw; they are not stencils.
What does Ideogram V3 offer for a sheet?
Ideogram V3 lists 15 aspect ratios, including 3:4, 4:5 and the tall 1:3, and a public quality of low, medium or high that Sume maps to the provider's speed setting. The catalog row is edit-capable, so a chosen design can be sent back as a reference.
| Approach | Calls | Billed cost |
|---|---|---|
| One sheet of 12 designs, then slice | 1 | $0.075 |
| Twelve single-design calls | 12 | $0.90 |
| Three sheets for variety | 3 | $0.225 |
| Model id | ideogram/ideogram-v3 | Image API page |
How do I generate and cut the sheet?
Ask for a plain white background and clear gaps between designs, then cut by an even 3-by-4 grid. If the model's spacing is uneven, cut with a margin. The script reads the first result URL and crops 12 tiles.
import os, requests
from io import BytesIO
from PIL import Image
r = requests.post(
"https://api.sume.com/v1/images",
headers={"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"},
json={"model": "ideogram/ideogram-v3", "aspect_ratio": "3:4", "quality": "high",
"prompt": "Tattoo flash sheet, a 3 by 4 grid of 12 small separate black-ink designs: "
"dagger, rose, moth, swallow, anchor, key, snake, lantern, moon, "
"compass, sparrow, hand. White background, wide gaps, no text."},
timeout=60,
)
if r.status_code != 200:
raise SystemExit(f"{r.status_code}: {r.text}")
url = r.json()["data"][0]["url"]
sheet = Image.open(BytesIO(requests.get(url, timeout=60).content))
w, h = sheet.size
for i in range(12):
col, row = i % 3, i // 3
box = (col * w // 3, row * h // 4, (col + 1) * w // 3, (row + 1) * h // 4)
sheet.crop(box).save(f"flash-{i + 1:02d}.png")What can go wrong with a sliced sheet?
If the call takes more than 30 seconds it returns 202 and the body has no image list; the script above stops on anything but 200, and a production pipeline should poll the job instead. See the Jobs and results page for the result route.
- Count the designs; a sheet can come back with 11 or 13, and you must cut by what you got.
- Do not present generated designs as an artist's original flash without saying so.
- Ask the client for their own style reference if they need one; send it as an image reference.
- Pillow is not part of Sume; install it with
pip install pillow requests.
Sources
Related posts
More in Models
- AI video generator for YouTube: Sume models that do 16:9 at 1080p
Four Sume video models accept 16:9 at 1080p. Their per-second rates and the cost of a 5-second and 8-second B-roll clip at 1080p.
- AI video resolution on Sume: 360p, 480p, 720p, 768p, 1080p or 4K
Which Sume video models take which resolution, and the per-second price at each tier. 768p is a native tier for MiniMax, not a 720p alias.
- Ceramic mug product photos: Nano Banana Pro hero, draft on Banana 2
Draft a ceramic mug scene on Nano Banana 2 at $0.10, then render the hero on Nano Banana Pro at $0.1875 in 4:5; six mugs cost $1.725 in total.
- 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.
Written by Sume