Skip to main content
Пресет — это переиспользуемая конфигурация рендера (фон, стиль субтитров, раскладка), которую можно применить к любому проекту или экспорту. Используйте пресеты, когда вам нужен единый визуальный стиль для множества треков. См. Render settings reference, чтобы узнать полную форму preset и все варианты, основанные на enum.

client.presets.list(options?)

Выведите список всех пресетов, принадлежащих аутентифицированному аккаунту.
const presets = await client.presets.list();
presets.forEach((p) => console.log(p.id, p.name, p.isDefault));

client.presets.get(presetId, options?)

Получите один пресет.
const preset = await client.presets.get("preset_abc123");

client.presets.create(body, options?)

Создайте новый пресет.
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,
});
name
string
required
Отображаемое имя, которое показывается в UI Youka.
preset
KaraokePreset
required
Полное тело пресета. Используйте Render settings reference для человекочитаемой карты полей или KaraokePresetSchema.toJSONSchema() для машиночитаемой схемы.
isDefault
boolean
Сделать новый пресет пресетом по умолчанию для аккаунта. Одновременно пресетом по умолчанию может быть только один.
Для безопасных повторных попыток используйте вместе с ключом идемпотентности:
const preset = await client.presets.create(body, {
  idempotencyKey: "create-neon-night-v1",
});

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

Внесите частичные изменения (patch) в существующий пресет. Передайте любой поднабор из name, preset и isDefault.
const updated = await client.presets.update("preset_abc123", {
  name: "Neon Night v2",
  preset: {
    singerTextStyles: {
      0: { textColor: "#ff2a2a" },
    },
  },
});

client.presets.delete(presetId, options?)

Удалите пресет.
await client.presets.delete("preset_abc123", {
  idempotencyKey: "delete-preset_abc123",
});
Удаление пресета не удаляет проекты или экспорты, которые ранее были отрендерены с его использованием. Будущие экспорты, которые ссылаются на удалённый пресет, завершатся с ошибкой.

client.presets.setDefault(presetId, options?)

Сделайте пресет пресетом по умолчанию для новых проектов. Это удобная обёртка над client.presets.update(presetId, { isDefault: true }).
await client.presets.setDefault("preset_abc123");
При установке нового пресета по умолчанию предыдущий автоматически снимается.

Поиск допустимых полей

SDK экспортирует схему Zod, которая валидирует тела пресетов. Преобразуйте её в JSON Schema во время выполнения для агентов и конструкторов форм:
import { KaraokePresetSchema } from "@youka/sdk";

const jsonSchema = KaraokePresetSchema.toJSONSchema();
console.log(jsonSchema);
Авторы агентов: вызывайте эту схему перед изменением пресетов, чтобы модель знала точные имена полей и типы значений.
Человекочитаемый справочник:

Применение пресета

Пресеты можно применять в трёх местах:
await client.projects.create({
  source: { type: "path", path: "./song.mp3" },
  presetId: "preset_abc123",
});

Что дальше

  • Render settings reference — все общие пути полей и значения enum
  • Media — используется в телах пресетов
  • Project settings — применяйте пресеты к проекту
  • API presets — тот же сценарий через raw HTTP
  • CLI presets — тот же сценарий из терминала
  • Exports — рендер с пресетом