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

# Preset

> Gestisci configurazioni di rendering riutilizzabili dall'SDK

Un preset è una configurazione di rendering riutilizzabile — sfondo, stile dei sottotitoli, layout — che puoi applicare a qualsiasi progetto o esportazione. Usa i preset quando vuoi un aspetto coerente su molte tracce.

Vedi [Render settings reference](/en/render-settings-reference) per la forma completa di
`preset` e per ogni opzione basata su enum.

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

Elenca tutti i preset di proprietà dell’account autenticato.

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

Recupera un singolo preset.

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

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

Crea un nuovo 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>
  Nome visualizzato mostrato nell’interfaccia Youka.
</ParamField>

<ParamField path="preset" type="KaraokePreset" required>
  Il corpo completo del preset. Usa [`Render settings
      reference`](/en/render-settings-reference) per la mappa dei campi in formato leggibile,
  oppure `KaraokePresetSchema.toJSONSchema()` per lo schema leggibile dalle macchine.
</ParamField>

<ParamField path="isDefault" type="boolean">
  Imposta il nuovo preset come predefinito per l’account. Solo un preset può essere quello
  predefinito alla volta.
</ParamField>

Abbinalo a una chiave di idempotenza per ripetizioni sicure:

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

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

Applica una patch a un preset esistente. Passa qualsiasi sottoinsieme di `name`, `preset` e `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?)`

Elimina un preset.

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

<Warning>
  L’eliminazione di un preset non elimina i progetti o le esportazioni che in precedenza
  sono stati renderizzati con esso. Le esportazioni future che fanno riferimento al preset eliminato falliranno.
</Warning>

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

Imposta un preset come predefinito per i nuovi progetti. Questo è un wrapper di comodità attorno a `client.presets.update(presetId, { isDefault: true })`.

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

Impostare un nuovo predefinito disattiva automaticamente il precedente.

## Individuare i campi validi

L’SDK esporta lo schema Zod che valida i corpi dei preset. Convertilo in JSON Schema a runtime per agenti e builder di moduli:

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

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

<Tip>
  Autori di agenti: richiamate questo schema prima di modificare i preset, così il modello conosce
  i nomi esatti dei campi e i tipi di valore.
</Tip>

Riferimento leggibile:

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

## Applicare un preset

Applica i preset in tre momenti:

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

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

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

## Cosa c’è dopo

* [Render settings reference](/en/render-settings-reference) — tutti i percorsi dei campi condivisi e i valori enum
* [Media](/it/sdk/media) — referenziati dai corpi dei preset
* [Project settings](/it/sdk/project-settings) — applica i preset a un progetto
* [API presets](/it/api/presets) — lo stesso flusso via HTTP grezzo
* [CLI presets](/it/cli/presets) — lo stesso flusso dal terminale
* [Exports](/it/sdk/exports) — esegui il rendering con un preset
