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

# Presets

> Verwalte wiederverwendbare Render-Konfigurationen aus dem SDK

Ein Preset ist eine wiederverwendbare Render-Konfiguration — Hintergrund, Untertitelstil, Layout — die du auf jedes Projekt oder jeden Export anwenden kannst. Verwende Presets, wenn du über viele Tracks hinweg ein konsistentes Erscheinungsbild haben möchtest.

Siehe [Render settings reference](/en/render-settings-reference) für die vollständige
`preset`-Struktur und jede enum-basierte Option.

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

Liste alle Presets auf, die dem authentifizierten Account gehören.

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

Rufe ein einzelnes Preset ab.

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

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

Erstelle ein neues Preset.

```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>
  Anzeigename, der in der Youka-UI angezeigt wird.
</ParamField>

<ParamField path="preset" type="KaraokePreset" required>
  Der vollständige Preset-Body. Verwende [`Render settings
      reference`](/en/render-settings-reference) für die menschenlesbare Feldzuordnung
  oder `KaraokePresetSchema.toJSONSchema()` für das maschinenlesbare Schema.
</ParamField>

<ParamField path="isDefault" type="boolean">
  Markiere das neue Preset als Account-Standard. Es kann immer nur ein Preset
  gleichzeitig der Standard sein.
</ParamField>

Kombiniere das mit einem Idempotency-Key für sichere Wiederholungen:

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

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

Patche ein bestehendes Preset. Übergib eine beliebige Teilmenge von `name`, `preset` und `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?)`

Lösche ein Preset.

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

<Warning>
  Das Löschen eines Presets löscht keine Projekte oder Exporte, die zuvor damit
  gerendert wurden. Zukünftige Exporte, die auf das gelöschte Preset verweisen,
  werden fehlschlagen.
</Warning>

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

Markiere ein Preset als Standard für neue Projekte. Dies ist ein Convenience-Wrapper um `client.presets.update(presetId, { isDefault: true })`.

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

Das Setzen eines neuen Standards hebt den vorherigen automatisch auf.

## Gültige Felder ermitteln

Das SDK exportiert das Zod-Schema, das Preset-Bodies validiert. Wandle es zur Laufzeit in JSON Schema um — für Agents und Form-Builder:

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

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

<Tip>
  Agent-Autor:innen: Rufe dieses Schema auf, bevor du Presets veränderst, damit
  das Modell die exakten Feldnamen und Werttypen kennt.
</Tip>

Menschenlesbare Referenz:

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

## Ein Preset anwenden

Wende Presets an drei Stellen an:

<Tabs>
  <Tab title="Beim Erstellen eines Projekts">
    ```ts theme={null}
    await client.projects.create({
      source: { type: "path", path: "./song.mp3" },
      presetId: "preset_abc123",
    });
    ```
  </Tab>

  <Tab title="In den Projekteinstellungen">
    ```ts theme={null}
    await client.projects.updateSettings("prj_abc123", {
      presetId: "preset_abc123",
    });
    ```
  </Tab>

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

## Was als Nächstes

* [Render settings reference](/en/render-settings-reference) — alle gemeinsamen Feldpfade und Enum-Werte
* [Media](/de/sdk/media) — aus Preset-Bodies referenziert
* [Project settings](/de/sdk/project-settings) — Presets auf ein Projekt anwenden
* [API presets](/de/api/presets) — derselbe Ablauf über rohes HTTP
* [CLI presets](/de/cli/presets) — derselbe Ablauf aus dem Terminal
* [Exports](/de/sdk/exports) — mit einem Preset rendern
