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

# Models

> Discover available image, video, and music models and their pricing.

Use `GET /v1/models` to discover which models are available to the API and what
they cost. Pass `?type=image`, `?type=video`, or `?type=audio` to filter.

```bash theme={null}
curl "https://api.budgetpixel.com/v1/models?type=video" \
  -H "Authorization: Bearer $BUDGETPIXEL_API_KEY"
```

```json theme={null}
{
  "data": [
    { "name": "flux-2-pro", "type": "image", "credits_per_generation": 25 },
    { "name": "seedream-4.5", "type": "image", "credits_per_generation": 45 },
    { "name": "seedance-1.5-pro", "type": "video", "credits_per_generation": 0,
      "credits_per_unit": 60, "unit_type": "second",
      "resolution_pricing": { "480p": 40, "720p": 60, "1080p": 120 } },
    { "name": "seedance-2.0", "type": "video", "credits_per_generation": 0,
      "credits_per_unit": 220, "unit_type": "second",
      "resolution_pricing": { "480p": 100, "720p": 220, "1080p": 550, "4k": 1250 } }
  ]
}
```

## Reading the response

| Field                    | Meaning                                                                                                                                                        |
| ------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `name`                   | The model slug. Use it in the endpoint path (`POST /v1/images/{name}`, `POST /v1/videos/{name}`, or `POST /v1/audios/{name}`).                                 |
| `type`                   | `image`, `video`, or `audio`.                                                                                                                                  |
| `credits_per_generation` | Cost per **output image**. A request that returns multiple images is charged this per image — see [multiple images per request](#multiple-images-per-request). |
| `credits_per_unit`       | Per-unit cost for metered models (e.g. per second of video). For resolution-priced models this is the **default** resolution's rate.                           |
| `unit_type`              | The unit `credits_per_unit` applies to (e.g. `second`).                                                                                                        |
| `resolution_pricing`     | For video models whose per-second rate varies by resolution (e.g. SeeDance 2.0), a map of `resolution → credits_per_unit`. Absent when pricing is flat.        |

<Tip>
  The model catalog is the source of truth for what's available. Calling an image
  endpoint for a model that isn't API-available returns `400 model_not_available` —
  list the catalog to see current options.
</Tip>

## Multiple images per request

Some image models return more than one image from a single call:

* **seedream-4.5** and **seedream-5.0-lite** support grouped generation. Set
  `sequential_image_generation: "auto"` and `max_images` (up to 4 on seedream-4.5, up to 14
  on seedream-5.0-lite). The model returns a group of related images **up to** `max_images` and
  decides the exact count — it may return fewer (a plain prompt often yields one; a prompt
  that explicitly asks for a set yields several). Use `max_images` for this, not `num_images`.
* **seedream-5.0-pro** does **not** support grouped generation — it has no
  `sequential_image_generation` parameter. Use `num_images` (1–4) for multiple takes; each
  is generated and billed independently. It prices by output size (1K = 55, 2K = 110 credits
  per image) and bills `reference_images` beyond the first at 5 credits each — see
  [pricing & credits](/concepts/pricing-and-credits#per-model-pricing).

Billing is **per image returned**: a result with 3 images costs `3 × credits_per_generation`.
When the job starts we reserve the maximum (`max_images × credits_per_generation`) and charge
only for the images actually produced.

## Video generation modes

Some video models accept different inputs for different modes.

### SeeDance 2.5 (flagship)

**SeeDance 2.5** (`seedance-2.5`) is ByteDance's flagship multimodal model. One endpoint,
three modes — there is no separate video-edit endpoint:

* **Text-to-video** — `prompt` only (`aspect_ratio` applies here; other modes are adaptive).
* **Image-to-video** — a start frame (`image`), optionally with an end frame (`end_image`).
* **Reference-to-video** — any mix of up to **15 `reference_images`** (free), up to
  **5 `reference_videos`** (each 2–15s, **30s combined**), and up to **5 `reference_audios`**
  (30s combined, free; audio-only input works). **Editing or extending an existing clip =
  passing it as a `reference_videos` entry.** Reference media can't be combined with
  start/end frames.

Output is **480p, 720p or 1080p**, any duration **4–30 seconds**, priced per second
(480p = 150, 720p = 330, 1080p = 750 credits). `reference_videos` additionally bill **per
second of input** at half the output rate (480p = 80, 720p = 160, 1080p = 375 credits per
input second) — use
[`POST /v1/cost`](/concepts/pricing-and-credits#estimating-cost-up-front) for an exact quote
(it probes your clips).

### SeeDance 2.0

**SeeDance 2.0** (`seedance-2.0`) supports all of these from one endpoint:

* **Text-to-video** — `prompt` only.
* **Image-to-video** — a start frame (`image`), optionally with an end frame (`end_image`)
  to interpolate between the two.
* **Reference-images-to-video** — up to 9 `reference_images` to guide the result.
* **Video-to-video** — supply a `video` to edit an existing clip. Video inputs are passed
  **by URL** (a public URL or one from [`POST /v1/uploads`](/concepts/media-inputs)), not
  inlined as base64. You can also pass `reference_images` (up to 6) and/or an `audio` track
  alongside the `video` to guide the edit.

Start/end frames (`image`/`end_image`) can't be combined with `reference_images` or a `video`.
But `reference_images` **can** accompany a `video` — that runs a reference-guided video-edit
(up to **6** reference images in that mode, vs up to **9** on their own). Pricing is **per
second, by resolution** (see `resolution_pricing`): a 5-second 1080p clip costs `5 × 550`.
The `4k` resolution is available for text/image/reference modes, not video-to-video.

**Reference audio (optional):** attach an `audio` track (MP3/WAV/OGG, by public URL or one
from [`POST /v1/uploads`](/concepts/media-inputs)) to an image- or video-input request and
SeeDance 2.0 uses it in the generated video. Audio must accompany an `image`/`reference_images`
or `video` input — it can't be the only input.

**Cheaper tiers:** `seedance-2.0-fast` and `seedance-2.0-mini` support the same modes at
lower per-second rates, in **480p and 720p** (no 1080p/4k). Check each model's
`resolution_pricing` in `GET /v1/models`, or [`POST /v1/cost`](/concepts/pricing-and-credits#estimating-cost-up-front)
to price an exact request.

### MiniMax H3

**MiniMax H3** (`minimax-h3`) is a multimodal 2K model with a different reference surface:

* **Text-to-video** — `prompt` only (`aspect_ratio` applies here; other modes are adaptive).
* **Image-to-video** — a start frame (`image`), optionally with an end frame (`end_image`).
* **Reference-to-video** — mix up to **5 `reference_images`**, up to **3 `reference_videos`**
  clips, and up to **3 `reference_audios`** clips in one request. Clips are passed **by URL**
  (public or from [`POST /v1/uploads`](/concepts/media-inputs)); each clip must be 2–15s, with
  at most **15s combined per media type**.

Reference media can't be combined with start/end frames, and H3 has no video-to-video edit
mode. Output is **2K only**, any integer duration from **4 to 15 seconds**.

<Warning>
  H3 is the first model that **bills video input**: `reference_videos` cost the model's
  per-second rate on the **input** duration in addition to the output video. Reference
  images (first 5) and reference audio are free. [`POST /v1/cost`](/concepts/pricing-and-credits#estimating-cost-up-front)
  fetches and measures the clips, so its estimate includes the input component.
</Warning>

### Wan 2.7

**Wan 2.7** (`wan-2.7-video`) serves three modes from one endpoint:

* **Text-to-video** — `prompt` only.
* **Image-to-video** — a start frame (`image`), optionally with an end frame (`end_image`)
  to interpolate between the two.
* **Video editing** — supply a `video` and the model applies your `prompt` to that clip
  (restyle it, change the scene, alter a subject's action or the camera move). The video is
  passed **by URL** (public or from [`POST /v1/uploads`](/concepts/media-inputs)), not
  inlined as base64. Up to **4 `reference_images`** may accompany it to guide the edit —
  for example, supplying the person or style to apply to the clip.

`video` can't be combined with `image`/`end_image`. Output is **720p or 1080p**; text- and
image-to-video run **5, 10, or 15 seconds**.

Video editing behaves differently from the other two modes in two ways worth planning for:
the input clip must be **2–15 seconds**, and the **output length is taken from that clip**,
so `length_seconds` is ignored.

<Warning>
  Video editing bills the input clip at the **full** per-second rate, on top of the output —
  not the half rate the SeeDance families charge. Because the output length equals the input
  length, an edit costs roughly **double** what the same number of seconds costs in
  text-to-video: editing an 8.2s clip at 720p is `9 × 100 + 9 × 100 = 1800` credits.
  `reference_images` are free. [`POST /v1/cost`](/concepts/pricing-and-credits#estimating-cost-up-front)
  fetches and measures the clip, so its estimate includes the input component — send the exact
  body you plan to generate with.
</Warning>

### P-Video

**P-Video** (`p-video`) is a fast, low-cost model with three modes:

* **Text-to-video** — `prompt` only.
* **Image-to-video** — a start frame (`image`), optionally with an end frame (`end_image`)
  to interpolate between the two.
* **Audio-driven** — supply an `audio` track (MP3/WAV/FLAC) by URL and the model generates
  video to match it.

Output is **720p or 1080p** at **5 or 10 seconds**.

<Warning>
  Supplying `audio` makes the output length match the **audio**, and `length_seconds` is
  ignored. Because P-Video is billed per second, a 23-second track produces a 23-second
  charge no matter what `length_seconds` said. Send the exact body you plan to generate with
  to [`POST /v1/cost`](/concepts/pricing-and-credits#estimating-cost-up-front) first.
</Warning>

## Requesting a model

Image, video, and music models each have their own endpoint and parameter schema — see
the **API Reference** tab for each model's accepted fields.

<CodeGroup>
  ```bash Image theme={null}
  curl -X POST https://api.budgetpixel.com/v1/images/flux-2-pro \
    -H "Authorization: Bearer $BUDGETPIXEL_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{ "prompt": "...", "num_images": 1, "size": "1MP" }'
  ```

  ```bash Video theme={null}
  curl -X POST https://api.budgetpixel.com/v1/videos/seedance-1.5-pro \
    -H "Authorization: Bearer $BUDGETPIXEL_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{ "prompt": "...", "length_seconds": 5 }'
  ```

  ```bash Music theme={null}
  curl -X POST https://api.budgetpixel.com/v1/audios/mureka-v9 \
    -H "Authorization: Bearer $BUDGETPIXEL_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{ "lyrics": "[verse]\nSun up before the rooster crows...", "prompt": "slow country, porch vibes" }'
  ```
</CodeGroup>
