AI Character Reference Bank — Consistent Characters
Pricing
from $150.00 / 1,000 character banks
AI Character Reference Bank — Consistent Characters
Same character, every shot. Describe a character once and get a matching reference set: portrait, three-quarter, full body, side profile and expression sheets, plus a reusable character-bible prompt that keeps the face, hair, outfit and colors on-model. $0.15 per character, flat.
Pricing
from $150.00 / 1,000 character banks
Rating
5.0
(3)
Developer
Dami's Studio
Maintained by CommunityActor stats
0
Bookmarked
5
Total users
1
Monthly active users
17 hours ago
Last modified
Categories
Share
AI Character Reference Bank
Give it a one-line character description and it generates a matching set of reference images (portrait, three-quarter, full body, side profile, and expression sheets) plus a reusable "character bible" prompt you can paste into later jobs. It's built for people who need the same character to show up identically across many shots: comics, faceless videos, game concepts, storyboards.
How it works
For each character it writes a character-bible prompt from your description and shared style, then sends that same bible to OpenAI's gpt-image-1 once per requested view, appending the view instruction (front portrait, 3/4 angle, full body, side, or an expression). Reusing one locked description per view is what keeps the face, hair, clothing, and colors consistent across the set.
Input
You bring your own OpenAI key. Nothing is strictly required by the schema. Run it without a key and it returns one clearly-labeled SAMPLE record showing the output shape instead of real images — that row is billed like any other (see Pricing).
| Field | Required | Notes |
|---|---|---|
characters | yes (in practice) | Array of descriptions. Plain strings, or objects { name, description }. The name becomes the file slug. |
views | no | Which views/expressions to render. Any of portrait, threequarter, fullbody, side, happy, angry, sad, surprised. Defaults to portrait, threequarter, fullbody. |
style | no | Shared art style applied to every character so the whole set matches. Defaults to a clean studio-portrait style. |
aspectRatio | no | 1:1, 9:16, or 16:9. Defaults to 1:1. |
quality | no | gpt-image-1 quality: low, medium, high. Lower is cheaper and faster. Defaults to high. |
openaiApiKey | yes (in practice) | Your OpenAI key with gpt-image-1 access. Stored as a secret. |
baseUrl | no | Override for an OpenAI-compatible endpoint. Defaults to https://api.openai.com/v1. |
Output
Each character is one dataset record. The PNG files land in the run's key-value store, and the record links to them. Key fields per record: name, slug, description, characterBible (the reusable prompt), and references, an array of { view, imageKey, imageUrl }. If a particular view fails, that entry carries an error instead of an image and the rest still run — the character's record is written either way, and the charge is per record.
Example
{"characters": [{ "name": "Milo", "description": "a small brave fox cub with a red scarf and bright green eyes, cartoon style" }],"views": ["portrait", "threequarter", "fullbody", "happy", "angry"],"style": "consistent character design, clean studio background, soft even lighting","aspectRatio": "1:1","quality": "high","openaiApiKey": "sk-..."}
Pricing
$0.15 per dataset row, plus $0.0000125 each time a run starts, charged per GB of run memory — $0.00005 a run at this actor's default 4 GB.
One character is one row, so three characters cost $0.45 no matter how many views you ask for: the view count drives your OpenAI bill, not the Apify one. Two cases are worth knowing, because the charge is per row rather than per usable result:
- a keyless run writes one labelled SAMPLE row and costs $0.15, so the preview is not free;
- a character whose views all failed still gets a row (with
errorentries underreferences) and is still charged $0.15.
Pay per result, no subscription. OpenAI image costs are billed separately to your own key.
Notes
The character bible reduces drift but doesn't eliminate it. Across many views you'll still see small inconsistencies, so treat the set as strong references rather than a guarantee, and reuse the characterBible string verbatim in downstream prompts to stay on model.