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

# Média

> Téléchargez et gérez des arrière-plans, des logos et des vidéos d’intro/outro réutilisables

Les médias sont des fichiers réutilisables — arrière-plans vidéo, images statiques, logos et clips d’intro/outro — que vous pouvez référencer depuis des préréglages ou des paramètres de projet. Téléchargez une seule fois et réutilisez-les dans tous vos projets.

## Types de média

| Type          | Description                       |
| ------------- | --------------------------------- |
| `video`       | Vidéo d’arrière-plan en boucle.   |
| `image`       | Image d’arrière-plan statique.    |
| `logo`        | Superposition de logo.            |
| `intro-video` | Se lit avant le début du karaoké. |
| `outro-video` | Se lit après la fin du karaoké.   |

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

Lister tous les éléments média réutilisables appartenant au compte authentifié.

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

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

Récupérer un seul élément média.

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

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

Créer un nouvel élément média à partir d’un chemin local, d’octets ou d’un `inputFileId` déjà téléversé. Pour les chemins locaux et les octets, le SDK prépare le téléversement, envoie les octets du fichier à l’URL de téléversement et enregistre le fichier téléversé en tant que média réutilisable.

```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>
  Quel rôle cet élément média remplit dans un rendu.
</ParamField>

<ParamField path="source" type="object">
  La source du fichier. Utilisez `{ type: "path", path }` pour les fichiers locaux, `{ type:
      "bytes", data, filename }` pour les données `Blob`, `File`, `ArrayBuffer` ou de tableau typé,
  ou `{ type: "inputFile", inputFileId }` lorsque vous avez déjà un ID de téléversement.
</ParamField>

<ParamField path="inputFileId" type="string">
  Option avancée de bas niveau : passez l’ID renvoyé par
  `client.uploads.create(...)` à la place de `source`.
</ParamField>

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

Supprimer un élément média.

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

<Warning>
  La suppression d’un média n’affecte pas les projets ni les exports qui ont déjà
  été rendus avec celui-ci. Les futurs rendus qui référencent le média supprimé
  reviendront à l’arrière-plan par défaut.
</Warning>

## Exemple de bout en bout

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

## Appliquer un arrière-plan

Référencez les médias téléversés depuis un préréglage ou directement depuis les paramètres de projet :

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

Pour l’ensemble complet des champs acceptés sous `background`, convertissez le schéma des paramètres de projet en JSON :

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

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

## Et ensuite

* [Référence des paramètres de rendu](/en/render-settings-reference) — tous les chemins de champs partagés et les valeurs d’énumération
* [Projets](/fr/sdk/projects) — création de projets et téléversements
* [Préréglages](/fr/sdk/presets) — regrouper des médias avec d’autres paramètres de rendu
* [Paramètres de projet](/fr/sdk/project-settings) — appliquer des arrière-plans à un projet
