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

# Preajustes

> Gestiona configuraciones de render reutilizables desde el SDK

Un preajuste es una configuración de render reutilizable — fondo, estilo de subtítulos, diseño — que puedes aplicar a cualquier proyecto o exportación. Usa preajustes cuando quieras una apariencia consistente en muchas pistas.

Consulta [Render settings reference](/en/render-settings-reference) para ver la forma completa de `preset` y todas las opciones respaldadas por enums.

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

Lista todos los preajustes que pertenecen a la cuenta autenticada.

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

Obtén un único preajuste.

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

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

Crea un nuevo preajuste.

```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>
  Nombre visible que se muestra en la UI de Youka.
</ParamField>

<ParamField path="preset" type="KaraokePreset" required>
  El cuerpo completo del preajuste. Usa [`Render settings
      reference`](/en/render-settings-reference) para el mapa de campos legible por humanos,
  o `KaraokePresetSchema.toJSONSchema()` para el esquema legible por máquinas.
</ParamField>

<ParamField path="isDefault" type="boolean">
  Marca el nuevo preajuste como el predeterminado de la cuenta. Solo un preajuste puede ser el predeterminado
  a la vez.
</ParamField>

Combínalo con una clave de idempotencia para reintentos seguros:

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

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

Aplica un patch a un preajuste existente. Pasa cualquier subconjunto de `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 preajuste.

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

<Warning>
  Eliminar un preajuste no elimina proyectos ni exportaciones que se hayan
  renderizado previamente con él. Las exportaciones futuras que hagan referencia al preajuste eliminado fallarán.
</Warning>

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

Marca un preajuste como el predeterminado para nuevos proyectos. Este es un wrapper de conveniencia sobre `client.presets.update(presetId, { isDefault: true })`.

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

Al establecer un nuevo predeterminado, se desactiva automáticamente el anterior.

## Descubrir campos válidos

El SDK exporta el esquema Zod que valida los cuerpos de preajustes. Conviértelo a JSON Schema en tiempo de ejecución para agentes y constructores de formularios:

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

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

<Tip>
  Autores de agentes: llamen a este esquema antes de mutar preajustes para que el modelo conozca los
  nombres exactos de los campos y los tipos de valores.
</Tip>

Referencia legible por humanos:

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

## Aplicar un preajuste

Aplica preajustes en tres puntos:

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

  <Tab title="En la configuración del proyecto">
    ```ts theme={null}
    await client.projects.updateSettings("prj_abc123", {
      presetId: "preset_abc123",
    });
    ```
  </Tab>

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

## Qué sigue

* [Render settings reference](/en/render-settings-reference) — todas las rutas de campos compartidos y los valores de enums
* [Media](/es/sdk/media) — referenciado desde los cuerpos de preajustes
* [Project settings](/es/sdk/project-settings) — aplica preajustes a un proyecto
* [API presets](/es/api/presets) — el mismo flujo sobre HTTP sin formato
* [CLI presets](/es/cli/presets) — el mismo flujo desde la terminal
* [Exports](/es/sdk/exports) — renderiza con un preajuste
