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

> Carica e gestisci sfondi, loghi e video intro/outro riutilizzabili

I media sono file riutilizzabili — sfondi video, immagini statiche, loghi e clip intro/outro — a cui puoi fare riferimento dai preset o dalle impostazioni di progetto. Caricali una volta e riutilizzali in più progetti.

## Tipi di media

| Tipo          | Descrizione                             |
| ------------- | --------------------------------------- |
| `video`       | Video di sfondo in loop.                |
| `image`       | Immagine di sfondo statica.             |
| `logo`        | Overlay del logo.                       |
| `intro-video` | Riprodotto prima che inizi il karaoke.  |
| `outro-video` | Riprodotto dopo che termina il karaoke. |

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

Elenca tutti gli elementi multimediali riutilizzabili di proprietà dell’account autenticato.

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

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

Recupera un singolo elemento multimediale.

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

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

Crea un nuovo elemento multimediale da un percorso locale, da byte, oppure da un `inputFileId` già caricato. Per percorsi locali e byte, l’SDK prepara il caricamento, invia i byte del file all’URL di upload e registra il file caricato come media riutilizzabile.

```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>
  Quale ruolo svolge questo elemento multimediale in un render.
</ParamField>

<ParamField path="source" type="object">
  L’origine del file. Usa `{ type: "path", path }` per i file locali, `{ type:
      "bytes", data, filename }` per dati `Blob`, `File`, `ArrayBuffer` o typed array,
  oppure `{ type: "inputFile", inputFileId }` quando hai già un ID di upload.
</ParamField>

<ParamField path="inputFileId" type="string">
  Opzione avanzata di basso livello: passa l’ID restituito da
  `client.uploads.create(...)` al posto di `source`.
</ParamField>

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

Elimina un elemento multimediale.

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

<Warning>
  L’eliminazione dei media non influisce su progetti o esportazioni che erano
  stati renderizzati in precedenza con essi. I render futuri che fanno
  riferimento ai media eliminati useranno lo sfondo predefinito.
</Warning>

## Esempio end-to-end

```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);
```

## Applicare uno sfondo

Fai riferimento ai media caricati da un preset oppure direttamente dalle impostazioni di progetto:

```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",
      },
    },
  },
});
```

Per l’insieme completo dei campi accettati sotto `background`, converti lo schema delle impostazioni di progetto in JSON:

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

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

## Cosa segue

* [Riferimento alle impostazioni di render](/en/render-settings-reference) — tutti i percorsi dei campi condivisi e i valori enum
* [Projects](/it/sdk/projects) — creazione del progetto e upload
* [Presets](/it/sdk/presets) — raggruppa i media con altre impostazioni di render
* [Project settings](/it/sdk/project-settings) — applica gli sfondi a un progetto
