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

# Настройки проекта

> Просматривайте и обновляйте активные настройки проекта

У каждого проекта есть активные настройки — trim, background, стиль субтитров, макет — которые определяют, как рендерятся экспорты.

Используйте настройки проекта, когда вам нужны локальные для проекта переопределения, которые не стоит упаковывать в общий пресет.

См. [Справочник по настройкам рендера](/en/render-settings-reference) для карты полей `preset`, `settings.style` и `settingsOverride`, которые являются общими.

## `client.projects.getSettings(projectId, options?)`

Получить активные настройки проекта.

```ts theme={null}
const config = await client.projects.getSettings("prj_abc123");
console.log(
  config.settings.trim,
  config.settings.style?.background,
  config.settings.displayLanguages,
);
```

## `client.projects.updateSettings(projectId, body, options?)`

Частично обновить активные настройки проекта. Можно применить пресет, передать сырые настройки или и то и другое (сначала применяется пресет, затем поверх него мёрджатся переопределения настроек).

```ts theme={null}
const updated = await client.projects.updateSettings("prj_abc123", {
  presetId: "preset_abc123",
  settings: {
    trim: { startSeconds: 5, endSeconds: 180 },
  },
});
```

### Поля

<ParamField path="presetId" type="string">
  Применить переиспользуемый пресет. Не указывайте, чтобы оставить текущий пресет без изменений.
</ParamField>

<ParamField path="settings" type="object">
  Патч, применяемый поверх пресета. Используйте `style` для переопределений в формате пресета,
  а также локальные для проекта поля, такие как `displayLanguages`, `chordSettings` и
  `duetSingerFilter`.
</ParamField>

### Определение допустимых полей

Преобразуйте схему обновления в JSON Schema во время выполнения, чтобы узнать все допустимые поля:

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

const schema = RestUpdateProjectSettingsRequestSchema.toJSONSchema();
console.log(JSON.stringify(schema, null, 2));
```

<Tip>
  Агентам следует вызывать это перед изменением настроек проекта, чтобы всегда знать
  актуальную структуру.
</Tip>

## Типовые паттерны

<Tabs>
  <Tab title="Обрезка">
    ```ts theme={null}
    await client.projects.updateSettings("prj_abc123", {
      settings: {
        trim: { startSeconds: 5.0, endSeconds: 180.0 },
      },
    });
    ```
  </Tab>

  <Tab title="Цвет фона">
    ```ts theme={null}
    await client.projects.updateSettings("prj_abc123", {
      settings: {
        style: {
          background: { type: "color", color: "#101010" },
        },
      },
    });
    ```
  </Tab>

  <Tab title="Языки отображения">
    ```ts theme={null}
    await client.projects.updateSettings("prj_abc123", {
      settings: {
        displayLanguages: ["en", "es"],
      },
    });
    ```
  </Tab>

  <Tab title="Применить пресет">
    ```ts theme={null}
    await client.projects.updateSettings("prj_abc123", {
      presetId: "preset_abc123",
    });
    ```
  </Tab>
</Tabs>

## Настройки проекта vs пресеты

| Вопрос                                             | Используйте                |
| -------------------------------------------------- | -------------------------- |
| Одинаковый вид для многих проектов?                | Presets                    |
| Разовая правка обрезки или цвета в одном проекте?  | Настройки проекта          |
| Базовый вид + небольшие проектные переопределения? | Preset + настройки проекта |

## Что дальше

* [Справочник по настройкам рендера](/en/render-settings-reference) — все общие пути полей и значения enum
* [Пресеты](/ru/sdk/presets) — переиспользуемые конфигурации
* [Медиа](/ru/sdk/media) — загрузка фонов и логотипов
* [Настройки проекта API](/ru/api/project-settings) — тот же процесс через raw HTTP
* [Проекты CLI](/ru/cli/projects) — тот же процесс из терминала
* [Экспорты](/ru/sdk/exports) — используйте `settingsOverride` для правок только на время экспорта
