One payload,
every model.
Send one request. The same options, the same shape, the same task — Mynth routes it to any model in the catalog and hands back finished media. No adapter per provider, no polling, no relearning each API.
const task = await mynth.image.generate({model: "openai/gpt-image-2",prompt: "obsidian queen, rim light",size: "auto",});What stays the same
Seven fields cover the common case on every model. Anything a model can't take natively, Mynth adapts — so the request shape never changes when you swap the model line.
Model
Any id from the catalog, or "auto" and Mynth picks one for the task.
modelPrompt
One string. Same field on every model, passed straight through as the positive prompt.
promptNegative prompt
A separate snake_case field — sent when set, dropped when omitted. Models without negative support ignore it cleanly.
negative_promptMagic prompts
Set magic_prompt: true and rough ideas get rewritten into production prompts before the model sees them.
magic_prompt: trueSize
"auto" anywhere, or an aspect ratio string with an optional scale tier — "16:9" or { aspectRatio, scale }. Preset shorthand strings work too.
size: "auto" | "16:9"Inputs
Reference images with a kind Mynth resolves — person, garment, pose, reference, source.
inputs[]Content rating
Opt in with a flag; the level lands on the task, one vocabulary everywhere.
rating: trueHow we adapt
Unification means we translate, not flatten. When a model can't take an option as written, Mynth resolves the closest thing it can — and tells you the result on the task.
Auto size
Routed to the model's own auto size where it has one; where it doesn't, Mynth picks an optimal default — so every model in the catalog answers size: "auto".
"auto" → every modelAspect ratio + scale
Matched to an exact preset when the model offers it. When it doesn't, Mynth resolves the closest ratio that keeps orientation, with the closest scale tier.
closest matchInputs
Each image's kind is resolved against the active model's contract — validated up front, not four seconds into a run.
kind resolvedsize: "21:9"bytedance / seedream-5.0-lite
declares 21:9 natively
→ 21:9openai / gpt-image-2
no 21:9 preset — closest landscape kept
→ 16:9The honest trade-off
A single payload across every model is a real choice, not a free one. These are the sacrifices that make it possible — stated plainly, because surprise is worse than limitation.
Aspect ratio isn't guaranteed
Request a ratio the model doesn't offer and Mynth keeps the closest one that preserves orientation. The output's real ratio is on the task — never assume it back.
closest, not exactProvider-native levers aren't exposed
LoRAs, exact step counts, sampler names, provider-specific style flags — Mynth unifies a deliberate small set, not every dial each provider ships.
not surfacedAdvanced use cases belong elsewhere
If you need pixel-perfect control over one provider's every parameter, use that provider's API or a conventional image-generation API. We optimize for the common case, not every case.
use a raw APIOn the roadmap
We're planning a proxy mode with bring-your-own-key: the request passes straight to your provider account with that provider's full native option surface intact — every LoRA, every sampler, every flag — for the cases the unified payload doesn't reach.
It's on the roadmap, not the API. If you'd use it, say so — the loudest features ship first. Tell us on Discord and we'll move it up.