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

# Media

> Sube y gestiona fondos, logotipos y videos de introducción/despedida reutilizables

Los medios son archivos reutilizables — fondos de video, imágenes estáticas, logotipos y clips de introducción/despedida — que puedes referenciar desde presets o desde la configuración del proyecto. Sube una vez y reutiliza en varios proyectos.

## Tipos de media

| Tipo          | Descripción                                     |
| ------------- | ----------------------------------------------- |
| `video`       | Video de fondo en bucle.                        |
| `image`       | Imagen de fondo estática.                       |
| `logo`        | Superposición de logotipo.                      |
| `intro-video` | Se reproduce antes de que empiece el karaoke.   |
| `outro-video` | Se reproduce después de que termine el karaoke. |

## `client.media.list(options?)`

Lista todos los elementos de media reutilizables que pertenecen a la cuenta autenticada.

```ts theme={null}
const media = await client.media.list();
```

## `client.media.get(mediaId, options?)`

Obtén un único elemento de media.

```ts theme={null}
const media = await client.media.get("bg_abc123");
```

## `client.media.create(body, options?)`

Crea un nuevo elemento de media a partir de una ruta local, bytes o un `inputFileId` ya subido. Para rutas locales y bytes, el SDK prepara la subida, envía los bytes del archivo a la URL de subida y registra el archivo subido como media reutilizable.

```ts theme={null}
const media = await client.media.create({
  type: "video",
  source: {
    type: "path",
    path: "./background.mp4",
    contentType: "video/mp4",
  },
});
```

<ParamField path="type" type="'video' | 'image' | 'logo' | 'intro-video' | 'outro-video'" required>
  Qué función cumple este elemento de media en un render.
</ParamField>

<ParamField path="source" type="object">
  La fuente del archivo. Usa `{ type: "path", path }` para archivos locales, `{ type:
      "bytes", data, filename }` para datos `Blob`, `File`, `ArrayBuffer` o de array
  tipado, o `{ type: "inputFile", inputFileId }` cuando ya tengas un ID de
  subida.
</ParamField>

<ParamField path="inputFileId" type="string">
  Opción avanzada de bajo nivel: pasa el ID devuelto por
  `client.uploads.create(...)` en lugar de `source`.
</ParamField>

## `client.media.delete(mediaId, options?)`

Elimina un elemento de media.

```ts theme={null}
await client.media.delete("bg_abc123", {
  idempotencyKey: "delete-bg_abc123",
});
```

<Warning>
  Eliminar media no afecta a proyectos ni exportaciones que se hayan renderizado
  previamente con él. Los futuros renders que referencien el media eliminado
  volverán al fondo predeterminado.
</Warning>

## Ejemplo de extremo a extremo

```ts theme={null}
import { YoukaClient } from "@youka/sdk";

const client = new YoukaClient({ apiKey: process.env.YOUKA_API_KEY! });

async function uploadBackground(path: string, contentType: string) {
  return client.media.create({
    type: "video",
    source: {
      type: "path",
      path,
      contentType,
    },
  });
}

const media = await uploadBackground("./loop.mp4", "video/mp4");
console.log("Media ID:", media.id);
```

## Aplicar un fondo

Referencia media subido desde un preset o directamente desde la configuración del proyecto:

```ts theme={null}
const media = await uploadBackground("./loop.mp4", "video/mp4");

await client.projects.updateSettings("prj_abc123", {
  settings: {
    style: {
      background: {
        type: "video",
        url: media.url,
        objectFit: "cover",
      },
    },
  },
});
```

Para el conjunto completo de campos aceptados bajo `background`, convierte el esquema de configuración del proyecto a JSON:

```ts theme={null}
import { RestUpdateProjectSettingsRequestSchema } from "@youka/sdk";

const schema = RestUpdateProjectSettingsRequestSchema.toJSONSchema();
```

## Qué sigue

* [Referencia de configuración de render](/en/render-settings-reference) — todas las rutas de campos compartidas y los valores de enum
* [Projects](/es/sdk/projects) — creación de proyectos y subidas
* [Presets](/es/sdk/presets) — agrupa media con otros ajustes de render
* [Project settings](/es/sdk/project-settings) — aplica fondos a un proyecto
