# Экспорт и публикация

> Как отрендерить ролик через Slicer API с нужными параметрами файла, скачать его и опубликовать в YouTube, Instagram и VK Видео.

Источник: https://docs.slicer.media/api/export/

Экспорт перерисовывает ролик по текущему документу — со всеми правками и выбранным стилем — и сохраняет файл с параметрами, которые вы задали. Экспорт бесплатный. Сразу после рендера Slicer может опубликовать ролик в подключённые соцсети.

## Запустить экспорт

Терминал:

```bash
curl https://api.slicer.media/v1/projects/318/export \
  -H "Authorization: Bearer $SLICER_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"profile":{"resolution":"1080p","fps":30,"quality":"high"}}'
```

Ответ — проект со статусом `queued`: экспорт — такой же запуск, как монтаж, с этапами и прогрессом от 0 до 100 %. Дождитесь статуса `succeeded` опросом `GET /v1/projects/{id}` или [вебхуком](https://docs.slicer.media/api/webhooks/) `export.succeeded`.

Если экспорт не удался или его остановили, проект остаётся готовым с прежним роликом — ничего не теряется. Пока идёт рендер, правки и новый экспорт отвечают `409 busy`.

У [проекта без ИИ-режиссёра](https://docs.slicer.media/api/montage/#manual) первый удачный экспорт превращает черновик (`draft`) в готовый проект (`succeeded`), неудачный — оставляет черновиком. Бесплатных экспортов таких проектов в сутки — ограниченное число: сверх лимита ответ `429 daily_export_limit`.

## Параметры файла

`profile` — необязательный: без него ролик получит профиль «Соцсети». Можно передать только часть полей — остальные возьмутся по умолчанию.

| Поле | Значения | По умолчанию |
| --- | --- | --- |
| `container` | `mp4`, `mov` | `mp4` |
| `codec` | `h264`, `hevc` | `h264` |
| `resolution` | `720p`, `1080p`, `1440p`, `2160p` — по короткой стороне кадра | `1080p` |
| `fps` | `24`, `25`, `30` | `30` |
| `quality` | `balanced`, `high`, `max` | `high` |
| `colorDepth` | `8`, `10` — 10 бит только с `hevc` | `8` |
| `audioBitrate` | `128`, `192`, `256`, `320` кбит/с | `192` |
| `loudness` | `-14` (соцсети), `-16` (подкасты), `-23` (ТВ), LUFS | `-14` |

Готовые наборы — `GET /v1/export-presets`:

| Пресет | Профиль |
| --- | --- |
| `social` | MP4, H.264, 1080p, 30 к/с, высокое качество, 8 бит, AAC 192, −14 LUFS |
| `master` | MOV, HEVC, 1080p, 30 к/с, максимальное качество, 10 бит, AAC 320 |
| `youtube4k` | MP4, H.264, 2160p, 30 к/с, высокое качество, AAC 256 |
| `compact` | MP4, HEVC, 720p, 30 к/с, оптимальное качество, AAC 128 |

Подробнее о параметрах — в руководстве [Экспорт: пресеты и параметры файла](https://docs.slicer.media/guide/publish/export/).

## Скачать ролик и обложку

Терминал:

```bash
curl -f -o reel.mp4 "https://api.slicer.media/v1/projects/318/result" \
  -H "Authorization: Bearer $SLICER_TOKEN"

curl -f -o cover.jpg "https://api.slicer.media/v1/projects/318/poster" \
  -H "Authorization: Bearer $SLICER_TOKEN"
```

-   Тип файла — по контейнеру: `video/mp4` или `video/quicktime`; расширение — в `result.container` проекта.
-   Поддерживаются Range-запросы: файл можно докачивать и проигрывать с перемоткой.
-   `?version=902` — файл конкретной версии ролика из `GET /v1/projects/{id}/versions`.
-   Параметры готового файла (размер кадра, кодек, частота кадров, битрейт) — в `result.info`.

Ссылок на скачивание без токена нет: файл отдаётся только владельцу. Чтобы показать ролик человеку, дайте ему ссылку `appUrl` — проект откроется в веб-приложении после входа.

## Публикация в соцсети

Для публикации токену нужна область `publish`. Соцсеть сначала подключается в приложении — **Профиль** → **Соцсети для публикации**: вход в аккаунт платформы требует браузера владельца, через API его не пройти.

### 1. Найдите подключённые аккаунты

Терминал:

```bash
curl https://api.slicer.media/v1/social/accounts -H "Authorization: Bearer $SLICER_TOKEN"
```

Ответ:

```json
{
  "ok": true,
  "data": [
    { "id": 41, "platform": "youtube", "name": "Studio Anna", "status": "active", "apiPublishing": true },
    { "id": 42, "platform": "instagram", "name": "anna.studio", "status": "active", "apiPublishing": true },
    { "id": 43, "platform": "tiktok", "name": "anna.studio", "status": "active", "apiPublishing": false }
  ]
}
```

`apiPublishing: false` — в этот аккаунт через API публиковать нельзя: доступ истёк или это TikTok.

### 2. Экспортируйте с публикацией

Тело POST /v1/projects/318/export:

```json
{
  "profile": { "resolution": "1080p" },
  "publish": [
    {
      "accountId": 41,
      "title": "Монтаж за 3 минуты",
      "caption": "Как собрать ролик из одного видео #shorts",
      "options": { "youtube": { "privacy": "public", "madeForKids": false } }
    },
    {
      "accountId": 42,
      "caption": "Монтаж за 3 минуты ✂️ #reels",
      "options": { "instagram": { "shareToFeed": true } }
    }
  ]
}
```

Публикация начнётся сразу после рендера. До 8 аккаунтов за один экспорт.

### 3. Следите за публикациями

`GET /v1/projects/{id}/publications` — статус каждой публикации: `waiting` (ждёт рендера), `queued`, `uploading`, `processing` (обрабатывает платформа), `published` (в `url` — ссылка на ролик), `failed` (в `errorCode` — причина), `cancelled`. Те же события приходят [вебхуками](https://docs.slicer.media/api/webhooks/) `publication.published` и `publication.failed`.

Настройки платформ в `options`:

| Платформа | Поля |
| --- | --- |
| YouTube | `youtube.privacy` — `public`, `unlisted`, `private`; `youtube.madeForKids` |
| Instagram | `instagram.shareToFeed` — показать ролик и в ленте |
| VK Видео | `vk.privacy` — `all`, `friends`, `only_me`; `vk.wallpost` — опубликовать на стене; `vk.groupId` — сообщество или `null` (своя страница) |
| Все | `aiGenerated` — пометить ролик как созданный с помощью ИИ |

`title` — заголовок (YouTube, VK, до 150 знаков), `caption` — описание и хэштеги (до 5000 знаков). Требования платформ к файлу Slicer учитывает сам: для каждой соцсети при необходимости делается своя копия файла.

> **Заметка.** **TikTok — только из приложения Slicer.** Правила TikTok требуют, чтобы автор сам выбрал в интерфейсе, кто увидит ролик, и подтвердил согласие. Попытка опубликовать в TikTok через API вернёт `400 platform_requires_app`. Подробно — [Публикация в YouTube, Instagram, TikTok, VK](https://docs.slicer.media/guide/publish/platforms/).

## Что дальше

[ВебхукиУзнать о готовом файле и публикации без опроса.](https://docs.slicer.media/api/webhooks/)[Справочник: экспортЭндпоинты экспорта, публикаций и аккаунтов.](https://docs.slicer.media/api/reference/export/)[Ролик из папкиРецепт: от файлов до опубликованного ролика.](https://docs.slicer.media/api/recipes/folder-to-reels/)
