AI tabletop RPG portraits via API: keep one art style on Sume
A party of RPG portraits in one art style: make an anchor portrait, then pass its URL as an input reference per character. $0.0375 each on Flux 2 Pro.

A party of tabletop RPG portraits looks coherent when every portrait is made against the same style anchor. With the Sume image API that means one text-to-image call for the anchor, then one call per new character with the anchor passed in input_references and a prompt that says "same style as the reference, new subject". Sixteen rows of the catalog accept references; this post uses Flux 2 Pro at $0.0375 per image, so a six-character party costs 7 calls, $0.2625, before any rerolls.
This is the pattern; Sume does not promise identical faces or perfect style lock, and the results depend on your prompts. Check each portrait and re-roll the ones that drift.
Rows that take references
Cheapest reference-capable rows first (all accept at least ten references except Ideogram 4.5 at five).
| Model | Catalog id | Per image | References |
|---|---|---|---|
| Grok Imagine | x-ai/grok-image | $0.025 | 10 |
| Qwen Image | qwen/qwen-image | $0.025 | 10 |
| Seedream 4.0 | bytedance-seed/seedream-4 | $0.0325 | 10 |
| Flux 2 Pro | black-forest-labs/flux.2-pro | $0.0375 | 10 |
| Seedream 5.0 Lite | bytedance-seed/seedream-5-lite | $0.04375 | 10 |
| Seedream 4.5 | bytedance-seed/seedream-4.5 | $0.05 | 10 |
| Flux 2 Flex | black-forest-labs/flux.2-flex | $0.0625 | 10 |
| ChatGPT Image 2.5 | openai/gpt-image-2.5 | $0.06588 | 16 |
Anchor, then party
The script makes the anchor, then one portrait per character, each referencing the anchor. Reference URLs must be public HTTPS; the data[].url Sume returns is a hosted URL you can pass straight back. A call that is still running after the 30-second wait returns 202 with a job envelope instead of 200, so check the status code before reading data; see Jobs and results.
import os
import requests
HEADERS = {"Authorization": f"Bearer {os.environ['SUME_API_KEY']}"}
URL = "https://api.sume.com/v1/images"
MODEL = "black-forest-labs/flux.2-pro"
def make(prompt, refs=None):
body = {"model": MODEL, "prompt": prompt, "aspect_ratio": "1:1"}
if refs:
body["input_references"] = [
{"type": "image_url", "image_url": {"url": u}} for u in refs
]
r = requests.post(URL, headers=HEADERS, json=body, timeout=60)
r.raise_for_status()
if r.status_code == 202:
raise RuntimeError("still running, poll " + r.json()["data"]["status_url"])
return r.json()["data"][0]["url"]
anchor = make("painted fantasy portrait of a human ranger, bust, parchment-toned background, heavy brush strokes")
print(anchor)
for subject in ["a dwarf cleric", "an elven wizard", "a halfling rogue"]:
print(subject, make("same style as the reference, new subject: " + subject, [anchor]))Prompt habits that help
- Put the style in the anchor prompt (medium, palette, framing) and repeat only the subject afterwards.
- Ask for the same framing every time (bust, three-quarter view) so the set tiles in a character sheet.
- Keep names out of the image; add labels in your own layout tool.
- Use
n: 4on a character that matters, then pick one. Four images cost four times the price.
Budget
Ten characters with three rerolls each is 31 calls, about $1.16 on Flux 2 Pro. On Qwen Image at $0.025 it is $0.775. A failed call is not billed, so retrying after an error does not add to the total.
Sources
Related posts
More in Use cases
- AI tarot deck via API: 78 cards at 2:3, cost and consistency on Sume
A 78-card deck at 2:3 costs $2.93 on Flux 2 Pro and $3.90 on Seedream 4.5 at Sume list prices. How to keep the style consistent with one anchor reference.
- AI time-lapse video prompt for Gemini Omni Flash on Sume
Write a time-lapse prompt for Gemini Omni Flash 1.1: Google's guide on lighting and camera, a locked-off frame, 10-second limit, and a request to test at 360p.
- AI tote bag mockup: design file plus blank bag as 2 references
Make a tote bag mockup with the Sume image API: send a blank-bag photo and your design as two references, keep the text yours, and compare the price per mockup.
- AI trading card art: generate at 2:3, then crop to a 5:7 card
Sume has no 5:7 ratio. Ask for 2:3, keep art out of the margins, and crop 6.7 percent off the height. Models, request and crop math.
Written by Sume