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

# Préréglages

> Gérez des configurations de rendu réutilisables depuis le SDK

Un préréglage est une configuration de rendu réutilisable — arrière-plan, style des sous-titres, mise en page — que vous pouvez appliquer à n’importe quel projet ou export. Utilisez des préréglages lorsque vous souhaitez une apparence cohérente sur de nombreuses pistes.

Voir [Render settings reference](/en/render-settings-reference) pour la forme complète de
`preset` et chaque option adossée à une enum.

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

Liste tous les préréglages appartenant au compte authentifié.

```ts theme={null}
const presets = await client.presets.list();
presets.forEach((p) => console.log(p.id, p.name, p.isDefault));
```

## `client.presets.get(presetId, options?)`

Récupère un seul préréglage.

```ts theme={null}
const preset = await client.presets.get("preset_abc123");
```

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

Crée un nouveau préréglage.

```ts theme={null}
const preset = await client.presets.create({
  name: "Neon Night",
  preset: {
    background: {
      type: "gradient",
      colors: ["#12001f", "#2f0a57"],
      angle: 90,
    },
    singerTextStyles: {
      0: {
        fontFamily: "Inter",
        textColor: "#00f5ff",
        effectColor: "#ff4fd8",
      },
    },
  },
  isDefault: false,
});
```

<ParamField path="name" type="string" required>
  Nom d’affichage dans l’interface Youka.
</ParamField>

<ParamField path="preset" type="KaraokePreset" required>
  Le corps complet du préréglage. Utilisez [`Render settings
      reference`](/en/render-settings-reference) pour la correspondance des champs lisible par un humain,
  ou `KaraokePresetSchema.toJSONSchema()` pour le schéma lisible par une machine.
</ParamField>

<ParamField path="isDefault" type="boolean">
  Marque le nouveau préréglage comme valeur par défaut du compte. Un seul préréglage peut être défini
  comme valeur par défaut à la fois.
</ParamField>

Associez-le à une clé d’idempotence pour des réessais sûrs :

```ts theme={null}
const preset = await client.presets.create(body, {
  idempotencyKey: "create-neon-night-v1",
});
```

## `client.presets.update(presetId, body, options?)`

Applique un patch à un préréglage existant. Passez n’importe quel sous-ensemble de `name`, `preset` et `isDefault`.

```ts theme={null}
const updated = await client.presets.update("preset_abc123", {
  name: "Neon Night v2",
  preset: {
    singerTextStyles: {
      0: { textColor: "#ff2a2a" },
    },
  },
});
```

## `client.presets.delete(presetId, options?)`

Supprime un préréglage.

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

<Warning>
  La suppression d’un préréglage ne supprime pas les projets ni les exports qui ont été rendus
  précédemment avec celui-ci. Les exports futurs qui référencent le préréglage supprimé échoueront.
</Warning>

## `client.presets.setDefault(presetId, options?)`

Marque un préréglage comme valeur par défaut pour les nouveaux projets. Il s’agit d’un wrapper de commodité autour de `client.presets.update(presetId, { isDefault: true })`.

```ts theme={null}
await client.presets.setDefault("preset_abc123");
```

Définir une nouvelle valeur par défaut annule automatiquement la précédente.

## Découvrir les champs valides

Le SDK exporte le schéma Zod qui valide les corps de préréglage. Convertissez-le en JSON Schema à l’exécution pour les agents et les générateurs de formulaires :

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

const jsonSchema = KaraokePresetSchema.toJSONSchema();
console.log(jsonSchema);
```

<Tip>
  Auteurs d’agents : appelez ce schéma avant de modifier des préréglages afin que le modèle connaisse
  les noms exacts des champs et les types de valeurs.
</Tip>

Référence lisible par un humain :

* [Render settings reference](/en/render-settings-reference)
* [CLI presets](/fr/cli/presets)
* [API presets](/fr/api/presets)

## Appliquer un préréglage

Appliquez des préréglages à trois moments :

<Tabs>
  <Tab title="À la création du projet">
    ```ts theme={null}
    await client.projects.create({
      source: { type: "path", path: "./song.mp3" },
      presetId: "preset_abc123",
    });
    ```
  </Tab>

  <Tab title="Dans les paramètres du projet">
    ```ts theme={null}
    await client.projects.updateSettings("prj_abc123", {
      presetId: "preset_abc123",
    });
    ```
  </Tab>

  <Tab title="À l’export">
    ```ts theme={null}
    await client.exports.create("prj_abc123", {
      presetId: "preset_abc123",
      resolution: "1080p",
    });
    ```
  </Tab>
</Tabs>

## Et ensuite

* [Render settings reference](/en/render-settings-reference) — tous les chemins de champs partagés et les valeurs d’enum
* [Media](/fr/sdk/media) — référencé depuis les corps de préréglage
* [Project settings](/fr/sdk/project-settings) — appliquer des préréglages à un projet
* [API presets](/fr/api/presets) — le même flux via HTTP brut
* [CLI presets](/fr/cli/presets) — le même flux depuis le terminal
* [Exports](/fr/sdk/exports) — effectuer un rendu avec un préréglage
