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.

model

Prompt

One string. Same field on every model, passed straight through as the positive prompt.

prompt

Negative prompt

A separate snake_case field — sent when set, dropped when omitted. Models without negative support ignore it cleanly.

negative_prompt

Magic prompts

Set magic_prompt: true and rough ideas get rewritten into production prompts before the model sees them.

magic_prompt: true

Size

"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: true

How 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 model

Aspect 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 match

Inputs

Each image's kind is resolved against the active model's contract — validated up front, not four seconds into a run.

kind resolved
same request, two modelssize: "21:9"

bytedance / seedream-5.0-lite

declares 21:9 natively

→ 21:9

openai / gpt-image-2

no 21:9 preset — closest landscape kept

→ 16:9

The 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 exact

Provider-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 surfaced

Advanced 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 API

On 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.