> ## 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

> The image and video generation catalogue — client.media.

One method. The catalogue belongs to the provider and changes without a release of ours, so it is a **search**, not a constant — there is nothing to pin a list against.

## listModels

```ts theme={"system"}
client.media.listModels(query: {
  kind: "image" | "video";
  search?: string;
  limit?: number;
  after?: string;
}): Promise<Page<MediaModel>>
```

`GET /v1/media/models`. `kind` is required: image and video are two capabilities with two catalogues.

Each entry:

<ResponseField name="id" type="string">The model id you pass as `model` to [`generate_image` / `generate_video`](/docs/capabilities/tools#generation-tools), or pin on an agent as `tools.configs.<tool>.config.models`.</ResponseField>
<ResponseField name="name" type="string">The model's display name.</ResponseField>
<ResponseField name="kind" type="&#x22;image&#x22; | &#x22;video&#x22;">Which capability it serves.</ResponseField>
<ResponseField name="description" type="string">What the model is good at.</ResponseField>

```ts theme={"system"}
const video = await client.media.listModels({ kind: "video", search: "seedance" });
await client.agents.update(agentId, {
  tools: {
    default_config: { permission: "allow" },
    configs: {
      generate_video: { enabled: true, permission: "allow", config: { models: [video.data[0].id] } },
    },
  },
});
```

No price is on the object. A generation job is billed what it actually cost, once it has finished — see [Pricing](/docs/platform/pricing#media-generation--per-finished-job-media-component).
