{"schema_version":1,"generated_at":"2026-07-12T07:05:13.292Z","source":"https://maginary.ai/docs/parameters.json","counts":{"total":53,"live":50,"dead":1,"reserved":2,"byCategory":{"composition":2,"seed":1,"style":4,"reference":6,"negative":1,"format":4,"quality":2,"edit":10,"outpaint":9,"video":4,"model":9,"meta":1}},"categories":{"composition":{"label":"Composition","blurb":"Shape and count of the output.","order":1},"seed":{"label":"Determinism","blurb":"Repeatable results.","order":2},"style":{"label":"Style","blurb":"How the image should feel.","order":3},"reference":{"label":"References","blurb":"Image / face / character references and their weights.","order":4},"format":{"label":"Format","blurb":"PNG / JPG / WebP / SVG.","order":5},"quality":{"label":"Quality tier","blurb":"Resolution tiers + legacy MJ knobs (mostly dead).","order":6},"negative":{"label":"Negative prompt","blurb":"What you don’t want.","order":7},"edit":{"label":"Editing","blurb":"Vary, refine, upscale, background removal, face restore.","order":8},"outpaint":{"label":"Outpaint","blurb":"Extend the canvas or zoom out.","order":9},"video":{"label":"Video","blurb":"Resolution, frame rate, duration.","order":10},"model":{"label":"Model triggers","blurb":"Force a specific model family.","order":11},"meta":{"label":"Meta","blurb":"Account / demo flags.","order":12}},"statuses":{"live":{"label":"live","hint":"reaches the model API and is honored on supported models","tone":"good"},"live-conditional":{"label":"live (conditional)","hint":"honored only on capable models; silently dropped elsewhere","tone":"warn"},"mostly-dead":{"label":"mostly dead","hint":"parses fine but only a couple of models act on it","tone":"warn"},"dead":{"label":"dead","hint":"parses & validates but the engine never sends it anywhere","tone":"bad"},"unimplemented":{"label":"reserved","hint":"accepted by the parser but explicitly errors — reserved for future","tone":"muted"}},"parameters":[{"name":"ar","aliases":["aspect"],"category":"composition","status":"live","kind":"ratio","desc":"Aspect ratio of the output. Accepts `w:h` or one of the named aliases.","values":["1:1","2:3","3:2","4:5","5:4","9:16","16:9","21:9","square","portrait","landscape","wide","ultrawide","vertical"],"default":"model-specific (usually 1:1)","support":{"models":["all image models","most video models"]},"examples":["cinematic portrait --ar 16:9","phone wallpaper --ar 9:16","poster art --ar 2:3"],"source":"sharedpy/parameter_definitions.py","sinceDate":"2025-07"},{"name":"1","aliases":["2","3","4"],"category":"composition","status":"live","kind":"flag","desc":"How many variations to return. `--1` through `--4`. Default is model-specific (usually 4 for txt2img, 1 elsewhere).","values":["--1","--2","--3","--4"],"support":{"models":["all image models","all video models"]},"examples":["a cyberpunk dragon --2","quick sketch --1"],"source":"sharedpy/parameter_definitions.py","sinceDate":"2025-08"},{"name":"seed","aliases":[],"category":"seed","status":"live","kind":"int","desc":"Freeze the RNG. Same seed + same prompt + same model = same image.","range":"0 – 4294967295","support":{"models":["all image models","all video models"]},"examples":["forest at dusk --seed 42","portrait --seed 99999"],"source":"sharedpy/parameter_validators.py:53","sinceDate":"2025-07"},{"name":"niji","aliases":[],"category":"style","status":"live","kind":"flag","desc":"Anime / illustration bias. Optionally consumes a version integer (`--niji 6`).","values":["--niji","--niji 4","--niji 5","--niji 6"],"default":"5 when no version is given","support":{"models":["anime-tuned models (auto-selected when --niji is present)"]},"examples":["catgirl mage --niji 6","ramen shop street scene --niji"],"source":"sharedpy/parameter_definitions.py:83"},{"name":"raw","aliases":[],"category":"style","status":"live","kind":"flag","desc":"Suppress the platform’s cinematic default styling. Closer to the underlying model output.","support":{"models":["models that honor the raw style hint"]},"examples":["pass photo --raw"],"source":"sharedpy/parameter_definitions.py:84"},{"name":"style","aliases":[],"category":"style","status":"live","kind":"string","desc":"Free-text style hint. Provider-specific; also accepts a small enum on Ideogram-family models.","values":["raw","cute","expressive","original","scenic","…or free text (≤50 chars)"],"support":{"models":["Ideogram v3","Recraft"]},"examples":["a fox --style expressive","brand mark --style \"clean bauhaus\""],"source":"sharedpy/parameter_validators.py:198"},{"name":"transparent","aliases":[],"category":"style","status":"live","kind":"flag","desc":"Capability flag: filter the candidate model pool to ones that produce native alpha / transparent backgrounds. Stacks with `--flagship`, `--sora`, etc.","support":{"models":["Ideogram v3 Transparent","Recraft SVG family"],"ops":["txt2img"]},"compat":["Stackable with model triggers.","Empty intersection (e.g. `--transparent` + a model that never supports alpha) → explicit error."],"examples":["app icon on transparent background --transparent"],"source":"sharedpy/parameter_definitions.py:138","sinceDate":"2026-05"},{"name":"sref","aliases":[],"category":"reference","status":"live-conditional","kind":"url-list","desc":"Style reference. Pass one or more image URLs; each may carry a per-URL weight via `::N`.","range":"weight per URL: 0 – 1000","support":{"models":["FofrStyleTransfer + style-reference-capable models"],"ops":["txt2img","img2img"]},"compat":["Silently ignored by models that don’t support style-reference (no error today).","Do NOT combine with `--vary` (mutually exclusive; not currently validated)."],"examples":["a knight --sref https://cdn.example.com/style.jpg","ancient temple --sref https://a.jpg::500 https://b.jpg::200"],"source":"sharedpy/param_parser.py:321"},{"name":"sw","aliases":[],"category":"reference","status":"live-conditional","kind":"float","desc":"Global style-reference weight. Used when style-reference-capable model is picked.","range":"0 – 1000","support":{"models":["style-reference-capable models"]},"examples":["portrait --sref https://x.jpg --sw 400"],"source":"sharedpy/parameter_validators.py:66"},{"name":"face","aliases":[],"category":"reference","status":"live-conditional","kind":"url","desc":"Face reference URL for face-restoration operations.","support":{"models":["face-restore-capable models"],"ops":["img2img"]},"examples":["restore face --restoreface --face https://cdn.example.com/me.jpg"],"source":"sharedpy/parameter_definitions.py:98"},{"name":"focus","aliases":[],"category":"reference","status":"live","kind":"string","desc":"Free-text region-of-focus hint for editing operations.","examples":["edit the eyes only --focus \"left eye\""],"source":"sharedpy/parameter_definitions.py:99"},{"name":"no","aliases":[],"category":"negative","status":"mostly-dead","kind":"string","desc":"Negative prompt — things you *don’t* want. Parser consumes every token up to the next `--`.","support":{"models":["Kling v2.1 (txt2vid)","Clarity Upscaler","FofrStyleTransfer"],"ops":["txt2vid","upscale"]},"compat":["Only 3 model families natively support a negative_prompt field today.","Also injected into the LLM prompt enhancer, so it still nudges other models — just not as a hard constraint."],"examples":["forest landscape --no watermark, text, low-quality --ar 16:9"],"source":"sharedpy/param_parser.py:362","note":"Parser was buggy pre-2026-03-03 — used to consume only the first word after `--no`. Now fixed.","sinceDate":"2025-07"},{"name":"png","aliases":[],"category":"format","status":"live","kind":"flag","desc":"Force PNG output.","support":{"models":["most image models"]},"examples":["icon --png"],"source":"sharedpy/parameter_definitions.py:76"},{"name":"jpg","aliases":["jpeg"],"category":"format","status":"live","kind":"flag","desc":"Force JPEG output.","support":{"models":["most image models"]},"examples":["photo --jpg"],"source":"sharedpy/parameter_definitions.py:77"},{"name":"webp","aliases":[],"category":"format","status":"live","kind":"flag","desc":"Force WebP output (used to preserve alpha end-to-end with `--transparent`).","compat":["If the provider can’t emit WebP, we fall back to PNG."],"support":{"models":["most image models"]},"source":"sharedpy/parameter_definitions.py:79"},{"name":"svg","aliases":[],"category":"format","status":"live-conditional","kind":"flag","desc":"Force vector SVG output.","support":{"models":["Ideogram v3 (SVG-capable)","Recraft SVG family"]},"examples":["logo mark --svg"],"source":"sharedpy/parameter_definitions.py:80"},{"name":"2k","aliases":[],"category":"quality","status":"live-conditional","kind":"flag","desc":"High-resolution image tier (~2048px on long side). Costs more credits.","support":{"models":["Nano-Banana Pro","Flux 2 Pro","Seedream 4"],"ops":["txt2img","img2img"]},"examples":["product hero shot --ar 16:9 --2k"],"source":"sharedpy/parameter_definitions.py:185","sinceDate":"2026-01"},{"name":"4k","aliases":[],"category":"quality","status":"live-conditional","kind":"flag","desc":"Ultra-high-resolution image tier (~4096px on long side). Costs more credits.","support":{"models":["Nano-Banana Pro","Flux 2 Pro","Seedream 4"],"ops":["txt2img","img2img"]},"examples":["cinematic still --ar 16:9 --4k"],"source":"sharedpy/parameter_definitions.py:186","sinceDate":"2026-01"},{"name":"removebg","aliases":[],"category":"edit","status":"live","kind":"flag","desc":"Run background removal on an input image.","support":{"models":["bg-removal models"],"ops":["img2img"]},"source":"sharedpy/parameter_definitions.py:88"},{"name":"nobg","aliases":[],"category":"edit","status":"live","kind":"flag","desc":"Generate directly with a transparent / no-background result.","support":{"models":["transparent-capable models"]},"source":"sharedpy/parameter_definitions.py:89"},{"name":"restore","aliases":[],"category":"edit","status":"live","kind":"flag","desc":"Restoration pass on a degraded input image.","support":{"models":["restoration models"],"ops":["img2img"]},"source":"sharedpy/parameter_definitions.py:90"},{"name":"restoreface","aliases":[],"category":"edit","status":"live","kind":"flag","desc":"Face-only restoration pass. Pair with `--face <url>` for identity guidance.","support":{"models":["face-restore models"],"ops":["img2img"]},"compat":["Usually combined with `--face <url>`."],"source":"sharedpy/parameter_definitions.py:97"},{"name":"combine","aliases":[],"category":"edit","status":"live","kind":"flag","desc":"Combine multiple input images into a single scene.","support":{"models":["multi-input img2img models"],"ops":["img2img"]},"source":"sharedpy/parameter_definitions.py:91"},{"name":"upscale","aliases":[],"category":"edit","status":"live","kind":"flag","desc":"Upscale an input image (`upscale_2x` operation).","support":{"models":["Clarity Upscaler et al."],"ops":["upscale"]},"source":"sharedpy/parameter_definitions.py:92"},{"name":"refine","aliases":[],"category":"edit","status":"live","kind":"flag","desc":"Refinement pass on a generated image.","support":{"models":["refinement models"],"ops":["img2img"]},"source":"sharedpy/parameter_definitions.py:96"},{"name":"vary","aliases":[],"category":"edit","status":"live","kind":"flag","desc":"Create a variation of a generated image (`vary_strong` operation).","support":{"models":["variation-capable models"],"ops":["img2img"]},"compat":["Mutually exclusive with `--sref` (no engine-side validation today)."],"source":"sharedpy/parameter_definitions.py:93"},{"name":"varysubtle","aliases":[],"category":"edit","status":"live","kind":"flag","desc":"Subtle variation of a generated image.","support":{"models":["variation-capable models"],"ops":["img2img"]},"source":"sharedpy/parameter_definitions.py:94"},{"name":"varystrong","aliases":[],"category":"edit","status":"live","kind":"flag","desc":"Strong variation of a generated image.","support":{"models":["variation-capable models"],"ops":["img2img"]},"source":"sharedpy/parameter_definitions.py:95"},{"name":"pan_left","aliases":["panleft","extendleft"],"category":"outpaint","status":"live","kind":"flag","desc":"Extend the canvas to the left (outpainting).","compat":["Cannot combine with `--ar` in the same call."],"support":{"models":["outpaint-capable models"],"ops":["outpaint"]},"source":"sharedpy/parameter_definitions.py:190"},{"name":"pan_right","aliases":["panright","extendright"],"category":"outpaint","status":"live","kind":"flag","desc":"Extend the canvas to the right (outpainting).","compat":["Cannot combine with `--ar` in the same call."],"support":{"models":["outpaint-capable models"],"ops":["outpaint"]},"source":"sharedpy/parameter_definitions.py:193"},{"name":"pan_up","aliases":["panup","extendup"],"category":"outpaint","status":"live","kind":"flag","desc":"Extend the canvas upward (outpainting).","compat":["Cannot combine with `--ar` in the same call."],"support":{"models":["outpaint-capable models"],"ops":["outpaint"]},"source":"sharedpy/parameter_definitions.py:196"},{"name":"pan_down","aliases":["pandown","extenddown"],"category":"outpaint","status":"live","kind":"flag","desc":"Extend the canvas downward (outpainting).","compat":["Cannot combine with `--ar` in the same call."],"support":{"models":["outpaint-capable models"],"ops":["outpaint"]},"source":"sharedpy/parameter_definitions.py:199"},{"name":"zoomout","aliases":["zoomout1.5x","zoomout15x"],"category":"outpaint","status":"live","kind":"flag","desc":"Zoom out (1.5×) — original stays; new content fills the border.","support":{"models":["outpaint-capable models"],"ops":["outpaint"]},"source":"sharedpy/parameter_definitions.py:204"},{"name":"zoomout2x","aliases":[],"category":"outpaint","status":"live","kind":"flag","desc":"Zoom out at 2× — same as `--zoomout` but wider border.","support":{"models":["outpaint-capable models"],"ops":["outpaint"]},"source":"sharedpy/parameter_definitions.py:207"},{"name":"zoomoutexpand","aliases":["zoomoutexpand1.5x","zoomoutexpand15x"],"category":"outpaint","status":"live","kind":"flag","desc":"Zoom-out variant that expands the composition rather than just adding border.","support":{"models":["outpaint-capable models"],"ops":["outpaint"]},"source":"sharedpy/parameter_definitions.py:208"},{"name":"zoomoutexpand2x","aliases":[],"category":"outpaint","status":"live","kind":"flag","desc":"2× expand-out variant.","support":{"models":["outpaint-capable models"],"ops":["outpaint"]},"source":"sharedpy/parameter_definitions.py:211"},{"name":"extend_amount","aliases":[],"category":"outpaint","status":"live","kind":"pattern","desc":"Dynamic extend amount for outpainting. Two syntaxes: `--0.5` (fraction of edge) or `--512px` (fixed pixel border).","range":"fraction: 0.01 – 1.0  •  pixels: 1 – 2048","support":{"models":["outpaint-capable models"],"ops":["outpaint"]},"examples":["--pan_right --0.5","--pan_down --512px"],"source":"sharedpy/param_parser.py:437"},{"name":"mp4","aliases":[],"category":"video","status":"live","kind":"flag","desc":"Trigger video generation. If input images are present it becomes img2vid; otherwise txt2vid.","support":{"models":["Kling v2.1","Sora / Sora 2 Pro / Sora Lite","Seedance 2 (Fast/Pro)"],"ops":["txt2vid","img2vid","ref2vid"]},"examples":["clouds rolling over mountains --mp4 --5sec --720p"],"source":"sharedpy/parameter_definitions.py:102"},{"name":"video-resolution","aliases":["1080p","720p","540p","480p","1024p","1080p24","720p24","540p24","480p24","1024p30"],"category":"video","status":"live","kind":"flag","desc":"Video resolution flags. Also accepted with `24fps` / `30fps` suffix.","values":["--480p","--540p","--720p","--1024p","--1080p","--480p24 / --480p24fps","--540p24 / --540p24fps","--720p24 / --720p24fps","--1024p30 / --1024p30fps","--1080p24 / --1080p24fps"],"support":{"models":["Kling v2.1 (720p, 1080p)","Sora / Sora 2 Pro","Seedance 2 (Fast/Pro)"]},"examples":["neon city --mp4 --1080p"],"source":"sharedpy/parameter_definitions.py:141"},{"name":"video-fps","aliases":["24fps","30fps","50fps","60fps"],"category":"video","status":"live","kind":"flag","desc":"Frame rate. Not all providers accept every rate — 24 and 30 are the safest.","values":["--24fps","--30fps","--50fps","--60fps"],"support":{"models":["most video models"]},"examples":["drone shot --mp4 --24fps"],"source":"sharedpy/parameter_definitions.py:158"},{"name":"video-duration","aliases":["4s","5s","6s","8s","10s","12s","4sec","5sec","6sec","8sec","10sec","12sec"],"category":"video","status":"live","kind":"flag","desc":"Clip length. Accepts either `--5s` or `--5sec` — both work.","values":["--4s | --4sec","--5s | --5sec","--6s | --6sec","--8s | --8sec","--10s | --10sec","--12s | --12sec"],"support":{"models":["Kling v2.1 (5s, 10s)","Sora models (variable)","Seedance 2 (Fast/Pro)"]},"examples":["drone shot over reef --mp4 --10sec --1080p"],"source":"sharedpy/parameter_definitions.py:164"},{"name":"flagship","aliases":[],"category":"model","status":"live","kind":"flag","desc":"Force the flagship (highest-quality) model of the current operation category. Universal opt-in.","support":{"models":["auto-picks per operation"]},"examples":["brand ad --ar 16:9 --flagship","cinematic clip --mp4 --flagship"],"source":"sharedpy/parameter_definitions.py:115","sinceDate":"2025-10"},{"name":"sora","aliases":["sora2","sora2pro"],"category":"model","status":"live","kind":"flag","desc":"Force OpenAI Sora / Sora 2 Pro (video).","support":{"models":["Sora 2 Pro"],"ops":["txt2vid","img2vid"]},"compat":["Only one model trigger per prompt."],"examples":["glass shattering slow-mo --mp4 --sora2pro --1080p"],"source":"sharedpy/parameter_definitions.py:116","sinceDate":"2025-10"},{"name":"soralite","aliases":["sora2lite"],"category":"model","status":"live","kind":"flag","desc":"Force OpenAI Sora Lite (video). Cheaper than Sora Pro.","support":{"models":["Sora Lite"],"ops":["txt2vid","img2vid"]},"source":"sharedpy/parameter_definitions.py:119","sinceDate":"2025-10"},{"name":"nanobananapro","aliases":[],"category":"model","status":"live","kind":"flag","desc":"Force Google Nano-Banana Pro. Single trigger claims both txt2img and img2img variants — router picks by op.","support":{"models":["Nano-Banana Pro"],"ops":["txt2img","img2img"]},"examples":["product mockup --nanobananapro --2k"],"source":"sharedpy/parameter_definitions.py:121","note":"Was `--nanobanapro` (typo) for ~1 day before 2026-06-01 rename.","sinceDate":"2026-05"},{"name":"nb2","aliases":[],"category":"model","status":"live","kind":"flag","desc":"Force Google Nano-Banana 2. Trigger claims txt2img + img2img.","support":{"models":["Nano-Banana 2"],"ops":["txt2img","img2img"]},"source":"sharedpy/parameter_definitions.py:122","sinceDate":"2026-03"},{"name":"gpt2","aliases":["gptimage2"],"category":"model","status":"live","kind":"flag","desc":"Force OpenAI GPT-image-2 (medium quality). Trigger claims both txt2img + img2img variants.","support":{"models":["GPT-image-2 Med"],"ops":["txt2img","img2img"]},"source":"sharedpy/parameter_definitions.py:126","sinceDate":"2026-05"},{"name":"gpt2high","aliases":["gptimage2high"],"category":"model","status":"live","kind":"flag","desc":"Force GPT-image-2 High quality. Costs more; slower.","support":{"models":["GPT-image-2 High"],"ops":["txt2img","img2img"]},"source":"sharedpy/parameter_definitions.py:128","sinceDate":"2026-05"},{"name":"seedance2","aliases":[],"category":"model","status":"live","kind":"flag","desc":"Force ByteDance Seedance 2 (Fast tier, video). Claims txt2vid + img2vid + ref2vid.","support":{"models":["Seedance 2 Fast"],"ops":["txt2vid","img2vid","ref2vid"]},"source":"sharedpy/parameter_definitions.py:130","sinceDate":"2026-05"},{"name":"seedance2pro","aliases":[],"category":"model","status":"live","kind":"flag","desc":"Force ByteDance Seedance 2 Pro (video). Claims txt2vid + img2vid + ref2vid.","support":{"models":["Seedance 2 Pro"],"ops":["txt2vid","img2vid","ref2vid"]},"source":"sharedpy/parameter_definitions.py:131","sinceDate":"2026-05"},{"name":"cref","aliases":[],"category":"reference","status":"unimplemented","kind":"url","desc":"Character reference URL. Reserved in the public API surface — parser explicitly errors \"recognized but not yet implemented\" instead of silently doing nothing.","source":"sharedpy/parameter_definitions.py:69","note":"Planned. Timeline unspecified."},{"name":"cw","aliases":[],"category":"reference","status":"unimplemented","kind":"float","desc":"Character-reference weight. Reserved; explicit error today.","range":"0 – 100","source":"sharedpy/parameter_definitions.py:73","note":"Planned alongside `--cref`."},{"name":"demo","aliases":[],"category":"meta","status":"live","kind":"flag","desc":"Logged-in-only flag that lets an account access seeded demo generations without spending real credits.","source":"sharedpy/parameter_definitions.py:223"}]}