Core concepts
Brand kits
What lives in a brand kit
The brand-kit hub is split into three groups in the sidebar: Brand Identity, SteadyShot, and Source Files.
- Colors — structured rows with hex, RGB, Pantone, role (primary / accent / background / secondary / digital), and a digital-only flag. WCAG contrast checker runs on the primary + accent + background combinations automatically.
- Typography — display, body, and mono fonts with weights and usage notes. Each font card shows a live preview using the font name as the CSS family (falls back to system if not installed locally).
- Logos & icons — multi-variant grid:
primary_dark,primary_light,icon,wordmark. SVG preferred, PNG/WebP/JPG also accepted. Each variant carries its own usage rules — rules starting with “Don’t / Never / Avoid” render with the red icon. - Voice & tone — a personality tag cloud (3-7 adjectives) plus Do/Avoid copy rules. Voice rules are short do/don’t sentences scoped to copy generation; the personality tags inject as guidance whenever a caption-style prompt fires.
- Image rules — visual do/don’ts, categorized (composition / color / character / lighting / motion / other). These are the visual equivalent of voice rules and prepend to every image generation.
- Art direction — three free-form fields:
illustration_style,photography_style, and a generalart_directioncatch-all. Brand-level art direction that overrides any character’s local style. - Characters — link existing SteadyShot characters to a brand kit. Each linked character carries brand-scoped metadata (personality tags, appearance notes, brand_status, avatar emoji) on top of its base identity.
- Prompt templates — reusable, parameterized recipes with
{variables}. Variables auto-detect in the editor as you type. Each template can optionally link to a character. - Asset library — every generation made against the kit, searchable + filterable by character or date. Click any tile for a lightbox with prompt, score, and download.
- Guidelines & docs — upload PDFs, ZIPs, SVGs, AI files. PDFs are parsed inline: hex codes get extracted and land in the Colors section with
source=“parsed”for user review. - Brand assets (legacy) — the V1 reference-image table (logo / product / packaging refs). Still active; new uploads land here when you upload via the legacy
/api/brand-kits/{id}/assetsendpoint.
How brand data weaves into every generation
When a request includes brand_kit_id, SteadyShot fetches the kit and folds everything stored on it into a single BRAND LOCK section that gets appended to the prompt:
BRAND LOCK — must be obeyed:
Brand: "Acme Coffee". Reference images include the official logo and
brand assets — they must appear EXACTLY as shown, not redesigned, not
garbled, not recolored.
Approved colors only: Midnight (#1B1B2F), Spark Orange (#FF6400), ...
Brand voice / style: Warm, premium, slightly playful.
Illustration style: Flat vector, no gradients, 2px stroke, 8px corner radius.
Photography style: Natural light, warm cast, real materials.
Art direction: Focal subject in left-third, negative space ≥30%.
Always: Subjects fill 60-80% of frame / Show characters mid-action.
Never: Combine more than 3 brand colors per image / Crop at the face.Fields that aren’t set are silently omitted from the block, so partial brand kits don’t pollute prompts with empty lines.
How brand + character compose
When you generate a scene with BOTH character_id and brand_kit_id:
- Brand references go first (logo + product + packaging, capped at 4) so they never get truncated by character references.
- Character references fill the remaining slots.
- QA scoring runs both rubrics in parallel (character consistency + brand consistency) and blends them with weights that favor brand fidelity slightly more when brand kit is present.
character_id entirely. Credit cost stays at 1.Creating one
UI: /brand-kit. The first time you visit, the page asks you to create or pick a kit, then drops you on the dashboard. Use the sidebar to fill in colors, fonts, logos, voice — anything you have. You don’t have to fill everything before generating; brand-locking gracefully skips empty fields.
API (V1 — broadly available):
# Create brand kit (V1 — works without beta access)
curl -X POST https://steadyshot.ai/api/brand-kits \
-H "Authorization: Bearer ss_live_xxx" \
-F name="Acme Coffee" \
-F logo=@logo.png \
-F palette='[{"name":"primary","hex":"#0055FF"},{"name":"accent","hex":"#FFC400"}]' \
-F brand_voice="Warm, premium, slightly playful"
# Upload a reference asset (product/packaging)
curl -X POST https://steadyshot.ai/api/brand-kits/{id}/assets \
-H "Authorization: Bearer ss_live_xxx" \
-F kind=product \
-F label=hero-cup-front \
-F image=@cup.png
# Generate a brand-only scene
curl -X POST https://steadyshot.ai/api/generate \
-H "Authorization: Bearer ss_live_xxx" \
-H "Content-Type: application/json" \
-d '{"brand_kit_id":"{id}","prompt":"hero shot on a wooden table at sunrise"}'
# Generate a character-with-brand scene
curl -X POST https://steadyshot.ai/api/generate \
-H "Authorization: Bearer ss_live_xxx" \
-H "Content-Type: application/json" \
-d '{"character_id":"{char_id}","brand_kit_id":"{kit_id}","prompt":"Luna serving an Acme Coffee espresso"}'/api/brand-kit/ (colors, fonts, logos, voice, image-rules, art-direction, templates, documents) are in private beta and not fully documented for external use yet. Beta partners can inspect them via the browser network tab while using the hub UI.Suggested workflow
- Upload your brand-guidelines PDF first (Guidelines & docs section). The parse pipeline extracts hex codes automatically and seeds the Colors section — saves you typing them out manually.
- Add 3-5 image rules covering composition + color usage. These have the biggest leverage on output quality because they inject into every prompt.
- Set art direction with a one-liner for illustration style (or photography style). Generations from this point forward default to that direction without you re-typing it.
- Link your characters from the Characters section so the asset library and prompt templates can reference them by ID rather than name.
- Save a few prompt templates for the campaigns you run regularly. Anyone on the team can re-run them with different variables without re-explaining the brand.