> ## Documentation Index
> Fetch the complete documentation index at: https://docs.adskull.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Models & Options

> Every model AdSkull exposes, with the full matrix of supported parameters.

The catalog endpoint `GET /v1/models` returns this same data programmatically.
For a single model with its full options matrix call `GET /v1/models/{model_id}`.

## Orientation cheatsheet

| You want                                             | `ratio` |
| ---------------------------------------------------- | ------- |
| Vertical / portrait (TikTok, Reels, Shorts, Stories) | `9:16`  |
| Horizontal / landscape (YouTube, web hero)           | `16:9`  |
| Square (Instagram feed)                              | `1:1`   |
| Ultrawide / cinematic                                | `21:9`  |

The MCP server and CLI accept natural-language aliases (`vertical`, `portrait`,
`tiktok`, `horizontal`, `landscape`, `square`, `ig`, `ultrawide`,
`cinematic`). The HTTP API itself requires the `W:H` string.

<Note>
  Some video models (`wan-2.6`, `hailuo-2.3`, `grok-imagine-1.5`,
  `wan-2.6-v2v`, `kling-2.6-mc`, `kling-3.0-mc`) **inherit** the aspect ratio from their input image or video
  and reject the `ratio` parameter. Omit `ratio` for those models.
  `minimax-h3` inherits only on the image-to-video path: send `ratio` for
  text-to-video, but omit it when `input_image_url` is set — the output matches
  the input image.
</Note>

***

## Image models

| Model                | Qualities                      | Ratios                                                                  | Max ref images         | Max outputs / run |
| -------------------- | ------------------------------ | ----------------------------------------------------------------------- | ---------------------- | ----------------- |
| `nano-banana-pro`    | `1K`, `2K`, `4K`               | 1:1, 2:3, 3:2, 3:4, 4:3, 4:5, 5:4, 9:16, 16:9, 21:9                     | 8                      | 4                 |
| `nano-banana-2`      | `1K`, `2K`, `4K`               | 1:1, 1:4, 1:8, 2:3, 3:2, 3:4, 4:1, 4:3, 4:5, 5:4, 8:1, 9:16, 16:9, 21:9 | 14                     | 4                 |
| `nano-banana-2-lite` | `default` (fixed 1K)           | 1:1, 1:4, 1:8, 2:3, 3:2, 3:4, 4:1, 4:3, 4:5, 5:4, 8:1, 9:16, 16:9, 21:9 | 10                     | 4                 |
| `flux-2-pro`         | `1K`, `2K`                     | 1:1, 4:3, 3:4, 16:9, 9:16, 3:2, 2:3                                     | 8                      | 4                 |
| `flux-2`             | `1K`, `2K`                     | 1:1, 4:3, 3:4, 16:9, 9:16, 3:2, 2:3                                     | 8                      | 4                 |
| `seedream-4-5`       | `default`                      | 1:1, 4:3, 3:4, 16:9, 9:16, 2:3, 3:2, 21:9                               | 14                     | 4                 |
| `wan-2-7-pro`        | `default`                      | 1:1, 16:9, 4:3, 21:9, 3:4, 9:16, 8:1, 1:8                               | 9                      | 4                 |
| `wan-2-7`            | `default`                      | 1:1, 16:9, 4:3, 21:9, 3:4, 9:16, 8:1, 1:8                               | 9                      | 4                 |
| `ideogram-v3`        | `TURBO`, `BALANCED`, `QUALITY` | 1:1, 4:3, 3:4, 16:9, 9:16                                               | 1                      | 4                 |
| `grok-imagine`       | `STANDARD`, `QUALITY`          | 1:1, 2:3, 3:2, 16:9, 9:16                                               | 1                      | 2–6 per run       |
| `qwen2`              | `default`                      | 1:1, 3:4, 4:3, 9:16, 16:9                                               | 1                      | 4                 |
| `seedream-5-lite`    | `basic`, `high`                | 1:1, 4:3, 3:4, 16:9, 9:16, 2:3, 3:2, 21:9                               | 14                     | 4                 |
| `gpt-image-2`        | `1K`, `2K`, `4K`               | 1:1, 2:3, 3:2, 3:4, 4:3, 16:9, 9:16, 21:9                               | 16                     | 4                 |
| `gpt-image-1-5`      | `medium`, `high`               | 1:1, 2:3, 3:2                                                           | 16                     | 4                 |
| `z-image`            | `default`                      | 1:1, 4:3, 3:4, 16:9, 9:16                                               | 0 (text-to-image only) | 4                 |

### Image credits per quality

| Model                | Credits per image                   |
| -------------------- | ----------------------------------- |
| `nano-banana-pro`    | 1K: 12 · 2K: 12 · 4K: 15            |
| `nano-banana-2`      | 1K: 5 · 2K: 8 · 4K: 12              |
| `nano-banana-2-lite` | default: 3                          |
| `flux-2-pro`         | 1K: 4 · 2K: 5                       |
| `flux-2`             | 1K: 9 · 2K: 15                      |
| `seedream-4-5`       | default: 5                          |
| `wan-2-7-pro`        | default: 8                          |
| `wan-2-7`            | default: 3                          |
| `ideogram-v3`        | TURBO: 3 · BALANCED: 5 · QUALITY: 7 |
| `grok-imagine`       | STANDARD: 3 · QUALITY: 4            |
| `qwen2`              | default: 4                          |
| `seedream-5-lite`    | basic: 3 · high: 4                  |
| `gpt-image-2`        | 1K: 3 · 2K: 5 · 4K: 8               |
| `gpt-image-1-5`      | medium: 2 · high: 11                |
| `z-image`            | default: 1                          |

***

## Video models

The `audio_mode` column tells you whether you should send `audio_enabled`:

* **toggle** — pass `true` or `false`.
* **forced-on** — the model always returns audio; sending `audio_enabled=false` is rejected.
* **forced-off** — the model never returns audio; sending `audio_enabled=true` is rejected.
* **n/a** — the field is ignored entirely.

| Model               | Mode                        | Ratios                                          | Resolutions                | Durations (s)           | Tiers               | Audio      | Input modes                                                     |
| ------------------- | --------------------------- | ----------------------------------------------- | -------------------------- | ----------------------- | ------------------- | ---------- | --------------------------------------------------------------- |
| `veo-3.1`           | `generate`, `edit` (extend) | 9:16, 16:9                                      | 720p, 1080p, 4K            | 8                       | lite, fast, quality | forced-on  | text, first-frame image, first+last frame                       |
| `kling-2.6`         | `generate`                  | 9:16, 16:9, 1:1                                 | 1080p                      | 5, 10                   | —                   | toggle     | text, first-frame image                                         |
| `kling-3.0`         | `generate`                  | 9:16, 16:9, 1:1                                 | 720p, 1080p                | 3, 5, 7, 10, 15         | —                   | toggle     | text, first-frame image                                         |
| `seedance-1.5-pro`  | `generate`                  | 1:1, 4:3, 3:4, 16:9, 9:16, 21:9                 | 480p, 720p, 1080p          | 4, 8, 12                | —                   | toggle     | text, first-frame image                                         |
| `seedance-2.0`      | `generate`                  | 1:1, 4:3, 3:4, 16:9, 9:16, 21:9, adaptive       | 480p, 720p, 1080p\*        | 4, 8, 12                | fast, quality       | n/a        | text, first-frame image                                         |
| `seedance-2.5`      | `generate`                  | 1:1, 4:3, 3:4, 16:9, 9:16, 21:9, adaptive       | 480p, 720p                 | 4, 5, 8, 10, 15, 20, 30 | —                   | toggle     | text, first-frame image, first+last frame, 1–4 reference images |
| `wan-2.6`           | `generate`                  | inherit                                         | 720p, 1080p                | 5, 10, 15               | —                   | forced-on  | first-frame image (required)                                    |
| `wan-2.7`           | `generate`                  | 16:9, 9:16, 1:1, 4:3, 3:4                       | 720p, 1080p                | 5, 8                    | —                   | forced-off | text, first-frame image, 1–4 reference images                   |
| `hailuo-2.3`        | `generate`                  | inherit                                         | 768p, 1080p                | 6, 10†                  | standard, pro       | forced-off | first-frame image (required)                                    |
| `minimax-h3`        | `generate`                  | 21:9, 16:9, 4:3, 1:1, 3:4, 9:16‡                | 768p, 2K                   | 4–15                    | —                   | forced-on  | text, first-frame image (optional)                              |
| `grok-imagine`      | `generate`                  | 2:3, 3:2, 1:1, 16:9, 9:16                       | 480p, 720p                 | 6, 10, 15, 20, 30       | fun, normal, spicy  | forced-off | text, first-frame image                                         |
| `grok-imagine-1.5`  | `generate`                  | inherit                                         | 480p, 720p                 | 6, 8, 10, 15            | —                   | forced-off | first-frame image (required)                                    |
| `happyhorse-1.1`    | `generate`                  | 16:9, 9:16, 1:1, 4:3, 3:4, 4:5, 5:4, 9:21, 21:9 | 720p, 1080p                | 5, 8, 10, 15            | —                   | n/a        | text, first-frame image, 1–4 reference images                   |
| `kling-3.0-turbo`   | `generate`                  | 1:1, 9:16, 16:9                                 | 720p, 1080p                | 5, 8, 10, 15            | —                   | n/a        | text, first-frame image                                         |
| `gemini-omni`       | `generate`                  | 16:9, 9:16                                      | 720p, 1080p, 4K            | 4, 6, 8, 10             | —                   | n/a        | text, up to 7 reference images                                  |
| `sora-2`            | `generate`                  | 9:16, 16:9                                      | 720p                       | 4, 8, 12, 16, 20        | —                   | forced-on  | text, first-frame image                                         |
| `sora-2-pro`        | `generate`                  | 9:16, 16:9                                      | 720p, 1024x1792, 1080x1920 | 4, 8, 12, 16, 20        | —                   | forced-on  | text, first-frame image                                         |
| `wan-2.6-v2v`       | `edit`                      | inherit                                         | 720p, 1080p                | 5, 10                   | —                   | forced-off | input\_video\_url (required)                                    |
| `wan-2.7-videoedit` | `edit`                      | 16:9, 9:16, 1:1, 4:3, 3:4                       | 720p, 1080p                | 5, 8, 10                | —                   | forced-off | input\_video\_url (required)                                    |
| `seedance-2.5-v2v`  | `edit`                      | 1:1, 4:3, 3:4, 16:9, 9:16, 21:9, adaptive       | 480p, 720p                 | 4, 5, 8, 10, 15, 20, 30 | —                   | toggle     | input\_video\_url (required), optional reference images         |
| `minimax-h3-v2v`    | `edit`                      | 21:9, 16:9, 4:3, 1:1, 3:4, 9:16, adaptive       | 768p, 2K                   | 4–15                    | —                   | forced-on  | input\_video\_url (required)                                    |
| `kling-2.6-mc`      | `motion`                    | inherit                                         | inherit                    | inherit                 | —                   | forced-off | input\_image\_url + input\_video\_url                           |
| `kling-3.0-mc`      | `motion`                    | inherit                                         | inherit                    | inherit                 | —                   | forced-off | input\_image\_url + input\_video\_url                           |

<Note>
  \* `seedance-2.0` with `tier=fast` does **not** support 1080p.

  <Note>
    **`seedance-2.5-v2v` is billed on your reference video's length as well as the
    output's.** The upstream model charges per second of `input + output`, so a
    short reference costs less than a long one:

    `credits = roundUpTo10( rate × ( min(ceil(reference_seconds), 30) + duration_seconds ) )`
    with `rate` = 8.5 at 480p and 19 at 720p.

    A 10s reference with a 10s output at 480p is 170 credits; the same output with
    a 30s reference is 340. The `/v1/pricing` rows list the **maximum** (a 30s
    reference) — you are charged the measured amount, never more. If the
    reference's duration cannot be read, the maximum applies.
  </Note>

  `seedance-2.5` and `seedance-2.5-v2v` top out at **720p** — there is no 1080p or
  4K option on that endpoint. They are the only models that generate a full 30
  seconds in a single pass.

  † `hailuo-2.3` with `resolution=1080p` is locked to `duration_seconds="6"`
  (no 10s option).

  ‡ `minimax-h3` **requires** `ratio` for text-to-video (there is no
  `adaptive`), but ignores it when `input_image_url` is set — the output
  matches the input image, so omit `ratio` for image-to-video. Both H3 ids
  always generate **native stereo audio** (forced-on, no audio flag).

  <Note>
    **`minimax-h3-v2v` is billed on your reference video's length as well as the
    output's.** The upstream model charges per second of `input + output` — 8
    credits/s at 768p, 13 credits/s at 2K, rounded up to the nearest 10. The
    `/v1/pricing` rows list the **maximum** (a 15s reference) — shorter
    reference videos are charged on their measured duration, never more.

    Reference videos must be MP4/MOV (H.264/H.265), ≤ 50 MB, 2–15s per clip,
    and ≤ 15s total.
  </Note>

  `veo-3.1` with `tier=lite` cannot be extended (the `extend` endpoint will
  reject it). Extensions cost 60 credits each.

  `grok-imagine` with `tier=spicy` rejects user-uploaded reference images.

  `veo-3.1` "first-last" input mode sends both a start and end frame image —
  this is currently accessible via the unified video studio dispatcher; pass
  two URLs through the storyboard flow (the public API surface accepts a
  single `input_image_url` for the start frame). Call
  `GET /v1/models/veo-3.1` for the current accepted combinations.
</Note>

### Video credits (selected combinations)

Call `GET /v1/pricing?type=video` for the authoritative matrix. Examples:

| Model              | tier    | resolution | duration | audio | credits                                   |
| ------------------ | ------- | ---------- | -------- | ----- | ----------------------------------------- |
| `veo-3.1`          | fast    | 1080p      | 8        | true  | 60                                        |
| `veo-3.1`          | quality | 4K         | 8        | true  | 180                                       |
| `kling-2.6`        | —       | 1080p      | 5        | true  | 30                                        |
| `kling-3.0`        | —       | 1080p      | 10       | true  | 60                                        |
| `seedance-1.5-pro` | —       | 720p       | 4        | false | 15                                        |
| `seedance-2.0`     | quality | 1080p      | 8        | n/a   | 40                                        |
| `seedance-2.5`     | —       | 480p       | 4        | true  | 50                                        |
| `seedance-2.5`     | —       | 720p       | 30       | true  | 960                                       |
| `seedance-2.5-v2v` | —       | 480p       | 10       | true  | 340 (30s reference) · 170 (10s reference) |
| `wan-2.6`          | —       | 1080p      | 5        | true  | 25                                        |
| `wan-2.7`          | —       | 1080p      | 5        | false | 18                                        |
| `hailuo-2.3`       | pro     | 1080p      | 6        | false | 28                                        |
| `minimax-h3`       | —       | 768p       | 6        | true  | 50                                        |
| `minimax-h3`       | —       | 2K         | 6        | true  | 80                                        |
| `minimax-h3`       | —       | 768p       | 15       | true  | 120                                       |
| `minimax-h3`       | —       | 2K         | 15       | true  | 195                                       |
| `minimax-h3-v2v`   | —       | 768p       | 6        | true  | 170 (15s-reference ceiling)               |
| `minimax-h3-v2v`   | —       | 2K         | 6        | true  | 280 (15s-reference ceiling)               |
| `grok-imagine`     | normal  | 720p       | 10       | false | 20                                        |
| `grok-imagine-1.5` | —       | 720p       | 6        | false | 13                                        |
| `happyhorse-1.1`   | —       | 720p       | 5        | n/a   | 50                                        |
| `kling-3.0-turbo`  | —       | 720p       | 5        | n/a   | 45                                        |
| `gemini-omni`      | —       | 1080p      | 8        | n/a   | 75                                        |
| `sora-2`           | —       | 720p       | 8        | true  | 35                                        |
| `sora-2-pro`       | —       | 1080x1920  | 8        | true  | 80                                        |

***

## Voice (TTS / STS) model

| Field                 | Value                                                                              |
| --------------------- | ---------------------------------------------------------------------------------- |
| `model_id`            | `elevenlabs-multilingual-v2`                                                       |
| Modes                 | `tts` (text-to-speech), `sts` (speech-to-speech)                                   |
| Voice sources         | Library voices (`GET /v1/voices`) and your custom clones (`GET /v1/custom-voices`) |
| Output format         | `mp3`                                                                              |
| TTS max text          | 8192 characters                                                                    |
| TTS duration estimate | `chars / 12` seconds                                                               |
| STS audio formats     | `mp3`, `wav`, `m4a`, `ogg`, `webm` (≤ 25 MB)                                       |
| Pricing               | 2 credits per 10 seconds, rounded up. Minimum 2 credits.                           |

***

## Talking-avatar model

| Field                    | Value                                                             |
| ------------------------ | ----------------------------------------------------------------- |
| `model_id`               | `adskull-talking-avatar`                                          |
| Modes                    | `script` (TTS + lip-sync), `audio` (lip-sync to an existing file) |
| Avatar image             | png/jpg/jpeg/webp, ≤ 25 MB, single front-facing portrait          |
| Script min/max           | 100 chars / 8192 chars                                            |
| Script duration estimate | `chars / 10` seconds                                              |
| Audio formats            | `mp3`, `wav`, `m4a` (≤ 25 MB)                                     |
| Product placement        | `product_placement=true` + `product_image_url` adds **5 credits** |
| Background overlay       | Optional `background_url`                                         |
| Pricing                  | **3 credits per second**, minimum 5 seconds                       |
