---
id: "6.5"
title: "Image and video makers"
dept: ai-and-models
status: draft
owner: Param
branded: false
last_verified: 2026-10-26
sources:
  - "brew origin/main b91e364: jam2/engines.js, data/engines.json, data/higgsfield-routes.json, data/studio-styles.json, jam2/studio.js:1-5 and 114-151, jam2/creative.js:95-131, media.js:1-8 and 50-59, vertex-media.js:53-85, server.js:118, 186-245, finals.js:1-13 and 130-160, deploy.sh:21 and 37-41"
  - "memory brew-sloosh-finals, brew-jam-v2, brew-viral-remakes, brew-draft-quality, brew-setup-v2, brew-pro-switch-and-flush, treg-usage-rules, ugc-factory-pipeline, no-spend-while-building"
---

# Image and video makers

## Answer

Which engine makes each picture, film and voice in Brew, in what order they fall back, what each costs, what each is good at, and the rule that drafts are cheap and automatic while finals are paid, quoted and made only on a person's yes.

## Today

### Three tiers of making

| Tier | When it runs | Makers | Paid how |
|---|---|---|---|
| Drafts | Automatically, for cards and jams | Vertex Gemini image, Veo, Gemini TTS, OpenAI as fallback | Google credits, capped per day [src: brew/media.js:1-8] [src: brew/deploy.sh:21] |
| Studio makes | On a person's yes to a shown price | Higgsfield first where routed, Vertex second, Brew's own cut-out | Dollars, `confirmUsd` required [src: brew/jam2/studio.js:1-5] [src: memory brew-jam-v2] |
| Finals | Behind Make the final, never from chat | Sloosh over MCP, Gemini or Veo fallback | Sloosh credits, quote first, the team's yes [src: brew/finals.js:1-13] [src: memory brew-sloosh-finals] |

- Assets are never made through treg; they run on our own keys [src: memory treg-usage-rules] [src: brew/media.js:1].
- Sloosh never sits in a draft chain [src: brew/media.js:3] [src: memory brew-sloosh-finals].

### Draft chains

| Kind | Order | Source |
|---|---|---|
| Picture | `gemini-2.5-flash-image`, then `gemini-3-pro-image`, then OpenAI `gpt-image-1`; GPT Image goes first when the jam's image chip picks it, but never with a look reference | [src: brew/server.js:118] [src: brew/server.js:191] [src: brew/server.js:240-245] |
| Video | `veo-3.1-fast-generate-001`; a filtered clip is tried once with the plainest motion; an outage or quota moves to Veo 3.1; a priced job never falls to the dearer Veo | [src: brew/vertex-media.js:70] [src: brew/media.js:50-59] |
| Voice | `gemini-2.5-flash-tts`, voice Kore by default, then OpenAI TTS | [src: brew/vertex-media.js:53] [src: brew/media.js:6] |
| Music | `lyria-002` in us-central1 | [src: brew/vertex-media.js:62] |
| Cut-out | Brew's own imgly cut-out in a worker, free; then Gemini on white | [src: brew/jam2/engines.js] [src: brew/data/engines.json] |

### Studio routing

Partners are interchangeable; `data/engines.json` orders them per capability, and a partner that is not connected is skipped, never faked [src: brew/jam2/engines.js:1-9].

| Capability | Order | Source |
|---|---|---|
| still.scene | vertex, higgsfield, sloosh | [src: brew/data/engines.json] |
| still.shot | higgsfield, vertex | [src: brew/data/engines.json] |
| still.full | sloosh, higgsfield, vertex | [src: brew/data/engines.json] |
| still.edit | vertex, higgsfield | [src: brew/data/engines.json] |
| still.extend, still.harmonize | vertex | [src: brew/data/engines.json] |
| still.tryon | sloosh, fal | [src: brew/data/engines.json] |
| video.shot | higgsfield, vertex, sloosh | [src: brew/data/engines.json] |
| video.ugc | higgsfield, sloosh, heygen | [src: brew/data/engines.json] |
| video.avatar | heygen, higgsfield | [src: brew/data/engines.json] |
| voice.tts | elevenlabs, vertex | [src: brew/data/engines.json] |
| upscale | fal, sloosh | [src: brew/data/engines.json] |

- fal, HeyGen and ElevenLabs are not connected; the router skips them [src: brew/jam2/engines.js:8-9].
- Higgsfield goes live once `HF_API_KEY_ID` and `HF_API_KEY_SECRET` exist in Secret Manager; deploy adds them only if the secret exists [src: brew/deploy.sh:37]. On 23 Oct the Higgsfield API was funded with $100 and the keys were not yet in Secret Manager [src: memory brew-jam-v2].

### Higgsfield jobs Brew picks

A brand never chooses a model; Brew picks per job [src: brew/data/higgsfield-routes.json].

| Job | Model | Strength | Price on file |
|---|---|---|---|
| Product shot | marketing-studio/image/flare, 2K; 1K preview; 4K premium | Keeps the product from up to 16 references; kept a 3-item kit exact where Gemini 3 Pro Image did not, 23 Oct | $0.03 1K, $0.10 2K, $0.20 4K |
| Ad concepts | higgsfield/ads-studio/v1.0 | Whole ad concepts from a brief | $0.12 an image |
| Type poster | ideogram/v4.0 | Sets long text correctly | from estimate |
| Brand graphic | recraft/v4.1/pro | Clean graphics in set colours | from estimate |
| People, no product | higgsfield-ai/soul/v2 | Natural editorial people | from estimate |
| Image edit | alibaba/qwen-image-3/edit | Edits by instruction | from estimate |
| Product motion | kling-video/v3.0/pro image-to-video; std as preview | Keeps the first frame's product, native 1080p | about $0.08 a second, $0.39 for 5 s on 23 Oct |
| Shot from references | kling-video/o3/image-reference | Holds identity | about $0.07 a second |
| UGC video | bytedance/seedance-2.0; 2.5 as premium | Holds the product and a person while talking | about $0.30 and $0.46 a second at 720p |
| Viral short | bytedance/seedance-2.5 reference-to-video | Up to 30 s with sound | from estimate |
| Video restyle | higgsfield/genjutsu/object-swap | Swaps an object, keeps motion | from estimate |

### Studio styles

- The library is `data/studio-styles.json` plus Higgsfield's own ad presets [src: brew/jam2/studio.js:25-31].
- Image groups: product shot with 13 styles, Higgsfield ads presets, marketplace with 4, graphic with 3, Amazon A+ with 5 [src: brew/data/studio-styles.json].
- Video groups: UGC with 6 styles of 10 to 12 s, motion with 9 of 5 s, recreate with 1, TikTok with 3 including a 30 s viral short [src: brew/data/studio-styles.json].
- Studio opens on three styles picked from the card's angle and recipe [src: brew/jam2/studio.js:34-60].
- Each style has one example picture made once on a neutral bottle: 43 made for $1.64 [src: memory brew-setup-v2].

### Sloosh finals

- Models on Sloosh: Nano Banana Pro, Nano Banana 2, GPT Image 2.5, Flux 2 Pro at 1K only, Ideogram 4.5, Seedance 2.5 and 2.0, Gemini Omni; no Veo [src: memory brew-sloosh-finals].
- When Sloosh cannot quote an image, the same button makes it on Gemini at zero credits, labelled; a video falls back to Veo on a Gemini still; Spaces have no fallback [src: brew/finals.js:8-13].
- A reel over the day's room is asked one resolution down, never under 720p, before Veo [src: brew/finals.js:155-160].

### Strengths and lessons

- Nano Banana Pro sets the words in the picture, so the Studio overlay must not set them again [src: memory brew-sloosh-finals].
- Vertex ignores a 2K image size; multi-item kits failed fidelity on Gemini 3 Pro Image [src: memory brew-jam-v2].
- Veo's filter reacts to people, words and fast action; sleep words with a woman on camera got the output deleted; some generated faces are refused on input; Veo standard filtered far more than fast [src: brew/media.js:51] [src: memory ugc-factory-pipeline].
- Seedance takes a start frame or references, not both; Kling needs a start frame; Omni, Grok and MiniMax refuse any sound setting [src: memory brew-sloosh-finals].
- The 360 turn invents the back label when no photo shows it [src: memory brew-jam-v2].
- A UGC run once cast a Western presenter for an Indian brand; art direction now gets the market [src: memory brew-jam-v2].

## Tomorrow

| Item | Version | Tag |
|---|---|---|
| Drafts free and automatic, finals and Studio makes priced and on a yes | v1 | Stays |
| Partner order as data in engines.json, no code change to swap | v1 | Stays |
| Higgsfield keys in Secret Manager, so still.shot and video run on their first choice | v1 | Changes |
| One partner bench: the same 10 briefs on each partner, scored by the eval set, before an order changes | v1 | New |
| An upscaler for print and big screens | v2 | New |
| A real back-of-pack photo or no 360 turn | v1 | Changes |
| Posting and scheduling a made piece on the brand's channels | v2 | New |
| Vendor names on founder screens | v1 | Goes [src: brand-directions/book/content/c2.js] |

## How we do it

1. Change partner order in `data/engines.json`, never in code [src: brew/data/engines.json].
2. Before a new Sloosh call, read `data/sloosh-tools.json`; re-run the probe when Sloosh changes a schema [src: memory brew-sloosh-finals]:
   ```bash
   node tools/sloosh-probe.mjs
   ```
3. A new style needs its example picture, which is paid; ask first [src: memory brew-setup-v2]:
   ```bash
   node tools/style-examples.mjs --only <id>
   ```
4. Never run paid generations while building; verify with mock runs and ask before one minimal paid probe [src: memory no-spend-while-building].
5. Test paid Studio and Sloosh video on Arata, Nutrova or Puma India with the team's yes, never on Cozy [src: memory brew-jam-v2] [src: memory brew-viral-remakes].

## Numbers

| Metric | Definition | Value | Source |
|---|---|---|---|
| Draft picture | Vertex still | $0.04, about $0.039 on Flash | [src: brew/data/engines.json] [src: brew/deploy.sh:21] |
| Pro still | Vertex gemini-3-pro-image | $0.14 | [src: brew/data/engines.json] |
| Draft video | Veo per second | $0.15 | [src: brew/data/engines.json] |
| Voice | per line | $0.002 | [src: brew/data/engines.json] |
| Studio static ad | art direction, 2 shots, critic | about $0.28 an ad | [src: memory brew-jam-v2] |
| Studio measured on Arata, 23 Oct | product shot, preset, Kling 5 s, Seedance UGC 10 s | $0.10, $0.10, $0.40, $3.02 | [src: memory brew-jam-v2] |
| Sloosh image final | 4:5 2K Nano Banana Pro | 2.01 credits | [src: memory brew-sloosh-finals] |
| Sloosh reel | Seedance 2.5, 9:16, 720p, 13 s | 45.071 credits | [src: memory brew-sloosh-finals] |
| Sloosh viral reel, Arata | Seedance 2.5 with clip reference | 80.8 credits | [src: memory brew-viral-remakes] |
| Fallback rate | Share of drafts made by a fallback provider | Proposed | media.js `tried` |
- Brew calls Higgsfield's keyed REST API (84 workflows). Marketing Studio video modes, the product-photoshoot and marketplace-card prompt helpers, audio, upscale, background removal, Nano Banana, Veo, Seedream and GPT Image 2.5 are CLI or MCP only, on a personal login; the terms make one login for many brands risky [src: memory brew-higgsfield-wiring].
- The catalog refresh (`tools/hf-catalog.mjs`) refuses to write an empty or shrunken catalog, or one missing a routed workflow [src: brew/tools/hf-catalog.mjs] [src: git 91c392b].

## Open

1. **Higgsfield keys.** Proposal: add `HF_API_KEY_ID` and `HF_API_KEY_SECRET` to Secret Manager so Studio runs on its first choice, with the existing per-make price and yes.
2. **What is a Sloosh credit in dollars?** No source gives it. Proposal: write the plan price into Finance and show finals in dollars to the team.
3. **Sloosh or Higgsfield for finals?** Both make finals-grade work. Proposal: run the partner bench on 10 briefs and keep the cheaper one that passes the eval bar.
4. **Higgsfield Enterprise for the CLI-only tools?** Needs a word with Higgsfield sales before Brew wires Marketing Studio video or audio. Waits on Param [src: memory brew-higgsfield-wiring].
