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

# Media models

> The image and video models an agent can generate with — read live, never a fixed list.

<Info>There is **no fixed list of generation models**. The catalogue is read from the provider on every call, so a model published today is callable today. Search it here; pass what you find as `model` to [`generate_image` / `generate_video`](/docs/capabilities/tools#generation-tools), or pin it on an agent with `tools.configs.<tool>.config.models`.</Info>

## The media model object

<ResponseField name="object" type="string">Always `media_model`.</ResponseField>
<ResponseField name="id" type="string">The model's id. This is what a generation tool's `model` argument takes.</ResponseField>
<ResponseField name="name" type="string">The model's display name.</ResponseField>
<ResponseField name="kind" type="string">`image` or `video`.</ResponseField>
<ResponseField name="description" type="string">What the model is good at, in the model author's own words.</ResponseField>

No price is published here, for the same reason [`GET /v1/models`](/docs/api/models) publishes none: a generation job is billed **what it actually cost**, and that is only knowable once the job has finished. See [Pricing](/docs/platform/pricing#media-generation--per-finished-job-media-component).

## Search models

`GET /v1/media/models` — scope `agents:read`

<ParamField query="kind" type="string" required>`image` or `video`. Required: they are two capabilities with two catalogues.</ParamField>
<ParamField query="search" type="string">Matches a model's id, name or description. Omit it to list them all.</ParamField>
<ParamField query="limit" type="number">Page size, 1–100.</ParamField>
<ParamField query="after" type="string">The `next_cursor` of the previous page. Opaque — it is not a row id.</ParamField>

<CodeGroup>
  ```bash cURL theme={"system"}
  curl -fsSL "https://api.vetta.sh/v1/media/models?kind=video&search=seedance" \
    -H "authorization: Bearer sk_live_..."
  ```
</CodeGroup>

<ResponseExample>
  ```json Response theme={"system"}
  {
    "object": "list",
    "data": [
      {
        "object": "media_model",
        "id": "bytedance/seedance-2.5",
        "name": "Seedance 2.5",
        "kind": "video",
        "description": "A text- and image-to-video model for short cinematic clips.",
      }
    ],
    "has_more": false,
    "next_cursor": null
  }
  ```
</ResponseExample>

Ordering is cheapest-first where the provider publishes a per-output price, which today is the image catalogue only. That is why `generate_image` can pick a default for you and `generate_video` asks you to name a model.

A deploy with no generation provider configured answers `501 feature_not_configured` rather than an empty list — "nothing is configured here" and "the provider has no models" are different facts.
