Утилиты и монтаж
Обработка видео, изображений и аудио, субтитры, SEO и Content Credentials через API.
Девять модулей: C2PA Signer Profiles, FORSAJ, HOLST, INDEXLIFT, KLEY, OVERLAY, PLASTINKA, SPEKTR и SUFLER. Контракты сверены с исходниками 8 сентября 2026 года; доступ зависит от аккаунта и выбранной операции.
Подключение и загрузка
Сохраните API-ключ в переменной окружения FRANKLAB_KEY. База примеров — https://apergrex.ru; пути ниже уже включают полный /franklab/api. Повтор franklab в /franklab/api/franklab/jobs обязателен. Для SPEKTR/Recraft используется X-API-Key, для остальных примеров — Authorization: Bearer. Не передавайте partnerId.
export FRANKLAB_ORIGIN="https://apergrex.ru"
# FRANKLAB_KEY is supplied by your secret manager
curl --fail-with-body "$FRANKLAB_ORIGIN/franklab/api/franklab/jobs/upload" \
-H "Authorization: Bearer $FRANKLAB_KEY" \
-F "file=@synthetic.mp4;type=video/mp4"Возьмите data.url ответа загрузки и замените им https://example.com/synthetic.* в примерах; это адреса-заполнители, не готовые медиа. Максимум 150 MiB, срок хранения источника 7 дней. MIME: video/mp4, video/webm, video/quicktime, video/x-msvideo; audio/mpeg, audio/mp3, audio/wav, audio/ogg, audio/pcm, audio/l16, audio/x-pcm; image/png, image/jpeg, image/gif, image/webp. Загрузка не преобразует формат. URL должны быть доступны серверу; локальные/частные адреса и запрещённые перенаправления не подходят. Сохраняйте готовый результат до expiresAt, если поле присутствует.
Проверка подключения: GET /franklab/api/franklab/integrations/text-sticker/auth/stats с ключом. Для SPEKTR Make читает GET /franklab/api/v1/images/omni-image?pageNum=1&pageSize=1. Это чтение истории и проверка ключа, не тест генерации.
Статус, результат и списание
Успешная отправка возвращает HTTP 200 и success:true, но это ещё не готовый файл. Для задач jobs храните data.taskId, опрашивайте свой маршрут каждые 5 секунд до data.status=completed или failed. queued и processing — промежуточные состояния. Ограничьте время ожидания; при таймауте продолжайте читать существующий ID. Не повторяйте POST автоматически после сетевой ошибки.
| Семейство | Опрос | Результат / ошибка |
|---|---|---|
| FORSAJ, HOLST, KLEY, PLASTINKA, SUFLER, SPEKTR jobs | GET /franklab/api/franklab/jobs/{taskId} | data.downloadUrl, метаданные; data.error |
| OVERLAY | GET /franklab/api/make/jobs/{taskId} | data.result.downloadUrl; data.error / data.result.error |
| INDEXLIFT async | GET /franklab/api/franklab/jobs/audit-landing/async/{taskId} | data.result.data.seo_report, data.result.data.brief_suggestions, data.phase, data.error_message |
| SPEKTR Recraft | GET /franklab/api/v1/recraft/record-info?taskId=... | data.state, разберите data.resultJson → resultUrls[]; data.failMsg |
| C2PA, ресурсы аудиосэмплов | Без опроса задач | data с профилем или аудиосэмплом |
Для задач jobs final_cost_franks сопровождается cost_currency=FRANK, cost_status и cost_unit. Пока cost_status=reserved, сумма — резерв; final означает итог, refunded — возврат, unavailable — отсутствие достоверной цены. Франк — внутренняя учётная единица, не валюта. Не считайте отсутствие поля нулевой ценой. Тариф и разрешённые функции проверяются сервером. Для обычных утилит отдельный REST-маршрут оценки стоимости не подтверждён; оценка стоимости Studio не является универсальной оценкой утилит. Операция list C2PA бесплатна в исходном контракте; остальные операции профилей могут тарифицироваться. Прямая передача запросов Recraft и синхронный INDEXLIFT не доказывают этот договор списания.
Ошибки HTTP 400 обычно означают параметры/несовместимую комбинацию, 401 — ключ, 404 — ресурс, 429 — ограничение частоты; 5xx и ошибки провайдера требуют проверки существующей задачи. success:true с data.status=failed остаётся неуспехом. Диагностические операции могут возвращать metadataReport/metrics/qcReport без файла; их доступность отмечена отдельно.
Content Credentials (C2PA)
Поддерживающие jobs принимают c2paSigningMode=off|franklab|user_profile, c2paSignerProfileId для user_profile, contentOrigin=not_declared|human_edited|ai_assisted|ai_generated|human_created|camera_captured. Дополнительные строки: humanAuthorName, humanAuthorUrl, reviewedBy, reviewedAt, reviewMethod, c2paActionDescription, c2paDisclosure. Массивы sourceMaterialUrls и originalEvidenceUrls — до 10 публичных HTTPS URL каждый. Ограниченные заявления human_created/camera_captured требуют активного разрешающего профиля и доказательств. verifiedIncomingC2paIngredient в запросе не служит доказательством: результат проверяет сервер. Успешная подпись не равна доверенной цепочке: читайте отдельно c2paStatus, c2paSigned, c2paCryptographicallyValid, c2paTrustedChainValid, c2paCawgIdentityPresent, c2paPublicVerifierRecognized, c2paManifestUrl и c2paVerificationReport. OVERLAY make/jobs DTO не объявляет C2PA-поля.
C2PA Signer Profiles
Список возвращает только активные профили партнёра без PEM. Создание и ротация требуют собственного сертификата и ключа; generate_self_signed создаёт самоподписанный профиль. trustLevel=trusted через этот маршрут запрещён. Ротация создаёт новую версию; старый ID нельзя подменять новым. Отзыв меняет действительность профиля. Эти действия здесь не выполнялись.
Операции и минимальные JSON-запросы
Каждый пример ниже задаёт полный JSON для указанного POST; замените URL/ID собственными значениями. Опции поля operation или режима выбирают разные функции, а не разные модели генерации. Статус «источник» означает проверку кода без проверки работающего API и полного цикла выполнения; «блокировано» — известное ограничение.
| Операция | HTTP и путь | Минимальный JSON / статус |
|---|---|---|
list | GET /franklab/api/make/c2pa/signer-profiles | {} источник |
generate_self_signed | POST /franklab/api/make/c2pa/signer-profiles | {"action":"generate_self_signed","label":"My signing profile"} источник |
create_from_pem | POST /franklab/api/make/c2pa/signer-profiles | {"action":"create_from_pem","label":"My signing profile","certificateChainPem":"<YOUR_CERTIFICATE_CHAIN_PEM>","privateKeyPem":"<YOUR_PRIVATE_KEY_PEM>"} источник |
rotate_from_pem | POST /franklab/api/make/c2pa/signer-profiles/{profileId}/rotate | {"label":"My signing profile","certificateChainPem":"<YOUR_CERTIFICATE_CHAIN_PEM>","privateKeyPem":"<YOUR_PRIVATE_KEY_PEM>"} источник |
revoke | POST /franklab/api/make/c2pa/signer-profiles/{profileId}/revoke | {} источник |
lookup_signer-profiles | GET /franklab/api/make/c2pa/signer-profiles | источник |
check_connection | GET /franklab/api/franklab/integrations/text-sticker/auth/stats | источник |
curl --fail-with-body "$FRANKLAB_ORIGIN/franklab/api/make/c2pa/signer-profiles" \
-H "Authorization: Bearer $FRANKLAB_KEY"Поля REST
Поля относятся к выбранной операции; обязательность уточняется условием и минимальным примером. [] — элемент массива.
| Поле | Тип | Условия и допустимые значения |
|---|---|---|
action | string | обязательно (generate_self_signed); Обязательное поле в примере этой операции; обязательно (create_from_pem) |
label | string | обязательно (generate_self_signed); Название; обязательно (create_from_pem); обязательно (rotate_from_pem) |
allowRestrictedOriginClaims | boolean | Разрешение заявлений об ограниченных вариантах происхождения; / true / false |
certificateChainPem | string | обязательно (create_from_pem); Цепочка сертификатов PEM; обязательно (rotate_from_pem) |
privateKeyPem | string | обязательно (create_from_pem); Закрытый ключ PEM; обязательно (rotate_from_pem) |
profileId | string | обязательно (rotate_from_pem); Параметр пути: ID собственного активного профиля подписи; обязательно (revoke) |
Опции Make и преобразование в REST
Это справочник выбора в Make; имена интерфейса не всегда совпадают с REST. Поля v1*/v2*, text* и sample* переводятся как описано выше. Вложенные условия относятся к интерфейсу Make.
| Поле формы | Когда | Значения |
|---|---|---|
action | list / generate_self_signed / create_from_pem / rotate_from_pem / revoke | |
profileId | action=rotate_from_pem | rpc://getC2paSignerProfiles |
allowRestrictedOriginClaims | action=rotate_from_pem | / true / false |
profileId | action=revoke | rpc://getC2paSignerProfiles |
Ответ и границы проверки
HTTP 200 {success:true,data:PROFILE[]}; profileId,id,label,status,trustLevel,allowRestrictedOriginClaims,version,profileGroupId,createdAt,updatedAt,rotatedAt,revokedAt; PEM-данные не возвращаются.
При ротации REST принимает необязательный allowRestrictedOriginClaims; отсутствие сохраняет старое значение. Текущая конфигурация communication Make не передаёт этот переключатель для rotate_from_pem.
FORSAJ
video_speed отправляет videoUrl и speed в jobs/video-speed. audio_speed отправляет аудиоссылку под именем videoUrl, operation=speed в jobs/audio. speed: 0.25–4. audioBitrate: строка 8k–320k; значение custom из Make заменяется реальным битрейтом. Поле mode не передаётся в REST. Для видео duration может отражать исходную длительность; проверяйте выходной файл.
Операции и минимальные JSON-запросы
Каждый пример ниже задаёт полный JSON для указанного POST; замените URL/ID собственными значениями. Опции поля operation или режима выбирают разные функции, а не разные модели генерации. Статус «источник» означает проверку кода без проверки работающего API и полного цикла выполнения; «блокировано» — известное ограничение.
| Операция | HTTP и путь | Минимальный JSON / статус |
|---|---|---|
video_speed | POST /franklab/api/franklab/jobs/video-speed | {"videoUrl":"https://example.com/synthetic.mp4","speed":1.1} источник |
audio_speed | POST /franklab/api/franklab/jobs/audio | {"videoUrl":"https://example.com/synthetic.wav","speed":1.1,"operation":"speed","audioBitrate":"64k"} источник |
get_task | GET /franklab/api/franklab/jobs/{taskId} | источник |
upload_source | POST /franklab/api/franklab/jobs/upload | источник |
check_connection | GET /franklab/api/franklab/integrations/text-sticker/auth/stats | источник |
curl --fail-with-body "$FRANKLAB_ORIGIN/franklab/api/franklab/jobs/video-speed" \
-H "Authorization: Bearer $FRANKLAB_KEY" \
-H "Content-Type: application/json" \
--data '{"videoUrl":"https://example.com/synthetic.mp4","speed":1.1}'Поля REST
Поля относятся к выбранной операции; обязательность уточняется условием и минимальным примером. [] — элемент массива.
| Поле | Тип | Условия и допустимые значения |
|---|---|---|
c2paSigningMode | string | off / franklab / user_profile; Режим подписи C2PA |
contentOrigin | string | franklab или user_profile; Ограниченные варианты происхождения требуют разрешающего их профиля user_profile и подтверждающих материалов; not_declared / human_edited / ai_assisted / ai_generated / human_created / camera_captured; Происхождение содержимого |
humanAuthorName | string | c2paSigningMode=franklab или c2paSigningMode=user_profile; Имя автора-человека |
humanAuthorUrl | string | c2paSigningMode=franklab или c2paSigningMode=user_profile; URL автора-человека |
reviewedBy | string | c2paSigningMode=franklab или c2paSigningMode=user_profile; Кто выполнил проверку |
reviewedAt | string | c2paSigningMode=franklab или c2paSigningMode=user_profile; Время проверки |
reviewMethod | string | c2paSigningMode=franklab или c2paSigningMode=user_profile; Метод проверки |
sourceMaterialUrls | array | c2paSigningMode=franklab или c2paSigningMode=user_profile; не более 10 элементов |
originalEvidenceUrls | array | c2paSigningMode=franklab или c2paSigningMode=user_profile; не более 10 элементов |
verifiedIncomingC2paIngredient | boolean | c2paSigningMode=franklab или c2paSigningMode=user_profile; Подтверждённый входной материал C2PA |
c2paActionDescription | string | c2paSigningMode=franklab или c2paSigningMode=user_profile; Описание действия C2PA |
c2paDisclosure | string | c2paSigningMode=franklab или c2paSigningMode=user_profile; Раскрытие сведений C2PA |
c2paSignerProfileId | string | обязательно при c2paSigningMode=user_profile; rpc://getC2paSignerProfiles; ID профиля подписи C2PA |
videoUrl | string | обязательно (video_speed); URL; обязательно (audio_speed) |
speed | number | обязательно (video_speed); минимум 0.25; максимум 4; обязательно (audio_speed) |
callbackUrl | string | URL |
audioBitrate | string | 64k / 96k / 128k / 160k / 192k / 256k / 320k; Строка от 8k до 320k; custom — элемент управления Make, в REST передавайте выбранное значение |
operation | string | обязательно (audio_speed) |
taskId | string | обязательно (get_task); Параметр пути: полученный taskId того же партнёра |
file | binary | обязательно (upload_source); Файл в multipart/form-data; не более 157286400 байт |
Опции Make и преобразование в REST
Это справочник выбора в Make; имена интерфейса не всегда совпадают с REST. Поля v1*/v2*, text* и sample* переводятся как описано выше. Вложенные условия относятся к интерфейсу Make.
| Поле формы | Когда | Значения |
|---|---|---|
mode | video_speed / audio_speed | |
audioBitrate | mode=audio_speed | 64k / 96k / 128k / 160k / 192k / 256k / 320k / custom |
c2paSigningMode | off / franklab / user_profile | |
contentOrigin | c2paSigningMode=franklab | not_declared / human_edited / ai_assisted / ai_generated |
c2paSignerProfileId | c2paSigningMode=user_profile | rpc://getC2paSignerProfiles |
contentOrigin | c2paSigningMode=user_profile | not_declared / human_edited / ai_assisted / ai_generated / human_created / camera_captured |
Ответ и границы проверки
HTTP 200 {success:true,data:{taskId,status,final_cost_franks,cost_currency,cost_status,cost_unit}}; опрашивайте статус по полученному taskId.
HOLST
Укажите imageUrl и либо operation, либо steps (до 20 шагов, каждый с op). outputFormat: jpeg/jpg/png/webp/avif/gif; outputQuality: 1–100. В текущем DTO верхнего уровня нет ряда полей Make: watermarkPosition/Opacity/Scale, textPosition/fontSize/color/font, brightness/saturation/hue/contrast/gamma, imageUrls/columns/gap/background. Для watermark, text, adjust и collage используйте steps с position/opacity/scale, content/fontSize/color, brightness и imageUrls/columns/gap соответственно. Поле font отсутствует даже в ImageStepDto: выбор шрифта для HOLST не подтверждён. removeBgProvider, alphaMatting, ocrLanguages, metadataEngine и includeGps доступны REST, но Make communication не отправляет их на верхнем уровне. OCR/remove_bg/strip_gps/read_metadata зависят от возможностей worker; info/read_metadata могут блокироваться проверкой обязательного выходного файла.
Операции и минимальные JSON-запросы
Каждый пример ниже задаёт полный JSON для указанного POST; замените URL/ID собственными значениями. Опции поля operation или режима выбирают разные функции, а не разные модели генерации. Статус «источник» означает проверку кода без проверки работающего API и полного цикла выполнения; «блокировано» — известное ограничение.
| Операция | HTTP и путь | Минимальный JSON / статус |
|---|---|---|
resize | POST /franklab/api/franklab/jobs/image | {"imageUrl":"https://example.com/synthetic.png","operation":"resize","width":64,"height":64} источник |
crop | POST /franklab/api/franklab/jobs/image | {"imageUrl":"https://example.com/synthetic.png","operation":"crop","aspectRatio":"1:1"} источник |
filter | POST /franklab/api/franklab/jobs/image | {"imageUrl":"https://example.com/synthetic.png","operation":"filter","filterPreset":"grayscale"} источник |
watermark | POST /franklab/api/franklab/jobs/image | {"imageUrl":"https://example.com/synthetic.png","steps":[{"op":"watermark","imageUrl":"https://example.com/synthetic.png","position":"bottom-right","opacity":0.5,"scale":0.15}],"outputFormat":"png"} источник |
image_overlay | POST /franklab/api/franklab/jobs/image | {"imageUrl":"https://example.com/synthetic.png","operation":"image_overlay","overlayImageUrl":"https://example.com/synthetic.png","overlayScale":0.25} источник |
text | POST /franklab/api/franklab/jobs/image | {"imageUrl":"https://example.com/synthetic.png","steps":[{"op":"text","content":"Synthetic test","fontSize":24,"color":"#FFFFFF","position":"center"}],"outputFormat":"png"} источник |
rotate | POST /franklab/api/franklab/jobs/image | {"imageUrl":"https://example.com/synthetic.png","operation":"rotate","angle":90} источник |
flip | POST /franklab/api/franklab/jobs/image | {"imageUrl":"https://example.com/synthetic.png","operation":"flip"} источник |
flop | POST /franklab/api/franklab/jobs/image | {"imageUrl":"https://example.com/synthetic.png","operation":"flop"} источник |
blur | POST /franklab/api/franklab/jobs/image | {"imageUrl":"https://example.com/synthetic.png","operation":"blur","sigma":2} источник |
sharpen | POST /franklab/api/franklab/jobs/image | {"imageUrl":"https://example.com/synthetic.png","operation":"sharpen","sigma":1} источник |
info | POST /franklab/api/franklab/jobs/image | {"imageUrl":"https://example.com/synthetic.png","operation":"info"} блокировано |
strip_meta | POST /franklab/api/franklab/jobs/image | {"imageUrl":"https://example.com/synthetic.png","operation":"strip_meta"} источник |
write_exif | POST /franklab/api/franklab/jobs/image | {"imageUrl":"https://example.com/synthetic.png","operation":"write_exif","imageDescription":"Synthetic test"} источник |
write_metadata | POST /franklab/api/franklab/jobs/image | {"imageUrl":"https://example.com/synthetic.png","operation":"write_metadata","metaTitle":"Synthetic test"} источник |
replace_metadata | POST /franklab/api/franklab/jobs/image | {"imageUrl":"https://example.com/synthetic.png","operation":"replace_metadata","metaTitle":"Synthetic test"} источник |
mask | POST /franklab/api/franklab/jobs/image | {"imageUrl":"https://example.com/synthetic.png","operation":"mask","shape":"rounded","radius":8} источник |
collage | POST /franklab/api/franklab/jobs/image | {"imageUrl":"https://example.com/synthetic.png","steps":[{"op":"collage","imageUrls":["https://example.com/synthetic.png","https://example.com/synthetic.png"],"columns":2,"gap":4}],"outputFormat":"png"} источник |
adjust | POST /franklab/api/franklab/jobs/image | {"imageUrl":"https://example.com/synthetic.png","steps":[{"op":"adjust","brightness":1.1}],"outputFormat":"png"} источник |
read_metadata | POST /franklab/api/franklab/jobs/image | {"imageUrl":"https://example.com/synthetic.png","operation":"read_metadata","metadataEngine":"exiftool"} блокировано |
remove_bg | POST /franklab/api/franklab/jobs/image | {"imageUrl":"https://example.com/synthetic.png","operation":"remove_bg","removeBgProvider":"local"} источник |
ocr | POST /franklab/api/franklab/jobs/image | {"imageUrl":"https://example.com/synthetic.png","operation":"ocr","ocrLanguages":"eng"} блокировано |
strip_gps | POST /franklab/api/franklab/jobs/image | {"imageUrl":"https://example.com/synthetic.png","operation":"strip_gps"} источник |
pipeline | POST /franklab/api/franklab/jobs/image | {"imageUrl":"https://example.com/synthetic.png","steps":[{"op":"resize","width":64,"height":64}],"outputFormat":"png"} источник |
lookup_image-presets | GET /franklab/api/franklab/integrations/text-sticker/image-presets | источник |
lookup_image-formats | GET /franklab/api/franklab/integrations/text-sticker/image-formats | источник |
lookup_fonts | GET /franklab/api/franklab/integrations/text-sticker/fonts | источник |
lookup_signer-profiles | GET /franklab/api/make/c2pa/signer-profiles | источник |
get_task | GET /franklab/api/franklab/jobs/{taskId} | источник |
upload_source | POST /franklab/api/franklab/jobs/upload | источник |
check_connection | GET /franklab/api/franklab/integrations/text-sticker/auth/stats | источник |
curl --fail-with-body "$FRANKLAB_ORIGIN/franklab/api/franklab/jobs/image" \
-H "Authorization: Bearer $FRANKLAB_KEY" \
-H "Content-Type: application/json" \
--data '{"imageUrl":"https://example.com/synthetic.png","operation":"resize","width":64,"height":64}'Поля REST
Поля относятся к выбранной операции; обязательность уточняется условием и минимальным примером. [] — элемент массива.
| Поле | Тип | Условия и допустимые значения |
|---|---|---|
imageUrl | string | обязательно (resize); URL; обязательно (crop); обязательно (filter); обязательно (watermark); обязательно (image_overlay); обязательно (text); обязательно (rotate); обязательно (flip); обязательно (flop); обязательно (blur); обязательно (sharpen); обязательно (info); обязательно (strip_meta); обязательно (write_exif); обязательно (write_metadata); обязательно (replace_metadata); обязательно (mask); обязательно (collage); обязательно (adjust); обязательно (read_metadata); обязательно (remove_bg); обязательно (ocr); обязательно (strip_gps); обязательно (pipeline) |
outputFormat | string | jpeg / png / webp / avif / gif; Выходной формат |
outputQuality | number | минимум 1; максимум 100 |
c2paSigningMode | string | off / franklab / user_profile; Режим подписи C2PA |
contentOrigin | string | franklab или user_profile; Ограниченные варианты происхождения требуют разрешающего их профиля user_profile и подтверждающих материалов; not_declared / human_edited / ai_assisted / ai_generated / human_created / camera_captured; Происхождение содержимого |
humanAuthorName | string | c2paSigningMode=franklab или c2paSigningMode=user_profile; Имя автора-человека |
humanAuthorUrl | string | c2paSigningMode=franklab или c2paSigningMode=user_profile; URL автора-человека |
reviewedBy | string | c2paSigningMode=franklab или c2paSigningMode=user_profile; Кто выполнил проверку |
reviewedAt | string | c2paSigningMode=franklab или c2paSigningMode=user_profile; Время проверки |
reviewMethod | string | c2paSigningMode=franklab или c2paSigningMode=user_profile; Метод проверки |
sourceMaterialUrls | array | c2paSigningMode=franklab или c2paSigningMode=user_profile; не более 10 элементов |
originalEvidenceUrls | array | c2paSigningMode=franklab или c2paSigningMode=user_profile; не более 10 элементов |
verifiedIncomingC2paIngredient | boolean | c2paSigningMode=franklab или c2paSigningMode=user_profile; Подтверждённый входной материал C2PA |
c2paActionDescription | string | c2paSigningMode=franklab или c2paSigningMode=user_profile; Описание действия C2PA |
c2paDisclosure | string | c2paSigningMode=franklab или c2paSigningMode=user_profile; Раскрытие сведений C2PA |
c2paSignerProfileId | string | обязательно при c2paSigningMode=user_profile; rpc://getC2paSignerProfiles; ID профиля подписи C2PA |
preset | string | rpc://getImagePresets; Пресет |
width | number | Ширина |
height | number | Высота |
fit | string | cover / contain / fill / inside / outside; Подгонка |
operation | string | обязательно (resize); обязательно (crop); обязательно (filter); обязательно (image_overlay); обязательно (rotate); обязательно (flip); обязательно (flop); обязательно (blur); обязательно (sharpen); обязательно (info); обязательно (strip_meta); обязательно (write_exif); обязательно (write_metadata); обязательно (replace_metadata); обязательно (mask); обязательно (read_metadata); обязательно (remove_bg); обязательно (ocr); обязательно (strip_gps) |
aspectRatio | string | Соотношение сторон |
filterPreset | string | grayscale / sepia / warm / cold / vibrant / muted / dramatic; Пресет фильтра |
steps | array | обязательно (watermark); не более 20 элементов; обязательно (text); обязательно (collage); обязательно (adjust); обязательно (pipeline) |
steps[].op | string | обязательно (watermark); resize / crop / filter / watermark / text / rotate / flip / flop / blur / sharpen / mask / collage / adjust / format / info / read_metadata / remove_bg / ocr / strip_meta / write_exif / write_metadata / replace_metadata / strip_gps; Операция; обязательно (text); обязательно (collage); обязательно (adjust); обязательно (pipeline) |
steps[].preset | string | steps[].op=resize или steps[].op=filter; grayscale / sepia / warm / cold / vibrant / muted / dramatic; rpc://getImagePresets; Пресет |
steps[].width | number | steps[].op=resize или steps[].op=crop или steps[].op=collage; Ширина |
steps[].height | number | steps[].op=resize или steps[].op=crop или steps[].op=collage; Высота |
steps[].fit | string | steps[].op=resize; cover / contain / fill / inside / outside; Подгонка |
steps[].aspectRatio | string | steps[].op=crop; Соотношение сторон |
steps[].left | number | steps[].op=crop; Отступ слева |
steps[].top | number | steps[].op=crop; Отступ сверху |
steps[].brightness | number | steps[].op=filter или steps[].op=adjust; Яркость |
steps[].saturation | number | steps[].op=filter или steps[].op=adjust; Насыщенность |
steps[].hue | number | steps[].op=filter или steps[].op=adjust; Оттенок |
steps[].imageUrl | string | steps[].op=watermark; URL изображения |
steps[].position | string | steps[].op=watermark или steps[].op=text; bottom-right / bottom-left / top-right / top-left / center / top-center / bottom-center; Положение |
steps[].opacity | number | steps[].op=watermark; Непрозрачность |
steps[].scale | number | steps[].op=watermark; Масштаб |
steps[].margin | number | steps[].op=watermark; Внешний отступ |
steps[].content | string | steps[].op=text; Содержимое |
steps[].fontSize | number | steps[].op=text; Размер шрифта |
steps[].color | string | steps[].op=text; Цвет |
steps[].bgColor | string | steps[].op=text; Цвет фона |
steps[].bgOpacity | number | steps[].op=text; Непрозрачность фона |
steps[].align | string | steps[].op=text; center / left / right; Выравнивание |
steps[].maxWidth | number | steps[].op=text; Максимальная ширина |
steps[].padding | number | steps[].op=text; Внутренний отступ |
steps[].angle | number | steps[].op=rotate; Угол |
steps[].background | string | steps[].op=rotate или steps[].op=collage; Фон |
steps[].sigma | number | steps[].op=blur или steps[].op=sharpen; Параметр сигма |
steps[].shape | string | steps[].op=mask; rounded / circle; Форма |
steps[].radius | number | steps[].op=mask; Радиус |
steps[].imageUrls | array | steps[].op=collage; URL изображений |
steps[].columns | number | steps[].op=collage; Число столбцов |
steps[].gap | number | steps[].op=collage; Промежуток |
steps[].contrast | number | steps[].op=adjust; Контрастность |
steps[].gamma | number | steps[].op=adjust; Гамма |
steps[].format | string | steps[].op=format; jpeg / png / webp / avif / gif; Формат |
steps[].metadataEngine | string | steps[].op=read_metadata; sharp / exiftool; Обработчик метаданных |
steps[].includeGps | boolean | steps[].op=read_metadata; Включение координат GPS |
steps[].removeBgProvider | string | steps[].op=remove_bg; local; Провайдер удаления фона |
steps[].alphaMatting | boolean | steps[].op=remove_bg; Уточнение полупрозрачных краёв |
steps[].ocrLanguages | string | steps[].op=ocr; Языки распознавания текста |
steps[].metaTitle | string | steps[].op=write_metadata или steps[].op=replace_metadata; Название в метаданных |
steps[].metaDescription | string | steps[].op=write_metadata или steps[].op=replace_metadata; Описание в метаданных |
steps[].metaKeywords | string | steps[].op=write_metadata; Ключевые слова в метаданных |
steps[].altText | string | steps[].op=write_metadata или steps[].op=replace_metadata; Альтернативный текст |
steps[].semanticDescription | string | steps[].op=write_metadata; Смысловое описание |
steps[].semanticTags | string | steps[].op=write_metadata или steps[].op=replace_metadata; Смысловые теги |
watermarkImageUrl | string | URL |
overlayImageUrl | string | обязательно (image_overlay); URL |
overlayPosition | string | top-left / top-center / top-right / center-left / center / center-right / bottom-left / bottom-center / bottom-right; Положение наложения |
overlayOpacity | number | минимум 0; максимум 1 |
overlayScale | number | минимум 0.01; максимум 1 |
overlayMargin | number | минимум 0 |
content | string | Содержимое |
angle | number | Угол |
sigma | number | Параметр сигма |
imageDescription | string | Описание изображения |
copyright | string | Авторские права |
artist | string | Исполнитель |
metaTitle | string | Название в метаданных |
metaDescription | string | Описание в метаданных |
metaKeywords | string | Ключевые слова в метаданных |
metaAuthor | string | Автор в метаданных |
metaCopyright | string | Авторские права в метаданных |
metaCredit | string | Указание источника в метаданных |
metaSoftware | string | Программное обеспечение в метаданных |
metaLicenseUrl | string | URL |
metaAcquireLicensePage | string | URL |
metaSourceUrl | string | URL |
metaDateCreated | string | Дата создания в метаданных |
metaDigitalSourceType | string | Тип цифрового источника в метаданных |
altText | string | Альтернативный текст |
semanticDescription | string | Смысловое описание |
semanticTags | string | Смысловые теги |
semanticScene | string | Смысловое описание сцены |
semanticStyle | string | Стилистические характеристики |
semanticMood | string | Настроение |
semanticColors | string | Смысловые характеристики цветов |
semanticUseCases | string | Варианты использования |
ocrText | string | Распознанный текст |
shape | string | rounded / circle; Форма |
radius | number | Радиус |
metadataEngine | string | sharp / exiftool; Обработчик метаданных |
includeGps | boolean | Включение координат GPS |
removeBgProvider | string | local; Провайдер удаления фона |
alphaMatting | boolean | Уточнение полупрозрачных краёв |
ocrLanguages | string | Языки распознавания текста |
taskId | string | обязательно (get_task); Параметр пути: полученный taskId того же партнёра |
file | binary | обязательно (upload_source); Файл в multipart/form-data; не более 157286400 байт |
Опции Make и преобразование в REST
Это справочник выбора в Make; имена интерфейса не всегда совпадают с REST. Поля v1*/v2*, text* и sample* переводятся как описано выше. Вложенные условия относятся к интерфейсу Make.
| Поле формы | Когда | Значения |
|---|---|---|
operation | resize / crop / filter / watermark / image_overlay / text / rotate / flip / flop / blur / sharpen / info / strip_meta / write_exif / write_metadata / replace_metadata / mask / collage / adjust / read_metadata / remove_bg / ocr / strip_gps | |
preset | operation=resize | rpc://getImagePresets |
fit | operation=resize | cover / contain / fill / inside / outside |
filterPreset | operation=filter | grayscale / sepia / warm / cold / vibrant / muted / dramatic |
watermarkPosition | operation=watermark | bottom-right / bottom-left / top-right / top-left / center / top-center / bottom-center |
overlayPosition | operation=image_overlay | top-left / top-center / top-right / center-left / center / center-right / bottom-left / bottom-center / bottom-right |
textFont | operation=text | rpc://getFonts |
textPosition | operation=text | center / top / bottom / top-left / top-right / bottom-left / bottom-right |
shape | operation=mask | rounded / circle |
metadataEngine | operation=read_metadata | sharp / exiftool |
removeBgProvider | operation=remove_bg | local |
outputFormat | jpeg / png / webp / avif / gif | |
c2paSigningMode | off / franklab / user_profile | |
contentOrigin | c2paSigningMode=franklab | not_declared / human_edited / ai_assisted / ai_generated |
c2paSignerProfileId | c2paSigningMode=user_profile | rpc://getC2paSignerProfiles |
contentOrigin | c2paSigningMode=user_profile | not_declared / human_edited / ai_assisted / ai_generated / human_created / camera_captured |
steps[].op | resize / crop / filter / watermark / text / rotate / flip / flop / blur / sharpen / mask / collage / adjust / format / info / read_metadata / remove_bg / ocr / strip_meta / write_exif / write_metadata / replace_metadata / strip_gps | |
steps[].preset | steps[].op=resize | rpc://getImagePresets |
steps[].fit | steps[].op=resize | cover / contain / fill / inside / outside |
steps[].preset | steps[].op=filter | grayscale / sepia / warm / cold / vibrant / muted / dramatic |
steps[].position | steps[].op=watermark | bottom-right / bottom-left / top-right / top-left / center / top-center / bottom-center |
steps[].position | steps[].op=text | center / top-center / bottom-center / top-left / top-right / bottom-left / bottom-right |
steps[].align | steps[].op=text | center / left / right |
steps[].shape | steps[].op=mask | rounded / circle |
steps[].format | steps[].op=format | jpeg / png / webp / avif / gif |
steps[].metadataEngine | steps[].op=read_metadata | sharp / exiftool |
steps[].removeBgProvider | steps[].op=remove_bg | local |
Ответ и границы проверки
HTTP 200 {success:true,data:{taskId,status,final_cost_franks,cost_currency,cost_status,cost_unit}}; опрашивайте статус по полученному taskId.
Шаги sharpen принимают sigma; flat/jagged из Make не входят в REST DTO. Шаги write_exif не объявляют imageDescription/copyright/artist: используйте одиночную operation=write_exif.
Известное ограничение REST: info, read_metadata, ocr. Worker возвращает данные без основного файла, а контур задач требует его для завершения. Эти функции блокированы до отдельного исправления; не используйте их для пробного списания.
INDEXLIFT
execution_mode=sync вызывает audit-landing с {url,mode}; async_wait вызывает audit-landing/async и отдельный маршрут status. pageUrl из Make превращается в url. mode: single-page или crawl. Для повторного чтения используйте сохранённый taskId, не создавайте новую задачу. idempotency_key отсутствует в DTO: передавайте Idempotency-Key заголовком только для асинхронного режима. Синхронный маршрут передаёт ответ SEO-службы; он не доказывает единый биллинг или схему задач обработки медиа.
Операции и минимальные JSON-запросы
Каждый пример ниже задаёт полный JSON для указанного POST; замените URL/ID собственными значениями. Опции поля operation или режима выбирают разные функции, а не разные модели генерации. Статус «источник» означает проверку кода без проверки работающего API и полного цикла выполнения; «блокировано» — известное ограничение.
| Операция | HTTP и путь | Минимальный JSON / статус |
|---|---|---|
async_wait | POST /franklab/api/franklab/jobs/audit-landing/async | {"url":"https://example.com/","mode":"single-page"} источник |
sync | POST /franklab/api/franklab/jobs/audit-landing | {"url":"https://example.com/","mode":"single-page"} источник |
get_task | GET /franklab/api/franklab/jobs/audit-landing/async/{taskId} | источник |
upload_source | POST /franklab/api/franklab/jobs/upload | источник |
check_connection | GET /franklab/api/franklab/integrations/text-sticker/auth/stats | источник |
curl --fail-with-body "$FRANKLAB_ORIGIN/franklab/api/franklab/jobs/audit-landing/async" \
-H "Authorization: Bearer $FRANKLAB_KEY" \
-H "Content-Type: application/json" \
--data '{"url":"https://example.com/","mode":"single-page"}'Для асинхронного POST добавьте -H "Idempotency-Key: your-unique-request-id". Одинаковый ключ используйте только для того же запроса.
Поля REST
Поля относятся к выбранной операции; обязательность уточняется условием и минимальным примером. [] — элемент массива.
| Поле | Тип | Условия и допустимые значения |
|---|---|---|
url | string | обязательно (async_wait); Публичный HTTP(S) URL; обязательно (sync) |
mode | string | single-page / crawl |
taskId | string | обязательно (get_task); Параметр пути: полученный taskId того же партнёра |
file | binary | обязательно (upload_source); Файл в multipart/form-data; не более 157286400 байт |
Опции Make и преобразование в REST
Это справочник выбора в Make; имена интерфейса не всегда совпадают с REST. Поля v1*/v2*, text* и sample* переводятся как описано выше. Вложенные условия относятся к интерфейсу Make.
| Поле формы | Когда | Значения |
|---|---|---|
execution_mode | async_wait / sync | |
mode | single-page / crawl |
Ответ и границы проверки
Синхронный режим передаёт ответ SEO-сервиса; асинхронный режим: {success:true,data:{taskId,task_id,status:"queued",phase,idempotency_key,idempotency_hit,final_cost_franks,cost_currency,cost_status:"reserved",cost_unit}}.
Асинхронный INDEXLIFT использует zeroCost в исходниках и не открывает резерв. Это отдельная бесплатная схема выполнения, не платная задача обработки медиа; фактическое выполнение всё равно требует проверки. Проверка родительской задачи 8 сентября 2026 года обнаружила отчёт по пути data.result.data.seo_report: data.result сохраняет оболочку SEO-сервиса. Рекомендации, если присутствуют, читайте в data.result.data.brief_suggestions. Make сейчас читает верхний body.data.seo_report и может пропустить результат. При успешном асинхронном выполнении cost_status=confirmed с нулевой стоимостью, а не final обычного JobsFacade.
KLEY
Выбор operation определяет маршрут: speed → video-speed; subtitles → subtitles; overlay/image_on_video → overlay; остальные → montage. concat принимает videos[] с url и параметрами перехода к следующему клипу; поля перехода последнего элемента игнорируются. transitionSoundMode=none/auto/manual; manual требует transitionSoundPreset, громкость 0–1.5. Не передавайте отдельную строку transitionType на верхнем уровне. slideshow требует минимум 2 изображения; slideTransitionDuration меньше slideDuration. quality_compare требует referenceVideoUrl. Сравнения и анализ не гарантируют downloadUrl и требуют отдельной проверки выполнения.
Операции и минимальные JSON-запросы
Каждый пример ниже задаёт полный JSON для указанного POST; замените URL/ID собственными значениями. Опции поля operation или режима выбирают разные функции, а не разные модели генерации. Статус «источник» означает проверку кода без проверки работающего API и полного цикла выполнения; «блокировано» — известное ограничение.
| Операция | HTTP и путь | Минимальный JSON / статус |
|---|---|---|
concat | POST /franklab/api/franklab/jobs/montage | {"operation":"concat","videos":[{"url":"https://example.com/synthetic.mp4"},{"url":"https://example.com/synthetic.mp4"}]} источник |
frame | POST /franklab/api/franklab/jobs/montage | {"videoUrl":"https://example.com/synthetic.mp4","operation":"frame","position":"start","format":"png"} источник |
trim | POST /franklab/api/franklab/jobs/montage | {"videoUrl":"https://example.com/synthetic.mp4","operation":"trim","startTime":0,"duration":1} источник |
reverse | POST /franklab/api/franklab/jobs/montage | {"videoUrl":"https://example.com/synthetic.mp4","operation":"reverse"} источник |
crop | POST /franklab/api/franklab/jobs/montage | {"videoUrl":"https://example.com/synthetic.mp4","operation":"crop","aspectRatio":"1:1"} источник |
resize | POST /franklab/api/franklab/jobs/montage | {"videoUrl":"https://example.com/synthetic.mp4","operation":"resize","width":160,"height":160} источник |
probe | POST /franklab/api/franklab/jobs/montage | {"videoUrl":"https://example.com/synthetic.mp4","operation":"probe"} блокировано |
write_tags | POST /franklab/api/franklab/jobs/montage | {"videoUrl":"https://example.com/synthetic.mp4","operation":"write_tags","tagTitle":"Synthetic test"} источник |
replace_tags | POST /franklab/api/franklab/jobs/montage | {"videoUrl":"https://example.com/synthetic.mp4","operation":"replace_tags","tagTitle":"Synthetic test"} источник |
strip_tags | POST /franklab/api/franklab/jobs/montage | {"videoUrl":"https://example.com/synthetic.mp4","operation":"strip_tags"} источник |
gif | POST /franklab/api/franklab/jobs/montage | {"videoUrl":"https://example.com/synthetic.mp4","operation":"gif","duration":1,"fps":5,"width":160} источник |
fade | POST /franklab/api/franklab/jobs/montage | {"videoUrl":"https://example.com/synthetic.mp4","operation":"fade","fadeInDuration":0.2} источник |
thumbnail_smart | POST /franklab/api/franklab/jobs/montage | {"videoUrl":"https://example.com/synthetic.mp4","operation":"thumbnail_smart"} источник |
transcode | POST /franklab/api/franklab/jobs/montage | {"videoUrl":"https://example.com/synthetic.mp4","operation":"transcode","videoCodec":"libx264","crf":28} источник |
pip | POST /franklab/api/franklab/jobs/montage | {"videoUrl":"https://example.com/synthetic.mp4","operation":"pip","overlayVideoUrl":"https://example.com/synthetic.mp4","pipScale":0.25} источник |
image_on_video | POST /franklab/api/franklab/jobs/overlay | {"videoUrl":"https://example.com/synthetic.mp4","operation":"image_on_video","overlayImageUrl":"https://example.com/synthetic.png","overlayScale":0.25} источник |
video_on_image | POST /franklab/api/franklab/jobs/montage | {"videoUrl":"https://example.com/synthetic.mp4","operation":"video_on_image","imageUrl":"https://example.com/synthetic.png","overlayVideoUrl":"https://example.com/synthetic.mp4","durationMode":"overlay"} источник |
slideshow | POST /franklab/api/franklab/jobs/montage | {"videoUrl":"https://example.com/synthetic.mp4","operation":"slideshow","imageUrls":["https://example.com/synthetic.png","https://example.com/synthetic.png"],"slideDuration":1,"slideTransition":"none"} источник |
speed | POST /franklab/api/franklab/jobs/video-speed | {"videoUrl":"https://example.com/synthetic.mp4","speed":1.1} источник |
subtitles | POST /franklab/api/franklab/jobs/subtitles | {"videoUrl":"https://example.com/synthetic.mp4","subtitles":[{"text":"Synthetic test","startTime":0,"endTime":1}]} источник |
overlay | POST /franklab/api/franklab/jobs/overlay | {"videoUrl":"https://example.com/synthetic.mp4","overlays":[{"type":"text","content":"Synthetic test","x":50,"y":50}]} источник |
quality_compare | POST /franklab/api/franklab/jobs/montage | {"videoUrl":"https://example.com/synthetic.mp4","operation":"quality_compare","referenceVideoUrl":"https://example.com/synthetic.mp4"} блокировано |
stabilize | POST /franklab/api/franklab/jobs/montage | {"videoUrl":"https://example.com/synthetic.mp4","operation":"stabilize"} источник |
scenes | POST /franklab/api/franklab/jobs/montage | {"videoUrl":"https://example.com/synthetic.mp4","operation":"scenes"} блокировано |
qc_report | POST /franklab/api/franklab/jobs/montage | {"videoUrl":"https://example.com/synthetic.mp4","operation":"qc_report"} блокировано |
split_screen | POST /franklab/api/franklab/jobs/montage | {"videoUrl":"https://example.com/synthetic.mp4","operation":"split_screen","videos":[{"url":"https://example.com/synthetic.mp4"},{"url":"https://example.com/synthetic.mp4"}],"splitLayout":"horizontal"} источник |
slow_motion | POST /franklab/api/franklab/jobs/montage | {"videoUrl":"https://example.com/synthetic.mp4","operation":"slow_motion","slowFactor":2,"slowFps":30} источник |
denoise | POST /franklab/api/franklab/jobs/montage | {"videoUrl":"https://example.com/synthetic.mp4","operation":"denoise","denoiseMethod":"hqdn3d","denoiseStrength":"low"} источник |
hdr_to_sdr | POST /franklab/api/franklab/jobs/montage | {"videoUrl":"https://example.com/synthetic.mp4","operation":"hdr_to_sdr","tonemapMethod":"hable"} источник |
animated | POST /franklab/api/franklab/jobs/montage | {"videoUrl":"https://example.com/synthetic.mp4","operation":"animated","animatedFormat":"webp","duration":1,"fps":5,"width":160} источник |
mezzanine | POST /franklab/api/franklab/jobs/montage | {"videoUrl":"https://example.com/synthetic.mp4","operation":"mezzanine","mezzanineCodec":"prores","proresProfile":0} источник |
lookup_transitions | GET /franklab/api/franklab/integrations/text-sticker/transitions | источник |
lookup_transition-sounds | GET /franklab/api/franklab/integrations/text-sticker/transition-sounds | источник |
lookup_aspect-ratios | GET /franklab/api/franklab/integrations/text-sticker/aspect-ratios | источник |
lookup_resize-presets | GET /franklab/api/franklab/integrations/text-sticker/resize-presets | источник |
lookup_signer-profiles | GET /franklab/api/make/c2pa/signer-profiles | источник |
get_task | GET /franklab/api/franklab/jobs/{taskId} | источник |
upload_source | POST /franklab/api/franklab/jobs/upload | источник |
check_connection | GET /franklab/api/franklab/integrations/text-sticker/auth/stats | источник |
curl --fail-with-body "$FRANKLAB_ORIGIN/franklab/api/franklab/jobs/montage" \
-H "Authorization: Bearer $FRANKLAB_KEY" \
-H "Content-Type: application/json" \
--data '{"operation":"concat","videos":[{"url":"https://example.com/synthetic.mp4"},{"url":"https://example.com/synthetic.mp4"}]}'Поля REST
Поля относятся к выбранной операции; обязательность уточняется условием и минимальным примером. [] — элемент массива.
| Поле | Тип | Условия и допустимые значения |
|---|---|---|
callbackUrl | string | URL |
videos | array | не более 20 элементов |
maxTransitionRatio | number | Максимальная доля перехода |
operation | string | обязательно (concat); обязательно (frame); обязательно (trim); обязательно (reverse); обязательно (crop); обязательно (resize); обязательно (probe); обязательно (write_tags); обязательно (replace_tags); обязательно (strip_tags); обязательно (gif); обязательно (fade); обязательно (thumbnail_smart); обязательно (transcode); обязательно (pip); обязательно (image_on_video); обязательно (video_on_image); обязательно (slideshow); обязательно (quality_compare); обязательно (stabilize); обязательно (scenes); обязательно (qc_report); обязательно (split_screen); обязательно (slow_motion); обязательно (denoise); обязательно (hdr_to_sdr); обязательно (animated); обязательно (mezzanine) |
videoUrl | string | обязательно (frame); URL; обязательно (trim); обязательно (reverse); обязательно (crop); обязательно (resize); обязательно (probe); обязательно (write_tags); обязательно (replace_tags); обязательно (strip_tags); обязательно (gif); обязательно (fade); обязательно (thumbnail_smart); обязательно (transcode); обязательно (pip); обязательно (image_on_video); обязательно (video_on_image); обязательно (slideshow); обязательно (speed); обязательно (subtitles); обязательно (overlay); обязательно (quality_compare); обязательно (stabilize); обязательно (scenes); обязательно (qc_report); обязательно (split_screen); обязательно (slow_motion); обязательно (denoise); обязательно (hdr_to_sdr); обязательно (animated); обязательно (mezzanine) |
position | string | first / middle / last / custom; Положение |
customTime | number | Пользовательское время |
format | string | jpg / png; Формат |
startTime | number | Время начала; минимум 0 |
duration | number | Длительность; минимум 0 |
aspectRatio | string | rpc://getAspectRatios; Соотношение сторон |
cropW | number | Ширина области обрезки |
cropH | number | Высота области обрезки |
cropX | number | Координата X области обрезки |
cropY | number | Координата Y области обрезки |
preset | string | rpc://getResizePresets; Пресет; fast / medium / slow / veryslow |
width | number | Ширина |
height | number | Высота |
tagTitle | string | Название в тегах |
tagArtist | string | Исполнитель в тегах |
tagDescription | string | Описание в тегах |
tagComment | string | Комментарий в тегах |
tagDate | string | Дата в тегах |
tagKeywords | string | Ключевые слова в тегах |
tagCopyright | string | Авторские права в тегах |
tagSoftware | string | Программное обеспечение в тегах |
tagGenre | string | Жанр в тегах |
tagLanguage | string | Язык в тегах |
tagCreationTime | string | Время создания в тегах |
summary | string | Краткое содержание |
transcript | string | Транскрипт |
thumbnailAltText | string | Альтернативный текст миниатюры |
c2paSigningMode | string | off / franklab / user_profile; Режим подписи C2PA |
c2paSignerProfileId | string | обязательно при c2paSigningMode=user_profile; rpc://getC2paSignerProfiles; ID профиля подписи C2PA |
contentOrigin | string | franklab или user_profile; Ограниченные варианты происхождения требуют разрешающего их профиля user_profile и подтверждающих материалов; not_declared / human_edited / ai_assisted / ai_generated / human_created / camera_captured; Происхождение содержимого |
sourceMaterialUrls | array | не более 10 элементов |
originalEvidenceUrls | array | не более 10 элементов |
verifiedIncomingC2paIngredient | boolean | Подтверждённый входной материал C2PA |
c2paActionDescription | string | Описание действия C2PA |
c2paDisclosure | string | Раскрытие сведений C2PA |
fps | number | Частота кадров |
fadeInDuration | number | Длительность плавного появления |
fadeOutDuration | number | Длительность плавного исчезновения |
videoCodec | string | libx264 / libx265 / libvpx-vp9 / copy; Видеокодек |
crf | number | crf |
audioBitrate | string | 64k / 96k / 128k / 160k / 192k / 256k / 320k; Строка от 8k до 320k; custom — элемент управления Make, в REST передавайте выбранное значение |
overlayVideoUrl | string | обязательно (pip); URL; обязательно (video_on_image) |
pipPosition | string | top-left / top-right / bottom-left / bottom-right / center; Положение картинки в картинке |
pipScale | number | Масштаб картинки в картинке |
includeBaseAudio | boolean | Включение исходной звуковой дорожки |
baseAudioVolume | number | Громкость исходной звуковой дорожки |
includeOverlayAudio | boolean | Включение звука наложения |
overlayAudioVolume | number | Громкость звука наложения |
overlayImageUrl | string | обязательно (image_on_video); URL |
overlayPosition | string | top-left / top-center / top-right / center / bottom-left / bottom-center / bottom-right; Положение наложения |
overlayScale | number | минимум 0.01; максимум 1 |
overlayOpacity | number | минимум 0; максимум 1 |
overlayMargin | number | минимум 0 |
endTime | number | минимум 0 |
imageUrl | string | обязательно (video_on_image); URL |
durationMode | string | overlay / fixed; Режим длительности |
imageUrls | array | не более 20 элементов |
slideDuration | number | Длительность слайда |
slideTransition | string | rpc://getTransitions; Переход между слайдами |
slideTransitionDuration | number | Длительность перехода между слайдами |
speed | number | обязательно (speed); минимум 0.25; максимум 4 |
templateId | string | ID шаблона |
language | string | ru / en / auto; Язык |
highlightMode | string | none / keywords / karaoke; Режим выделения |
platform | string | none / tiktok / instagram_reels / youtube_shorts; Платформа |
safeZonePreset | string | Пресет безопасной зоны |
subtitles | array | не более 500 элементов |
overlays | array | не более 20 элементов |
configId | string | ID конфигурации |
referenceVideoUrl | string | обязательно (quality_compare); URL |
shakiness | number | минимум 1; максимум 10 |
smoothing | number | минимум 1; максимум 100 |
sceneThreshold | number | минимум 1; максимум 100 |
sceneThumbnails | boolean | Миниатюры сцен |
splitLayout | string | horizontal / vertical / grid_2x2; Схема разделения |
slowFactor | number | 2 / 4; Коэффициент замедления |
slowFps | number | 30 / 60; Частота кадров при замедлении |
denoiseMethod | string | hqdn3d / nlmeans; Метод шумоподавления |
denoiseStrength | string | low / medium / high; Интенсивность шумоподавления |
tonemapMethod | string | hable / mobius / reinhard; Метод тонального отображения |
animatedFormat | string | webp / avif; Формат анимации |
mezzanineCodec | string | prores / dnxhd; Промежуточный кодек |
proresProfile | number | 0 / 1 / 2 / 3; Профиль ProRes |
dnxhdProfile | string | dnxhr_lb / dnxhr_sq / dnxhr_hq / dnxhr_hqx; Профиль DNxHD |
taskId | string | обязательно (get_task); Параметр пути: полученный taskId того же партнёра |
file | binary | обязательно (upload_source); Файл в multipart/form-data; не более 157286400 байт |
Опции Make и преобразование в REST
Это справочник выбора в Make; имена интерфейса не всегда совпадают с REST. Поля v1*/v2*, text* и sample* переводятся как описано выше. Вложенные условия относятся к интерфейсу Make.
| Поле формы | Когда | Значения |
|---|---|---|
operation | concat / frame / trim / reverse / crop / resize / probe / write_tags / replace_tags / strip_tags / gif / fade / thumbnail_smart / transcode / pip / image_on_video / video_on_image / slideshow / speed / subtitles / overlay / quality_compare / stabilize / scenes / qc_report / split_screen / slow_motion / denoise / hdr_to_sdr / animated / mezzanine | |
position | operation=frame | first / middle / last / custom |
format | operation=frame | jpg / png |
aspectRatio | operation=crop | rpc://getAspectRatios |
preset | operation=resize | rpc://getResizePresets |
c2paSigningMode | operation=write_tags | off / franklab / user_profile |
c2paSignerProfileId | operation=write_tags | rpc://getC2paSignerProfiles |
contentOrigin | operation=write_tags | not_declared / human_edited / ai_assisted / ai_generated / human_created / camera_captured |
c2paSigningMode | operation=replace_tags | off / franklab / user_profile |
c2paSignerProfileId | operation=replace_tags | rpc://getC2paSignerProfiles |
contentOrigin | operation=replace_tags | not_declared / human_edited / ai_assisted / ai_generated / human_created / camera_captured |
format | operation=thumbnail_smart | jpg / png |
videoCodec | operation=transcode | libx264 / libx265 / libvpx-vp9 / copy |
preset | operation=transcode | fast / medium / slow / veryslow |
pipPosition | operation=pip | top-left / top-right / bottom-left / bottom-right / center |
overlayPosition | operation=image_on_video | top-left / top-center / top-right / center / bottom-left / bottom-center / bottom-right |
pipPosition | operation=video_on_image | top-left / top-right / bottom-left / bottom-right / center |
durationMode | operation=video_on_image | overlay / fixed |
slideTransition | operation=slideshow | rpc://getTransitions |
subtitleLanguage | operation=subtitles | ru / en / auto |
highlightMode | operation=subtitles | none / keywords / karaoke |
subtitlePlatform | operation=subtitles | none / tiktok / instagram_reels / youtube_shorts |
splitLayout | operation=split_screen | horizontal / vertical / grid_2x2 |
slowFactor | operation=slow_motion | 2 / 4 |
slowFps | operation=slow_motion | 30 / 60 |
denoiseMethod | operation=denoise | hqdn3d / nlmeans |
denoiseStrength | operation=denoise | low / medium / high |
tonemapMethod | operation=hdr_to_sdr | hable / mobius / reinhard |
animatedFormat | operation=animated | webp / avif |
mezzanineCodec | operation=mezzanine | prores / dnxhd |
proresProfile | operation=mezzanine | 0 / 1 / 2 / 3 |
dnxhdProfile | operation=mezzanine | dnxhr_lb / dnxhr_sq / dnxhr_hq / dnxhr_hqx |
Ответ и границы проверки
HTTP 200 {success:true,data:{taskId,status,final_cost_franks,cost_currency,cost_status,cost_unit}}; опрашивайте статус по полученному taskId.
Известное ограничение REST: probe, quality_compare, qc_report, scenes. Worker возвращает данные без основного файла, а контур задач требует его для завершения. Эти функции блокированы до отдельного исправления; не используйте их для пробного списания.
OVERLAY
Создание и опрос идут через make/jobs. Ссылка результата находится в data.result.downloadUrl. overlays — массив до 20 объектов: type=text/sticker/animated_sticker/emoji/watermark, параметры зависят от type. Используйте ID справочников. Для текстового слоя content — текст, для watermark — imageUrl; не передавайте оба представления как один тип. platform и configId задают размещение.
Операции и минимальные JSON-запросы
Каждый пример ниже задаёт полный JSON для указанного POST; замените URL/ID собственными значениями. Опции поля operation или режима выбирают разные функции, а не разные модели генерации. Статус «источник» означает проверку кода без проверки работающего API и полного цикла выполнения; «блокировано» — известное ограничение.
| Операция | HTTP и путь | Минимальный JSON / статус |
|---|---|---|
overlay | POST /franklab/api/make/jobs/overlay | {"videoUrl":"https://example.com/synthetic.mp4","overlays":[{"type":"text","content":"Synthetic test","x":50,"y":50,"fontSize":24,"color":"#FFFFFF"}]} источник |
lookup_stickers_animated_true | GET /franklab/api/franklab/integrations/text-sticker/stickers?animated=true | источник |
lookup_emojis | GET /franklab/api/franklab/integrations/text-sticker/emojis | источник |
lookup_fonts | GET /franklab/api/franklab/integrations/text-sticker/fonts | источник |
lookup_stickers_animated_false | GET /franklab/api/franklab/integrations/text-sticker/stickers?animated=false | источник |
lookup_safe-zone-options | GET /franklab/api/franklab/integrations/text-sticker/safe-zone-options | источник |
lookup_subtitle-templates | GET /franklab/api/franklab/integrations/text-sticker/subtitle-templates | источник |
lookup_transitions | GET /franklab/api/franklab/integrations/text-sticker/transitions | источник |
lookup_video-effects | GET /franklab/api/franklab/integrations/text-sticker/video-effects | источник |
get_task | GET /franklab/api/make/jobs/{taskId} | источник |
upload_source | POST /franklab/api/franklab/jobs/upload | источник |
check_connection | GET /franklab/api/franklab/integrations/text-sticker/auth/stats | источник |
curl --fail-with-body "$FRANKLAB_ORIGIN/franklab/api/make/jobs/overlay" \
-H "Authorization: Bearer $FRANKLAB_KEY" \
-H "Content-Type: application/json" \
--data '{"videoUrl":"https://example.com/synthetic.mp4","overlays":[{"type":"text","content":"Synthetic test","x":50,"y":50,"fontSize":24,"color":"#FFFFFF"}]}'Поля REST
Поля относятся к выбранной операции; обязательность уточняется условием и минимальным примером. [] — элемент массива.
| Поле | Тип | Условия и допустимые значения |
|---|---|---|
videoUrl | string | обязательно (overlay); URL |
platform | string | none / tiktok / instagram_reels / youtube_shorts; Платформа |
configId | string | ID конфигурации |
overlays | array | не более 20 элементов |
overlays[].type | string | обязательно (overlay); text / emoji / sticker / animated_sticker / watermark; Тип |
overlays[].content | string | Содержимое |
overlays[].stickerId | string | rpc://getOverlayStickers; ID стикера |
overlays[].animatedStickerId | string | rpc://getOverlayAnimatedStickers; ID анимированного стикера |
overlays[].imageUrl | string | URL изображения |
overlays[].opacity | number | Непрозрачность |
overlays[].scale | number | Масштаб |
overlays[].position | string | / bottom-right / bottom-left / top-right / top-left / center / top-center / bottom-center; Положение |
overlays[].margin | number | Внешний отступ |
overlays[].emojiId | string | rpc://getOverlayEmojis; ID эмодзи |
overlays[].placement | string | custom / center / top_safe / bottom_safe / top_left_safe / top_right_safe / bottom_left_safe / bottom_right_safe; Размещение |
overlays[].x | number | overlays[].x |
overlays[].y | number | overlays[].y |
overlays[].startTime | number | Время начала |
overlays[].endTime | number | Время окончания |
overlays[].fontSize | number | Размер шрифта |
overlays[].color | string | Цвет |
overlays[].font | string | rpc://getOverlayFonts; Шрифт |
overlays[].shadowColor | string | Цвет тени |
overlays[].shadowX | number | Смещение тени по X |
overlays[].shadowY | number | Смещение тени по Y |
overlays[].width | number | Ширина |
overlays[].height | number | Высота |
callbackUrl | string | URL |
taskId | string | обязательно (get_task); Параметр пути: полученный taskId того же партнёра |
file | binary | обязательно (upload_source); Файл в multipart/form-data; не более 157286400 байт |
Опции Make и преобразование в REST
Это справочник выбора в Make; имена интерфейса не всегда совпадают с REST. Поля v1*/v2*, text* и sample* переводятся как описано выше. Вложенные условия относятся к интерфейсу Make.
| Поле формы | Когда | Значения |
|---|---|---|
platform | none / tiktok / instagram_reels / youtube_shorts | |
overlays[].type | text / emoji / sticker / animated_sticker / watermark | |
overlays[].stickerId | rpc://getOverlayStickers | |
overlays[].animatedStickerId | rpc://getOverlayAnimatedStickers | |
overlays[].position | / bottom-right / bottom-left / top-right / top-left / center / top-center / bottom-center | |
overlays[].emojiId | rpc://getOverlayEmojis | |
overlays[].placement | custom / center / top_safe / bottom_safe / top_left_safe / top_right_safe / bottom_left_safe / bottom_right_safe | |
overlays[].font | rpc://getOverlayFonts |
Ответ и границы проверки
HTTP 200 {success:true,data:{taskId,status,final_cost_franks,cost_currency,cost_status,cost_unit}}; опрашивайте статус по полученному taskId.
PLASTINKA
Проверка 8 сентября 2026 года: в примере trim с исходным WAV получен контейнер MP4 с копированием аудиопотока без перекодирования. Локальный декодер не распознал кодек результата, поэтому пригодность этого файла к воспроизведению не подтверждена. Наблюдение относится к этому сочетанию операции и входного формата.
Для аудиообработки исходная аудиоссылка называется videoUrl. Для overlay/replace/fit добавьте audioUrl либо sampleId; apply_sample из Make превращается в operation=sampleOperation (overlay/replace). merge принимает audioUrls[] и videoUrl, равный первому URL. save_sample возвращает ресурс с id, а не задачу: JSON {name,sampleUrl} либо multipart name+sampleFile, ровно один источник, до 50 MiB, mp3/wav/aac/m4a/ogg/flac. sampleEndTime должен быть больше sampleStartTime. sampleSourceMode=file показан в Make, но communication отправляет JSON без sampleFile; используйте прямой multipart REST.
Операции и минимальные JSON-запросы
Каждый пример ниже задаёт полный JSON для указанного POST; замените URL/ID собственными значениями. Опции поля operation или режима выбирают разные функции, а не разные модели генерации. Статус «источник» означает проверку кода без проверки работающего API и полного цикла выполнения; «блокировано» — известное ограничение.
| Операция | HTTP и путь | Минимальный JSON / статус |
|---|---|---|
save_sample | POST /franklab/api/franklab/audio-samples | {"name":"Synthetic sample","sampleUrl":"https://example.com/synthetic.wav"} источник |
apply_sample | POST /franklab/api/franklab/jobs/audio | {"videoUrl":"https://example.com/synthetic.mp4","operation":"overlay","sampleId":"<SAMPLE_UUID>"} источник |
overlay | POST /franklab/api/franklab/jobs/audio | {"videoUrl":"https://example.com/synthetic.wav","operation":"overlay","audioUrl":"https://example.com/synthetic.wav"} источник |
replace | POST /franklab/api/franklab/jobs/audio | {"videoUrl":"https://example.com/synthetic.wav","operation":"replace","audioUrl":"https://example.com/synthetic.wav"} источник |
fit | POST /franklab/api/franklab/jobs/audio | {"videoUrl":"https://example.com/synthetic.wav","operation":"fit","audioUrl":"https://example.com/synthetic.wav","fitStrategy":"trim_pad","fitAudioMode":"replace"} источник |
extract | POST /franklab/api/franklab/jobs/audio | {"videoUrl":"https://example.com/synthetic.wav","operation":"extract"} источник |
speed | POST /franklab/api/franklab/jobs/audio | {"videoUrl":"https://example.com/synthetic.wav","operation":"speed","speed":1.1} источник |
remove | POST /franklab/api/franklab/jobs/audio | {"videoUrl":"https://example.com/synthetic.wav","operation":"remove"} источник |
probe | POST /franklab/api/franklab/jobs/audio | {"videoUrl":"https://example.com/synthetic.wav","operation":"probe"} блокировано |
write_tags | POST /franklab/api/franklab/jobs/audio | {"videoUrl":"https://example.com/synthetic.wav","operation":"write_tags","tagTitle":"Synthetic test"} источник |
replace_tags | POST /franklab/api/franklab/jobs/audio | {"videoUrl":"https://example.com/synthetic.wav","operation":"replace_tags","tagTitle":"Synthetic test"} источник |
strip_tags | POST /franklab/api/franklab/jobs/audio | {"videoUrl":"https://example.com/synthetic.wav","operation":"strip_tags"} источник |
normalize | POST /franklab/api/franklab/jobs/audio | {"videoUrl":"https://example.com/synthetic.wav","operation":"normalize","targetLoudness":-16} источник |
trim | POST /franklab/api/franklab/jobs/audio | {"videoUrl":"https://example.com/synthetic.wav","operation":"trim","startTime":0,"duration":1} источник |
convert | POST /franklab/api/franklab/jobs/audio | {"videoUrl":"https://example.com/synthetic.wav","operation":"convert","targetFormat":"mp3","audioBitrate":"64k"} источник |
fade | POST /franklab/api/franklab/jobs/audio | {"videoUrl":"https://example.com/synthetic.wav","operation":"fade","fadeInDuration":0.2} источник |
merge | POST /franklab/api/franklab/jobs/audio | {"videoUrl":"https://example.com/synthetic.wav","operation":"merge","audioUrls":["https://example.com/synthetic.wav","https://example.com/synthetic.wav"]} источник |
quality_compare | POST /franklab/api/franklab/jobs/audio | {"videoUrl":"https://example.com/synthetic.wav","operation":"quality_compare","referenceAudioUrl":"https://example.com/synthetic.wav"} блокировано |
analyze | POST /franklab/api/franklab/jobs/audio | {"videoUrl":"https://example.com/synthetic.wav","operation":"analyze"} блокировано |
spectrogram | POST /franklab/api/franklab/jobs/audio | {"videoUrl":"https://example.com/synthetic.wav","operation":"spectrogram","imageWidth":320,"imageHeight":240} источник |
waveform_image | POST /franklab/api/franklab/jobs/audio | {"videoUrl":"https://example.com/synthetic.wav","operation":"waveform_image","imageWidth":320,"imageHeight":240} источник |
fingerprint | POST /franklab/api/franklab/jobs/audio | {"videoUrl":"https://example.com/synthetic.wav","operation":"fingerprint"} блокировано |
enhance_dialogue | POST /franklab/api/franklab/jobs/audio | {"videoUrl":"https://example.com/synthetic.wav","operation":"enhance_dialogue","enhanceOriginal":1,"enhanceAmount":1} источник |
stereo_tools | POST /franklab/api/franklab/jobs/audio | {"videoUrl":"https://example.com/synthetic.wav","operation":"stereo_tools","stereoPreset":"mono"} источник |
lookup_audio-samples | GET /franklab/api/franklab/integrations/text-sticker/audio-samples | источник |
lookup_signer-profiles | GET /franklab/api/make/c2pa/signer-profiles | источник |
get_task | GET /franklab/api/franklab/jobs/{taskId} | источник |
upload_source | POST /franklab/api/franklab/jobs/upload | источник |
save_sample_file | POST /franklab/api/franklab/audio-samples | источник |
list_samples | GET /franklab/api/franklab/audio-samples | источник |
check_connection | GET /franklab/api/franklab/integrations/text-sticker/auth/stats | источник |
curl --fail-with-body "$FRANKLAB_ORIGIN/franklab/api/franklab/jobs/audio" \
-H "Authorization: Bearer $FRANKLAB_KEY" \
-H "Content-Type: application/json" \
--data '{"videoUrl":"https://example.com/synthetic.mp4","operation":"overlay","sampleId":"<SAMPLE_UUID>"}'curl --fail-with-body "$FRANKLAB_ORIGIN/franklab/api/franklab/audio-samples" \
-H "Authorization: Bearer $FRANKLAB_KEY" \
-F "name=Synthetic sample" -F "sampleFile=@synthetic.wav;type=audio/wav"Поля REST
Поля относятся к выбранной операции; обязательность уточняется условием и минимальным примером. [] — элемент массива.
| Поле | Тип | Условия и допустимые значения |
|---|---|---|
name | string | обязательно (save_sample); не более 120 символов; обязательно (save_sample_file); Non-empty, maximum 120 characters |
sampleUrl | string | обязательно при sampleSourceMode=url; URL |
sampleStartTime | number | минимум 0; Seconds >=0 |
sampleEndTime | number | минимум 0; Время в секундах, больше времени начала |
videoUrl | string | обязательно (apply_sample); URL; обязательно (overlay); обязательно (replace); обязательно (fit); обязательно (extract); обязательно (speed); обязательно (remove); обязательно (probe); обязательно (write_tags); обязательно (replace_tags); обязательно (strip_tags); обязательно (normalize); обязательно (trim); обязательно (convert); обязательно (fade); обязательно (merge); обязательно (quality_compare); обязательно (analyze); обязательно (spectrogram); обязательно (waveform_image); обязательно (fingerprint); обязательно (enhance_dialogue); обязательно (stereo_tools) |
sampleId | string | обязательно (apply_sample); rpc://getAudioSamples; ID аудиосэмпла |
operation | string | обязательно (apply_sample); overlay / replace / fit; Операция; обязательно (overlay); обязательно (replace); обязательно (fit); обязательно (extract); обязательно (speed); обязательно (remove); обязательно (probe); обязательно (write_tags); обязательно (replace_tags); обязательно (strip_tags); обязательно (normalize); обязательно (trim); обязательно (convert); обязательно (fade); обязательно (merge); обязательно (quality_compare); обязательно (analyze); обязательно (spectrogram); обязательно (waveform_image); обязательно (fingerprint); обязательно (enhance_dialogue); обязательно (stereo_tools) |
insertAtTime | number | минимум 0 |
audioStartTime | number | минимум 0 |
audioEndTime | number | минимум 0 |
audioVolume | number | минимум 0; максимум 2 |
videoVolume | number | минимум 0; максимум 2; fitAudioMode=mix |
loopIfShort | boolean | Зацикливание при недостаточной длительности; fitStrategy=trim_pad |
callbackUrl | string | URL |
audioUrl | string | обязательно (overlay); URL; обязательно (replace); обязательно (fit) |
audioFadeOut | boolean | Плавное затухание звука |
fitAudioMode | string | обязательно (fit); replace / mix; Режим подгонки аудио |
fitStrategy | string | обязательно (fit); trim_pad / stretch; Способ подгонки |
speedMode | string | обязательно при fitStrategy=stretch; standard / voice_natural; Режим скорости; обязательно (speed) |
speed | number | обязательно (speed); минимум 0.25; максимум 4 |
audioBitrate | string | 64k / 96k / 128k / 160k / 192k / 256k / 320k; Строка от 8k до 320k; custom — элемент управления Make, в REST передавайте выбранное значение |
tagTitle | string | Название в тегах |
tagArtist | string | Исполнитель в тегах |
tagAlbum | string | Альбом в тегах |
tagGenre | string | Жанр в тегах |
tagComment | string | Комментарий в тегах |
tagDate | string | Дата в тегах |
tagDescription | string | Описание в тегах |
tagKeywords | string | Ключевые слова в тегах |
tagCopyright | string | Авторские права в тегах |
tagComposer | string | Композитор в тегах |
tagAlbumArtist | string | Исполнитель альбома в тегах |
tagTrack | string | Номер дорожки в тегах |
tagDisc | string | Номер диска в тегах |
tagPublisher | string | Издатель в тегах |
tagBpm | string | Темп в тегах |
tagLanguage | string | Язык в тегах |
tagSoftware | string | Программное обеспечение в тегах |
summary | string | Краткое содержание |
transcript | string | Транскрипт |
c2paSigningMode | string | off / franklab / user_profile; Режим подписи C2PA |
c2paSignerProfileId | string | обязательно при c2paSigningMode=user_profile; rpc://getC2paSignerProfiles; ID профиля подписи C2PA |
contentOrigin | string | franklab или user_profile; Ограниченные варианты происхождения требуют разрешающего их профиля user_profile и подтверждающих материалов; not_declared / human_edited / ai_assisted / ai_generated / human_created / camera_captured; Происхождение содержимого |
sourceMaterialUrls | array | не более 10 элементов |
originalEvidenceUrls | array | не более 10 элементов |
verifiedIncomingC2paIngredient | boolean | Подтверждённый входной материал C2PA |
c2paActionDescription | string | Описание действия C2PA |
c2paDisclosure | string | Раскрытие сведений C2PA |
targetLoudness | number | Целевая громкость |
targetTruePeak | number | Целевой истинный пиковый уровень |
startTime | number | минимум 0 |
duration | number | обязательно (trim); минимум 0 |
targetFormat | string | обязательно (convert); mp3 / aac / wav / ogg / flac / alac / opus; Целевой формат |
fadeInDuration | number | минимум 0 |
fadeOutDuration | number | минимум 0 |
audioUrls | array | не более 20 элементов |
referenceAudioUrl | string | обязательно (quality_compare); URL |
imageWidth | number | минимум 160; максимум 4096 |
imageHeight | number | минимум 120; максимум 2160 |
spectrogramColor | string | intensity / channel / rainbow / moreland / nebulae / fire / fiery / fruit / cool / magma / green / viridis / plasma / cividis / terrain; Цвет спектрограммы |
spectrogramScale | string | log / lin / sqrt / cbrt / 4thrt / 5thrt; Шкала спектрограммы |
spectrogramLegend | boolean | Легенда спектрограммы |
waveformColor | string | Цвет волновой формы |
waveformBgColor | string | Цвет фона волновой формы |
waveformSplitChannels | boolean | Раздельное отображение каналов |
enhanceOriginal | number | минимум 0; максимум 1 |
enhanceAmount | number | минимум 0; максимум 3 |
stereoPreset | string | widen / narrow / mono; Стереопресет |
taskId | string | обязательно (get_task); Параметр пути: полученный taskId того же партнёра |
file | binary | обязательно (upload_source); Файл в multipart/form-data; не более 157286400 байт |
sampleFile | binary | обязательно (save_sample_file); multipart/form-data; <=50 MiB; mp3/wav/aac/m4a/ogg/flac |
Опции Make и преобразование в REST
Это справочник выбора в Make; имена интерфейса не всегда совпадают с REST. Поля v1*/v2*, text* и sample* переводятся как описано выше. Вложенные условия относятся к интерфейсу Make.
| Поле формы | Когда | Значения |
|---|---|---|
operation | save_sample / apply_sample / overlay / replace / fit / extract / speed / remove / probe / write_tags / replace_tags / strip_tags / normalize / trim / convert / fade / merge / quality_compare / analyze / spectrogram / waveform_image / fingerprint / enhance_dialogue / stereo_tools | |
sampleSourceMode | operation=save_sample | url / file |
sampleId | operation=apply_sample | rpc://getAudioSamples |
sampleOperation | operation=apply_sample | overlay / replace / fit |
fitAudioMode | operation=fit | replace / mix |
fitStrategy | operation=fit | trim_pad / stretch |
speedMode | operation=fit; fitStrategy=stretch | standard / voice_natural |
speedMode | operation=speed | standard / voice_natural |
audioBitrate | operation=speed | 64k / 96k / 128k / 160k / 192k / 256k / 320k / custom |
c2paSigningMode | operation=write_tags | off / franklab / user_profile |
c2paSignerProfileId | operation=write_tags | rpc://getC2paSignerProfiles |
contentOrigin | operation=write_tags | not_declared / human_edited / ai_assisted / ai_generated / human_created / camera_captured |
c2paSigningMode | operation=replace_tags | off / franklab / user_profile |
c2paSignerProfileId | operation=replace_tags | rpc://getC2paSignerProfiles |
contentOrigin | operation=replace_tags | not_declared / human_edited / ai_assisted / ai_generated / human_created / camera_captured |
targetFormat | operation=convert | mp3 / aac / wav / ogg / flac / alac / opus |
audioBitrate | operation=convert | 64k / 96k / 128k / 160k / 192k / 256k / 320k / custom |
spectrogramColor | operation=spectrogram | intensity / channel / rainbow / moreland / nebulae / fire / fiery / fruit / cool / magma / green / viridis / plasma / cividis / terrain |
spectrogramScale | operation=spectrogram | log / lin / sqrt / cbrt / 4thrt / 5thrt |
stereoPreset | operation=stereo_tools | widen / narrow / mono |
Ответ и границы проверки
HTTP 200 {success:true,data:{id,name,sourceUrl,mimeType,format,durationMs,clipStartTime,clipEndTime,isSystem,createdAt}}; опрос статуса задачи не требуется.
Известное ограничение REST: probe, quality_compare, analyze, fingerprint. Worker возвращает данные без основного файла, а контур задач требует его для завершения. Эти функции блокированы до отдельного исправления; не используйте их для пробного списания.
SPEKTR
Проверка 8 сентября 2026 года: тестовая задача waveform завершилась со статусом failed и возвратом средств (cost_status=refunded). Успешный результат этой операции не подтверждён; наблюдение не определяет состояние остальных операций SPEKTR.
background_remove использует X-API-Key и Recraft {model:"recraft/remove-background",input:{image:URL}}. Ответ провайдера: code/data.taskId; status — data.state, результат — JSON.parse(data.resultJson).resultUrls[]. Это прямая передача запроса без подтверждённого клиентского списания FrankLab. Остальные операции используют Bearer и jobs. waveform: audioUrl из Make → videoUrl; video_round → operation=round; video_remove_bg → operation=remove_bg. Bria replace image требует ровно одно из prompt/refImages; erase_by_text — objectName; lifestyle — sceneDescription. Для Bria video erase >5 секунд нужен autoTrim=true, фактическую длительность проверяет сервер. При возобновлении jobs через Make task_id возможен ошибочный выбор маршрута опроса Recraft; в REST сохраняйте маршрут вместе с ID.
Операции и минимальные JSON-запросы
Каждый пример ниже задаёт полный JSON для указанного POST; замените URL/ID собственными значениями. Опции поля operation или режима выбирают разные функции, а не разные модели генерации. Статус «источник» означает проверку кода без проверки работающего API и полного цикла выполнения; «блокировано» — известное ограничение.
| Операция | HTTP и путь | Минимальный JSON / статус |
|---|---|---|
background_remove | POST /franklab/api/v1/recraft/create-task | {"model":"recraft/remove-background","input":{"image":"https://example.com/synthetic.png"}} блокировано |
bria_image_remove_bg | POST /franklab/api/franklab/jobs/image | {"operation":"bria_image_remove_bg","imageUrl":"https://example.com/synthetic.png"} источник |
bria_image_replace_bg | POST /franklab/api/franklab/jobs/image | {"operation":"bria_image_replace_bg","imageUrl":"https://example.com/synthetic.png","prompt":"Plain studio background"} источник |
bria_erase_foreground | POST /franklab/api/franklab/jobs/image | {"operation":"bria_erase_foreground","imageUrl":"https://example.com/synthetic.png"} источник |
bria_erase_by_text | POST /franklab/api/franklab/jobs/image | {"operation":"bria_erase_by_text","imageUrl":"https://example.com/synthetic.png","objectName":"lamp"} источник |
bria_product_lifestyle_by_text | POST /franklab/api/franklab/jobs/image | {"operation":"bria_product_lifestyle_by_text","imageUrl":"https://example.com/synthetic.png","sceneDescription":"Product on a plain table","placementType":"automatic_aspect_ratio","briaAspectRatio":"1:1"} источник |
bria_product_cutout | POST /franklab/api/franklab/jobs/image | {"operation":"bria_product_cutout","imageUrl":"https://example.com/synthetic.png"} источник |
waveform | POST /franklab/api/franklab/jobs/montage | {"operation":"waveform","videoUrl":"https://example.com/synthetic.wav","width":320,"height":240} источник |
video_round | POST /franklab/api/franklab/jobs/montage | {"operation":"round","videoUrl":"https://example.com/synthetic.mp4","shape":"rounded","radius":8,"backgroundColor":"#000000"} источник |
video_remove_bg | POST /franklab/api/franklab/jobs/montage | {"operation":"remove_bg","videoUrl":"https://example.com/synthetic.mp4","removeBgProvider":"bria","removeBgOutputCodec":"webm_vp9"} источник |
bria_video_replace_bg | POST /franklab/api/franklab/jobs/montage | {"operation":"bria_video_replace_bg","videoUrl":"https://example.com/synthetic.mp4","backgroundUrl":"https://example.com/synthetic.png","duration":1} источник |
bria_video_erase_object | POST /franklab/api/franklab/jobs/montage | {"operation":"bria_video_erase_object","videoUrl":"https://example.com/synthetic.mp4","maskUrl":"https://example.com/synthetic.mp4","duration":1} источник |
get_task | GET /franklab/api/franklab/jobs/{taskId} | источник |
upload_source | POST /franklab/api/franklab/jobs/upload | источник |
get_recraft_task | GET /franklab/api/v1/recraft/record-info | блокировано |
check_connection | GET /franklab/api/v1/images/omni-image | источник |
curl --fail-with-body "$FRANKLAB_ORIGIN/franklab/api/franklab/jobs/montage" \
-H "Authorization: Bearer $FRANKLAB_KEY" \
-H "Content-Type: application/json" \
--data '{"operation":"waveform","videoUrl":"https://example.com/synthetic.wav","width":320,"height":240}'Поля REST
Поля относятся к выбранной операции; обязательность уточняется условием и минимальным примером. [] — элемент массива.
| Поле | Тип | Условия и допустимые значения |
|---|---|---|
model | string | обязательно (background_remove); recraft/remove-background |
input | object | обязательно (background_remove); Входной объект |
input.image | string | обязательно (background_remove); URL изображения; В Make указаны png/jpg/webp, до 5 МБ, до 16 Мп, 256–4096 пикселей |
callBackUrl | string | Необязательный URL обратного вызова провайдера |
callbackUrl | string | URL |
imageUrl | string | обязательно (bria_image_remove_bg); URL; обязательно (bria_image_replace_bg); обязательно (bria_erase_foreground); обязательно (bria_erase_by_text); обязательно (bria_product_lifestyle_by_text); обязательно (bria_product_cutout) |
preserveAlpha | boolean | Сохранение альфа-канала |
operation | string | обязательно (bria_image_remove_bg); обязательно (bria_image_replace_bg); обязательно (bria_erase_foreground); обязательно (bria_erase_by_text); обязательно (bria_product_lifestyle_by_text); обязательно (bria_product_cutout); обязательно (waveform); обязательно (video_round); обязательно (video_remove_bg); обязательно (bria_video_replace_bg); обязательно (bria_video_erase_object) |
prompt | string | Промпт |
refImages | array | Референсные изображения |
briaMode | string | high_control / base / fast; Режим Bria |
negativePrompt | string | Негативный промпт |
refinePrompt | boolean | Уточнение промпта |
originalQuality | boolean | Исходное качество |
forceBackgroundDetection | boolean | Принудительное определение фона |
seed | number | Начальное значение генератора |
objectName | string | обязательно (bria_erase_by_text); Название объекта |
sceneDescription | string | обязательно (bria_product_lifestyle_by_text); Описание сцены |
optimizeDescription | boolean | Оптимизация описания |
placementType | string | automatic_aspect_ratio / original / manual_placement / manual_padding / custom_coordinates; Тип размещения |
briaAspectRatio | string | 1:1 / 4:5 / 9:16 / 16:9 / 3:2 / 2:3; Соотношение сторон Bria |
forceRmbg | boolean | Принудительное удаление фона |
sku | string | sku |
videoUrl | string | обязательно (waveform); URL; обязательно (video_round); обязательно (video_remove_bg); обязательно (bria_video_replace_bg); обязательно (bria_video_erase_object) |
width | number | Ширина |
height | number | Высота |
waveformColor | string | Цвет волновой формы |
waveformBgColor | string | Цвет фона волновой формы |
shape | string | rounded / circle; Форма |
radius | number | Радиус |
backgroundColor | string | Цвет фона |
removeBgProvider | string | bria / auto / replicate; Провайдер удаления фона |
removeBgBackgroundColor | string | Transparent / Black / White / Gray / Red / Green / Blue / Yellow / Cyan / Magenta / Orange; Цвет фона после удаления |
removeBgOutputCodec | string | webm_vp9 / mov_h265 / mov_proresks / mkv_vp9 / gif / mp4_h264 / mp4_h265 / mkv_h264 / mkv_h265; Кодек после удаления фона |
removeBgPreserveAudio | boolean | Сохранение звука при удалении фона |
backgroundUrl | string | обязательно (bria_video_replace_bg); URL |
duration | number | Длительность |
briaOutputCodec | string | mp4_h264 / mp4_h265 / webm_vp9 / mov_h265 / mov_proresks / mkv_h264 / mkv_h265 / mkv_vp9 / gif; Выходной кодек Bria |
briaPreserveAudio | boolean | Сохранение звука Bria |
maskUrl | string | обязательно (bria_video_erase_object); URL |
autoTrim | boolean | Автоматическая обрезка |
taskId | string | обязательно (get_task); Параметр пути: полученный taskId того же партнёра; обязательно (get_recraft_task); Параметр запроса, полученный от recraft/create-task |
file | binary | обязательно (upload_source); Файл в multipart/form-data; не более 157286400 байт |
pageNum | number | Пагинация через параметры запроса; Проверка соединения использует 1 |
pageSize | number | Пагинация через параметры запроса; Проверка соединения использует 1 |
Опции Make и преобразование в REST
Это справочник выбора в Make; имена интерфейса не всегда совпадают с REST. Поля v1*/v2*, text* и sample* переводятся как описано выше. Вложенные условия относятся к интерфейсу Make.
| Поле формы | Когда | Значения |
|---|---|---|
operation | background_remove / bria_image_remove_bg / bria_image_replace_bg / bria_erase_foreground / bria_erase_by_text / bria_product_lifestyle_by_text / bria_product_cutout / waveform / video_round / video_remove_bg / bria_video_replace_bg / bria_video_erase_object | |
briaMode | operation=bria_image_replace_bg | high_control / base / fast |
briaMode | operation=bria_product_lifestyle_by_text | high_control / base / fast |
placementType | operation=bria_product_lifestyle_by_text | automatic_aspect_ratio / original / manual_placement / manual_padding / custom_coordinates |
briaAspectRatio | operation=bria_product_lifestyle_by_text | 1:1 / 4:5 / 9:16 / 16:9 / 3:2 / 2:3 |
shape | operation=video_round | rounded / circle |
removeBgProvider | operation=video_remove_bg | bria / auto / replicate |
removeBgBackgroundColor | operation=video_remove_bg | Transparent / Black / White / Gray / Red / Green / Blue / Yellow / Cyan / Magenta / Orange |
removeBgOutputCodec | operation=video_remove_bg | webm_vp9 / mov_h265 / mov_proresks / mkv_vp9 / gif / mp4_h264 / mp4_h265 / mkv_h264 / mkv_h265 |
briaOutputCodec | operation=bria_video_replace_bg | mp4_h264 / mp4_h265 / webm_vp9 / mov_h265 / mov_proresks / mkv_h264 / mkv_h265 / mkv_vp9 / gif |
briaOutputCodec | operation=bria_video_erase_object | mp4_h264 / mp4_h265 / webm_vp9 / mov_h265 / mov_proresks / mkv_h264 / mkv_h265 / mkv_vp9 / gif |
Ответ и границы проверки
HTTP-ответ с JSON провайдера {code:200,data:{taskId}}; проверяйте code и msg отдельно от статуса HTTP.
Recraft: завершение определяется data.state=success|fail. Цикл Make проверяет другие поля и может продолжать опрос после завершения; прямой REST-клиент должен проверять state.
SUFLER
videoUrl обязателен. Автораспознавание: не передавайте subtitles; transcriptionEngine выбирает whisper/xai_grok_transcribe/gemini/local_whisper/elevenlabs_scribe. Ручной режим: subtitles[] с text,startTime,endTime; 0 ≤ startTime < endTime. words[] использует word,start,end, без перекрытия и внутри реплики. До 500 реплик. Make v1*/v2* — имена формы, REST принимает templateId,fontSize,color,positionX и др. Для v2 ручные настройки требуют presetOverrideMode=manual. Для перевода — translateTo и при необходимости dualLanguage. outputMode: burn/srt/vtt/ass/burn+srt/burn+vtt. v1 использует highlightMode; v2 — renderMode и emphasisMode.
Операции и минимальные JSON-запросы
Каждый пример ниже задаёт полный JSON для указанного POST; замените URL/ID собственными значениями. Опции поля operation или режима выбирают разные функции, а не разные модели генерации. Статус «источник» означает проверку кода без проверки работающего API и полного цикла выполнения; «блокировано» — известное ограничение.
| Операция | HTTP и путь | Минимальный JSON / статус |
|---|---|---|
v1 | POST /franklab/api/franklab/jobs/subtitles | {"videoUrl":"https://example.com/synthetic.mp4","captionEngine":"v1","subtitles":[{"text":"Synthetic test","startTime":0,"endTime":1}],"outputMode":"burn"} источник |
v2 | POST /franklab/api/franklab/jobs/subtitles | {"videoUrl":"https://example.com/synthetic.mp4","captionEngine":"v2","subtitles":[{"text":"Synthetic test","startTime":0,"endTime":1}],"outputMode":"burn","templateId":"shorts_pro"} источник |
lookup_fonts | GET /franklab/api/franklab/integrations/text-sticker/fonts | источник |
lookup_subtitle-templates | GET /franklab/api/franklab/integrations/text-sticker/subtitle-templates | источник |
lookup_video-effects | GET /franklab/api/franklab/integrations/text-sticker/video-effects | источник |
lookup_safe-zone-platform-options | GET /franklab/api/franklab/integrations/text-sticker/safe-zone-platform-options | источник |
lookup_safe-zone-placement-options | GET /franklab/api/franklab/integrations/text-sticker/safe-zone-placement-options | источник |
get_task | GET /franklab/api/franklab/jobs/{taskId} | источник |
upload_source | POST /franklab/api/franklab/jobs/upload | источник |
check_connection | GET /franklab/api/franklab/integrations/text-sticker/auth/stats | источник |
curl --fail-with-body "$FRANKLAB_ORIGIN/franklab/api/franklab/jobs/subtitles" \
-H "Authorization: Bearer $FRANKLAB_KEY" \
-H "Content-Type: application/json" \
--data '{"videoUrl":"https://example.com/synthetic.mp4","captionEngine":"v1","subtitles":[{"text":"Synthetic test","startTime":0,"endTime":1}],"outputMode":"burn"}'Поля REST
Поля относятся к выбранной операции; обязательность уточняется условием и минимальным примером. [] — элемент массива.
| Поле | Тип | Условия и допустимые значения |
|---|---|---|
videoUrl | string | обязательно (v1); URL; обязательно (v2) |
language | string | auto / ru / en; Язык |
transcriptionEngine | string | subtitleSourceMode=auto; whisper / xai_grok_transcribe / elevenlabs_scribe / local_whisper; Система транскрибации |
diarize | boolean | subtitleSourceMode=auto; transcriptionEngine=xai_grok_transcribe или subtitleSourceMode=auto; transcriptionEngine=elevenlabs_scribe; Разделение по говорящим |
transcriptionFormat | boolean | subtitleSourceMode=auto; transcriptionEngine=xai_grok_transcribe; Формат транскрибации |
fillerWords | boolean | subtitleSourceMode=auto; transcriptionEngine=xai_grok_transcribe; Слова-паразиты |
keyterm | array | subtitleSourceMode=auto; transcriptionEngine=xai_grok_transcribe или subtitleSourceMode=auto; transcriptionEngine=elevenlabs_scribe или subtitleSourceMode=auto; transcriptionEngine=local_whisper; не более 100 элементов; не более 50 символов |
keyterm[] | string | обязательно при subtitleSourceMode=auto; transcriptionEngine=xai_grok_transcribe; keyterm[] |
subtitles | array | обязательно при subtitleSourceMode=manual; не более 500 элементов |
subtitles[].text | string | обязательно при subtitleSourceMode=manual; Текст |
subtitles[].startTime | number | обязательно при subtitleSourceMode=manual; Время начала |
subtitles[].endTime | number | обязательно при subtitleSourceMode=manual; Время окончания |
subtitles[].words | array | subtitleSourceMode=manual; Слова |
subtitles[].words[].word | string | обязательно при subtitleSourceMode=manual; Слово |
subtitles[].words[].start | number | обязательно при subtitleSourceMode=manual; Начало |
subtitles[].words[].end | number | обязательно при subtitleSourceMode=manual; Окончание |
translateTo | string | translationMode=translate; en / ru / de / fr / es / it / pt / zh / ja / ko / ar; Язык перевода |
dualLanguage | boolean | translationMode=translate; Два языка |
videoEffects | array | effectsMode=custom; не более 20 элементов |
videoEffects[].effectId | string | обязательно при effectsMode=custom; rpc://getVideoEffects; ID эффекта |
videoEffects[].scope | string | effectsMode=custom; clip / range; Область применения |
videoEffects[].startTime | number | effectsMode=custom; Время начала |
videoEffects[].endTime | number | effectsMode=custom; Время окончания |
videoEffects[].intensity | number | effectsMode=custom; Интенсивность |
outputMode | string | burn / srt / vtt / ass / burn+srt / burn+vtt; Режим вывода |
c2paSigningMode | string | off / franklab / user_profile; Режим подписи C2PA |
contentOrigin | string | franklab или user_profile; Ограниченные варианты происхождения требуют разрешающего их профиля user_profile и подтверждающих материалов; not_declared / human_edited / ai_assisted / ai_generated / human_created / camera_captured; Происхождение содержимого |
humanAuthorName | string | c2paSigningMode=franklab или c2paSigningMode=user_profile; Имя автора-человека |
humanAuthorUrl | string | c2paSigningMode=franklab или c2paSigningMode=user_profile; URL автора-человека |
reviewedBy | string | c2paSigningMode=franklab или c2paSigningMode=user_profile; Кто выполнил проверку |
reviewedAt | string | c2paSigningMode=franklab или c2paSigningMode=user_profile; Время проверки |
reviewMethod | string | c2paSigningMode=franklab или c2paSigningMode=user_profile; Метод проверки |
sourceMaterialUrls | array | c2paSigningMode=franklab или c2paSigningMode=user_profile; не более 10 элементов |
originalEvidenceUrls | array | c2paSigningMode=franklab или c2paSigningMode=user_profile; не более 10 элементов |
verifiedIncomingC2paIngredient | boolean | c2paSigningMode=franklab или c2paSigningMode=user_profile; Подтверждённый входной материал C2PA |
c2paActionDescription | string | c2paSigningMode=franklab или c2paSigningMode=user_profile; Описание действия C2PA |
c2paDisclosure | string | c2paSigningMode=franklab или c2paSigningMode=user_profile; Раскрытие сведений C2PA |
c2paSignerProfileId | string | обязательно при c2paSigningMode=user_profile; rpc://getC2paSignerProfiles; ID профиля подписи C2PA |
callbackUrl | string | URL |
templateId | string | clean-classic / clean-bold / podcast-lower-third / interview-soft-shadow / reels-punch / tiktok-bold-center / tiktok-keyword-highlight / viral-word-pop / clean-product-demo / boxed-active-word / karaoke-lite / karaoke-pop / gaming-outline / gaming-neon / education-marker / education-clean-center / minimal-modern / boxed-bold / emoji-accent / meme-caption / serif-cinematic / classic-subtitles / creator-hook / news-ticker / documentary-narration / sports-highlight / luxury-minimal / horror-crawl / children-playful / corporate-clean / vlog-casual / music-lyric / creative-handwritten / travel-explorer / tech-review / motivational-impact / cooking-recipe / fitness-energy / wedding-elegant / retro-display / academic-formal / brand-showcase / slavic-decorative; ID шаблона; shorts_pro / creator_hook_v2 / product_demo_v2 / cta_product_v2 / sufler_bold_emoji_stack_v2 / sufler_ref_dan_v2 / sufler_ref_viktor_v2 / sufler_neon_outline_emoji_v2 / sufler_orange_active_strip_v2 / sufler_minimal_white_pill_v2 / sufler_black_shadow_keyword_v2 / sufler_neon_banner_v2 / sufler_clean_yellow_stack_v2 / sufler_compact_yellow_italic_v2 / sufler_orange_keyword_stack_v2 / frank_bold_orange_box_v2 / frank_green_caption_box_v2 / frank_bold_yellow_icon_v2 / frank_creator_yellow_stack_v2 / frank_red_green_active_v2 / frank_red_white_active_v2 / frank_yellow_keyword_v2 / frank_yellow_italic_v2 / frank_soft_pill_v2 |
highlightMode | string | / none / keywords / karaoke / emoji; Режим выделения |
platform | string | v1PlacementMode=exact_preset; rpc://getSafeZonePlatforms; Платформа; v2TemplateId=shorts_pro; v2PresetControlMode=manual; v2PlacementMode=exact_preset или v2TemplateId=creator_hook_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset или v2TemplateId=product_demo_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset или v2TemplateId=cta_product_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset или v2TemplateId=sufler_bold_emoji_stack_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset или v2TemplateId=sufler_ref_dan_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset или v2TemplateId=sufler_ref_viktor_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset или v2TemplateId=sufler_neon_outline_emoji_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset или v2TemplateId=sufler_orange_active_strip_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset или v2TemplateId=sufler_minimal_white_pill_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset или v2TemplateId=sufler_black_shadow_keyword_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset или v2TemplateId=sufler_neon_banner_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset или v2TemplateId=sufler_clean_yellow_stack_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset или v2TemplateId=sufler_compact_yellow_italic_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset или v2TemplateId=sufler_orange_keyword_stack_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset или v2TemplateId=frank_bold_orange_box_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset или v2TemplateId=frank_green_caption_box_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset или v2TemplateId=frank_bold_yellow_icon_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset или v2TemplateId=frank_creator_yellow_stack_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset или v2TemplateId=frank_red_green_active_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset или v2TemplateId=frank_red_white_active_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset или v2TemplateId=frank_yellow_keyword_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset или v2TemplateId=frank_yellow_italic_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset или v2TemplateId=frank_soft_pill_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset; Параметр запроса; Используйте platform из справочника платформ безопасных зон |
safeZonePreset | string | v1PlacementMode=exact_preset; rpc://getSafeZonePlacements; Пресет безопасной зоны; v2TemplateId=shorts_pro; v2PresetControlMode=manual; v2PlacementMode=exact_preset или v2TemplateId=creator_hook_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset или v2TemplateId=product_demo_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset или v2TemplateId=cta_product_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset или v2TemplateId=sufler_bold_emoji_stack_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset или v2TemplateId=sufler_ref_dan_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset или v2TemplateId=sufler_ref_viktor_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset или v2TemplateId=sufler_neon_outline_emoji_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset или v2TemplateId=sufler_orange_active_strip_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset или v2TemplateId=sufler_minimal_white_pill_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset или v2TemplateId=sufler_black_shadow_keyword_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset или v2TemplateId=sufler_neon_banner_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset или v2TemplateId=sufler_clean_yellow_stack_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset или v2TemplateId=sufler_compact_yellow_italic_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset или v2TemplateId=sufler_orange_keyword_stack_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset или v2TemplateId=frank_bold_orange_box_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset или v2TemplateId=frank_green_caption_box_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset или v2TemplateId=frank_bold_yellow_icon_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset или v2TemplateId=frank_creator_yellow_stack_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset или v2TemplateId=frank_red_green_active_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset или v2TemplateId=frank_red_white_active_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset или v2TemplateId=frank_yellow_keyword_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset или v2TemplateId=frank_yellow_italic_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset или v2TemplateId=frank_soft_pill_v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset |
positionX | number | v1PlacementMode=exact_coordinates; минимум 0; максимум 100; v2TemplateId=shorts_pro; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates или v2TemplateId=creator_hook_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates или v2TemplateId=product_demo_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates или v2TemplateId=cta_product_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates или v2TemplateId=sufler_bold_emoji_stack_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates или v2TemplateId=sufler_ref_dan_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates или v2TemplateId=sufler_ref_viktor_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates или v2TemplateId=sufler_neon_outline_emoji_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates или v2TemplateId=sufler_orange_active_strip_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates или v2TemplateId=sufler_minimal_white_pill_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates или v2TemplateId=sufler_black_shadow_keyword_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates или v2TemplateId=sufler_neon_banner_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates или v2TemplateId=sufler_clean_yellow_stack_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates или v2TemplateId=sufler_compact_yellow_italic_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates или v2TemplateId=sufler_orange_keyword_stack_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates или v2TemplateId=frank_bold_orange_box_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates или v2TemplateId=frank_green_caption_box_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates или v2TemplateId=frank_bold_yellow_icon_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates или v2TemplateId=frank_creator_yellow_stack_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates или v2TemplateId=frank_red_green_active_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates или v2TemplateId=frank_red_white_active_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates или v2TemplateId=frank_yellow_keyword_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates или v2TemplateId=frank_yellow_italic_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates или v2TemplateId=frank_soft_pill_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates |
positionY | number | v1PlacementMode=exact_coordinates; минимум 0; максимум 100; v2TemplateId=shorts_pro; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates или v2TemplateId=creator_hook_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates или v2TemplateId=product_demo_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates или v2TemplateId=cta_product_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates или v2TemplateId=sufler_bold_emoji_stack_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates или v2TemplateId=sufler_ref_dan_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates или v2TemplateId=sufler_ref_viktor_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates или v2TemplateId=sufler_neon_outline_emoji_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates или v2TemplateId=sufler_orange_active_strip_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates или v2TemplateId=sufler_minimal_white_pill_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates или v2TemplateId=sufler_black_shadow_keyword_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates или v2TemplateId=sufler_neon_banner_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates или v2TemplateId=sufler_clean_yellow_stack_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates или v2TemplateId=sufler_compact_yellow_italic_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates или v2TemplateId=sufler_orange_keyword_stack_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates или v2TemplateId=frank_bold_orange_box_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates или v2TemplateId=frank_green_caption_box_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates или v2TemplateId=frank_bold_yellow_icon_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates или v2TemplateId=frank_creator_yellow_stack_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates или v2TemplateId=frank_red_green_active_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates или v2TemplateId=frank_red_white_active_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates или v2TemplateId=frank_yellow_keyword_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates или v2TemplateId=frank_yellow_italic_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates или v2TemplateId=frank_soft_pill_v2; v2PresetControlMode=manual; v2PlacementMode=exact_coordinates |
fontSize | number | v1TextStyleMode=custom; минимум 1; максимум 512; v2TemplateId=shorts_pro; v2PresetControlMode=manual или v2TemplateId=creator_hook_v2; v2PresetControlMode=manual или v2TemplateId=product_demo_v2; v2PresetControlMode=manual или v2TemplateId=cta_product_v2; v2PresetControlMode=manual или v2TemplateId=sufler_bold_emoji_stack_v2; v2PresetControlMode=manual или v2TemplateId=sufler_ref_dan_v2; v2PresetControlMode=manual или v2TemplateId=sufler_ref_viktor_v2; v2PresetControlMode=manual или v2TemplateId=sufler_neon_outline_emoji_v2; v2PresetControlMode=manual или v2TemplateId=sufler_orange_active_strip_v2; v2PresetControlMode=manual или v2TemplateId=sufler_minimal_white_pill_v2; v2PresetControlMode=manual или v2TemplateId=sufler_black_shadow_keyword_v2; v2PresetControlMode=manual или v2TemplateId=sufler_neon_banner_v2; v2PresetControlMode=manual или v2TemplateId=sufler_clean_yellow_stack_v2; v2PresetControlMode=manual или v2TemplateId=sufler_compact_yellow_italic_v2; v2PresetControlMode=manual или v2TemplateId=sufler_orange_keyword_stack_v2; v2PresetControlMode=manual или v2TemplateId=frank_bold_orange_box_v2; v2PresetControlMode=manual или v2TemplateId=frank_green_caption_box_v2; v2PresetControlMode=manual или v2TemplateId=frank_bold_yellow_icon_v2; v2PresetControlMode=manual или v2TemplateId=frank_creator_yellow_stack_v2; v2PresetControlMode=manual или v2TemplateId=frank_red_green_active_v2; v2PresetControlMode=manual или v2TemplateId=frank_red_white_active_v2; v2PresetControlMode=manual или v2TemplateId=frank_yellow_keyword_v2; v2PresetControlMode=manual или v2TemplateId=frank_yellow_italic_v2; v2PresetControlMode=manual или v2TemplateId=frank_soft_pill_v2; v2PresetControlMode=manual |
font | string | v1TextStyleMode=custom; rpc://getFonts; не более 64 символов; v2TemplateId=shorts_pro; v2PresetControlMode=manual или v2TemplateId=creator_hook_v2; v2PresetControlMode=manual или v2TemplateId=product_demo_v2; v2PresetControlMode=manual или v2TemplateId=cta_product_v2; v2PresetControlMode=manual или v2TemplateId=sufler_bold_emoji_stack_v2; v2PresetControlMode=manual или v2TemplateId=sufler_ref_dan_v2; v2PresetControlMode=manual или v2TemplateId=sufler_ref_viktor_v2; v2PresetControlMode=manual или v2TemplateId=sufler_neon_outline_emoji_v2; v2PresetControlMode=manual или v2TemplateId=sufler_orange_active_strip_v2; v2PresetControlMode=manual или v2TemplateId=sufler_minimal_white_pill_v2; v2PresetControlMode=manual или v2TemplateId=sufler_black_shadow_keyword_v2; v2PresetControlMode=manual или v2TemplateId=sufler_neon_banner_v2; v2PresetControlMode=manual или v2TemplateId=sufler_clean_yellow_stack_v2; v2PresetControlMode=manual или v2TemplateId=sufler_compact_yellow_italic_v2; v2PresetControlMode=manual или v2TemplateId=sufler_orange_keyword_stack_v2; v2PresetControlMode=manual или v2TemplateId=frank_bold_orange_box_v2; v2PresetControlMode=manual или v2TemplateId=frank_green_caption_box_v2; v2PresetControlMode=manual или v2TemplateId=frank_bold_yellow_icon_v2; v2PresetControlMode=manual или v2TemplateId=frank_creator_yellow_stack_v2; v2PresetControlMode=manual или v2TemplateId=frank_red_green_active_v2; v2PresetControlMode=manual или v2TemplateId=frank_red_white_active_v2; v2PresetControlMode=manual или v2TemplateId=frank_yellow_keyword_v2; v2PresetControlMode=manual или v2TemplateId=frank_yellow_italic_v2; v2PresetControlMode=manual или v2TemplateId=frank_soft_pill_v2; v2PresetControlMode=manual |
color | string | v1TextStyleMode=custom; Цвет; v2TemplateId=shorts_pro; v2PresetControlMode=manual или v2TemplateId=creator_hook_v2; v2PresetControlMode=manual или v2TemplateId=product_demo_v2; v2PresetControlMode=manual или v2TemplateId=cta_product_v2; v2PresetControlMode=manual или v2TemplateId=sufler_bold_emoji_stack_v2; v2PresetControlMode=manual или v2TemplateId=sufler_ref_dan_v2; v2PresetControlMode=manual или v2TemplateId=sufler_ref_viktor_v2; v2PresetControlMode=manual или v2TemplateId=sufler_neon_outline_emoji_v2; v2PresetControlMode=manual или v2TemplateId=sufler_orange_active_strip_v2; v2PresetControlMode=manual или v2TemplateId=sufler_minimal_white_pill_v2; v2PresetControlMode=manual или v2TemplateId=sufler_black_shadow_keyword_v2; v2PresetControlMode=manual или v2TemplateId=sufler_neon_banner_v2; v2PresetControlMode=manual или v2TemplateId=sufler_clean_yellow_stack_v2; v2PresetControlMode=manual или v2TemplateId=sufler_compact_yellow_italic_v2; v2PresetControlMode=manual или v2TemplateId=sufler_orange_keyword_stack_v2; v2PresetControlMode=manual или v2TemplateId=frank_bold_orange_box_v2; v2PresetControlMode=manual или v2TemplateId=frank_green_caption_box_v2; v2PresetControlMode=manual или v2TemplateId=frank_bold_yellow_icon_v2; v2PresetControlMode=manual или v2TemplateId=frank_creator_yellow_stack_v2; v2PresetControlMode=manual или v2TemplateId=frank_red_green_active_v2; v2PresetControlMode=manual или v2TemplateId=frank_red_white_active_v2; v2PresetControlMode=manual или v2TemplateId=frank_yellow_keyword_v2; v2PresetControlMode=manual или v2TemplateId=frank_yellow_italic_v2; v2PresetControlMode=manual или v2TemplateId=frank_soft_pill_v2; v2PresetControlMode=manual |
uppercase | boolean | v1TextStyleMode=custom; Верхний регистр |
displayWords | number | v1TextStyleMode=custom; минимум 1; максимум 6 |
maxLines | number | v1TextStyleMode=custom; минимум 1; максимум 2; v2TemplateId=shorts_pro; v2PresetControlMode=manual или v2TemplateId=creator_hook_v2; v2PresetControlMode=manual или v2TemplateId=product_demo_v2; v2PresetControlMode=manual или v2TemplateId=cta_product_v2; v2PresetControlMode=manual или v2TemplateId=sufler_bold_emoji_stack_v2; v2PresetControlMode=manual или v2TemplateId=sufler_ref_dan_v2; v2PresetControlMode=manual или v2TemplateId=sufler_ref_viktor_v2; v2PresetControlMode=manual или v2TemplateId=sufler_neon_outline_emoji_v2; v2PresetControlMode=manual или v2TemplateId=sufler_orange_active_strip_v2; v2PresetControlMode=manual или v2TemplateId=sufler_minimal_white_pill_v2; v2PresetControlMode=manual или v2TemplateId=sufler_black_shadow_keyword_v2; v2PresetControlMode=manual или v2TemplateId=sufler_neon_banner_v2; v2PresetControlMode=manual или v2TemplateId=sufler_clean_yellow_stack_v2; v2PresetControlMode=manual или v2TemplateId=sufler_compact_yellow_italic_v2; v2PresetControlMode=manual или v2TemplateId=sufler_orange_keyword_stack_v2; v2PresetControlMode=manual или v2TemplateId=frank_bold_orange_box_v2; v2PresetControlMode=manual или v2TemplateId=frank_green_caption_box_v2; v2PresetControlMode=manual или v2TemplateId=frank_bold_yellow_icon_v2; v2PresetControlMode=manual или v2TemplateId=frank_creator_yellow_stack_v2; v2PresetControlMode=manual или v2TemplateId=frank_red_green_active_v2; v2PresetControlMode=manual или v2TemplateId=frank_red_white_active_v2; v2PresetControlMode=manual или v2TemplateId=frank_yellow_keyword_v2; v2PresetControlMode=manual или v2TemplateId=frank_yellow_italic_v2; v2PresetControlMode=manual или v2TemplateId=frank_soft_pill_v2; v2PresetControlMode=manual |
maxCharsPerLine | number | v1TextStyleMode=custom; минимум 8; максимум 42; v2TemplateId=shorts_pro; v2PresetControlMode=manual или v2TemplateId=creator_hook_v2; v2PresetControlMode=manual или v2TemplateId=product_demo_v2; v2PresetControlMode=manual или v2TemplateId=cta_product_v2; v2PresetControlMode=manual или v2TemplateId=sufler_bold_emoji_stack_v2; v2PresetControlMode=manual или v2TemplateId=sufler_ref_dan_v2; v2PresetControlMode=manual или v2TemplateId=sufler_ref_viktor_v2; v2PresetControlMode=manual или v2TemplateId=sufler_neon_outline_emoji_v2; v2PresetControlMode=manual или v2TemplateId=sufler_orange_active_strip_v2; v2PresetControlMode=manual или v2TemplateId=sufler_minimal_white_pill_v2; v2PresetControlMode=manual или v2TemplateId=sufler_black_shadow_keyword_v2; v2PresetControlMode=manual или v2TemplateId=sufler_neon_banner_v2; v2PresetControlMode=manual или v2TemplateId=sufler_clean_yellow_stack_v2; v2PresetControlMode=manual или v2TemplateId=sufler_compact_yellow_italic_v2; v2PresetControlMode=manual или v2TemplateId=sufler_orange_keyword_stack_v2; v2PresetControlMode=manual или v2TemplateId=frank_bold_orange_box_v2; v2PresetControlMode=manual или v2TemplateId=frank_green_caption_box_v2; v2PresetControlMode=manual или v2TemplateId=frank_bold_yellow_icon_v2; v2PresetControlMode=manual или v2TemplateId=frank_creator_yellow_stack_v2; v2PresetControlMode=manual или v2TemplateId=frank_red_green_active_v2; v2PresetControlMode=manual или v2TemplateId=frank_red_white_active_v2; v2PresetControlMode=manual или v2TemplateId=frank_yellow_keyword_v2; v2PresetControlMode=manual или v2TemplateId=frank_yellow_italic_v2; v2PresetControlMode=manual или v2TemplateId=frank_soft_pill_v2; v2PresetControlMode=manual |
gapSplitSec | number | v1TextStyleMode=custom; минимум 0.15; максимум 2 |
lingerMs | number | v1TextStyleMode=custom; минимум 0; максимум 500 |
captionEngine | string | |
presetOverrideMode | string | v2TemplateId=shorts_pro или v2TemplateId=creator_hook_v2 или v2TemplateId=product_demo_v2 или v2TemplateId=cta_product_v2 или v2TemplateId=sufler_bold_emoji_stack_v2 или v2TemplateId=sufler_ref_dan_v2 или v2TemplateId=sufler_ref_viktor_v2 или v2TemplateId=sufler_neon_outline_emoji_v2 или v2TemplateId=sufler_orange_active_strip_v2 или v2TemplateId=sufler_minimal_white_pill_v2 или v2TemplateId=sufler_black_shadow_keyword_v2 или v2TemplateId=sufler_neon_banner_v2 или v2TemplateId=sufler_clean_yellow_stack_v2 или v2TemplateId=sufler_compact_yellow_italic_v2 или v2TemplateId=sufler_orange_keyword_stack_v2 или v2TemplateId=frank_bold_orange_box_v2 или v2TemplateId=frank_green_caption_box_v2 или v2TemplateId=frank_bold_yellow_icon_v2 или v2TemplateId=frank_creator_yellow_stack_v2 или v2TemplateId=frank_red_green_active_v2 или v2TemplateId=frank_red_white_active_v2 или v2TemplateId=frank_yellow_keyword_v2 или v2TemplateId=frank_yellow_italic_v2 или v2TemplateId=frank_soft_pill_v2; preset / manual; Режим переопределения пресета |
outline | number | v2TemplateId=shorts_pro; v2PresetControlMode=manual или v2TemplateId=creator_hook_v2; v2PresetControlMode=manual или v2TemplateId=product_demo_v2; v2PresetControlMode=manual или v2TemplateId=cta_product_v2; v2PresetControlMode=manual или v2TemplateId=sufler_bold_emoji_stack_v2; v2PresetControlMode=manual или v2TemplateId=sufler_ref_dan_v2; v2PresetControlMode=manual или v2TemplateId=sufler_ref_viktor_v2; v2PresetControlMode=manual или v2TemplateId=sufler_neon_outline_emoji_v2; v2PresetControlMode=manual или v2TemplateId=sufler_orange_active_strip_v2; v2PresetControlMode=manual или v2TemplateId=sufler_minimal_white_pill_v2; v2PresetControlMode=manual или v2TemplateId=sufler_black_shadow_keyword_v2; v2PresetControlMode=manual или v2TemplateId=sufler_neon_banner_v2; v2PresetControlMode=manual или v2TemplateId=sufler_clean_yellow_stack_v2; v2PresetControlMode=manual или v2TemplateId=sufler_compact_yellow_italic_v2; v2PresetControlMode=manual или v2TemplateId=sufler_orange_keyword_stack_v2; v2PresetControlMode=manual или v2TemplateId=frank_bold_orange_box_v2; v2PresetControlMode=manual или v2TemplateId=frank_green_caption_box_v2; v2PresetControlMode=manual или v2TemplateId=frank_bold_yellow_icon_v2; v2PresetControlMode=manual или v2TemplateId=frank_creator_yellow_stack_v2; v2PresetControlMode=manual или v2TemplateId=frank_red_green_active_v2; v2PresetControlMode=manual или v2TemplateId=frank_red_white_active_v2; v2PresetControlMode=manual или v2TemplateId=frank_yellow_keyword_v2; v2PresetControlMode=manual или v2TemplateId=frank_yellow_italic_v2; v2PresetControlMode=manual или v2TemplateId=frank_soft_pill_v2; v2PresetControlMode=manual; минимум 0; максимум 8 |
outlineColor | string | v2TemplateId=shorts_pro; v2PresetControlMode=manual или v2TemplateId=creator_hook_v2; v2PresetControlMode=manual или v2TemplateId=product_demo_v2; v2PresetControlMode=manual или v2TemplateId=cta_product_v2; v2PresetControlMode=manual или v2TemplateId=sufler_bold_emoji_stack_v2; v2PresetControlMode=manual или v2TemplateId=sufler_ref_dan_v2; v2PresetControlMode=manual или v2TemplateId=sufler_ref_viktor_v2; v2PresetControlMode=manual или v2TemplateId=sufler_neon_outline_emoji_v2; v2PresetControlMode=manual или v2TemplateId=sufler_orange_active_strip_v2; v2PresetControlMode=manual или v2TemplateId=sufler_minimal_white_pill_v2; v2PresetControlMode=manual или v2TemplateId=sufler_black_shadow_keyword_v2; v2PresetControlMode=manual или v2TemplateId=sufler_neon_banner_v2; v2PresetControlMode=manual или v2TemplateId=sufler_clean_yellow_stack_v2; v2PresetControlMode=manual или v2TemplateId=sufler_compact_yellow_italic_v2; v2PresetControlMode=manual или v2TemplateId=sufler_orange_keyword_stack_v2; v2PresetControlMode=manual или v2TemplateId=frank_bold_orange_box_v2; v2PresetControlMode=manual или v2TemplateId=frank_green_caption_box_v2; v2PresetControlMode=manual или v2TemplateId=frank_bold_yellow_icon_v2; v2PresetControlMode=manual или v2TemplateId=frank_creator_yellow_stack_v2; v2PresetControlMode=manual или v2TemplateId=frank_red_green_active_v2; v2PresetControlMode=manual или v2TemplateId=frank_red_white_active_v2; v2PresetControlMode=manual или v2TemplateId=frank_yellow_keyword_v2; v2PresetControlMode=manual или v2TemplateId=frank_yellow_italic_v2; v2PresetControlMode=manual или v2TemplateId=frank_soft_pill_v2; v2PresetControlMode=manual; Цвет обводки |
shadow | number | v2TemplateId=shorts_pro; v2PresetControlMode=manual или v2TemplateId=creator_hook_v2; v2PresetControlMode=manual или v2TemplateId=product_demo_v2; v2PresetControlMode=manual или v2TemplateId=cta_product_v2; v2PresetControlMode=manual или v2TemplateId=sufler_bold_emoji_stack_v2; v2PresetControlMode=manual или v2TemplateId=sufler_ref_dan_v2; v2PresetControlMode=manual или v2TemplateId=sufler_ref_viktor_v2; v2PresetControlMode=manual или v2TemplateId=sufler_neon_outline_emoji_v2; v2PresetControlMode=manual или v2TemplateId=sufler_orange_active_strip_v2; v2PresetControlMode=manual или v2TemplateId=sufler_minimal_white_pill_v2; v2PresetControlMode=manual или v2TemplateId=sufler_black_shadow_keyword_v2; v2PresetControlMode=manual или v2TemplateId=sufler_neon_banner_v2; v2PresetControlMode=manual или v2TemplateId=sufler_clean_yellow_stack_v2; v2PresetControlMode=manual или v2TemplateId=sufler_compact_yellow_italic_v2; v2PresetControlMode=manual или v2TemplateId=sufler_orange_keyword_stack_v2; v2PresetControlMode=manual или v2TemplateId=frank_bold_orange_box_v2; v2PresetControlMode=manual или v2TemplateId=frank_green_caption_box_v2; v2PresetControlMode=manual или v2TemplateId=frank_bold_yellow_icon_v2; v2PresetControlMode=manual или v2TemplateId=frank_creator_yellow_stack_v2; v2PresetControlMode=manual или v2TemplateId=frank_red_green_active_v2; v2PresetControlMode=manual или v2TemplateId=frank_red_white_active_v2; v2PresetControlMode=manual или v2TemplateId=frank_yellow_keyword_v2; v2PresetControlMode=manual или v2TemplateId=frank_yellow_italic_v2; v2PresetControlMode=manual или v2TemplateId=frank_soft_pill_v2; v2PresetControlMode=manual; минимум 0; максимум 8 |
renderMode | string | v2TemplateId=shorts_pro; v2PresetControlMode=manual или v2TemplateId=creator_hook_v2; v2PresetControlMode=manual или v2TemplateId=product_demo_v2; v2PresetControlMode=manual или v2TemplateId=cta_product_v2; v2PresetControlMode=manual или v2TemplateId=sufler_bold_emoji_stack_v2; v2PresetControlMode=manual или v2TemplateId=sufler_ref_dan_v2; v2PresetControlMode=manual или v2TemplateId=sufler_ref_viktor_v2; v2PresetControlMode=manual или v2TemplateId=sufler_neon_outline_emoji_v2; v2PresetControlMode=manual или v2TemplateId=sufler_orange_active_strip_v2; v2PresetControlMode=manual или v2TemplateId=sufler_minimal_white_pill_v2; v2PresetControlMode=manual или v2TemplateId=sufler_black_shadow_keyword_v2; v2PresetControlMode=manual или v2TemplateId=sufler_neon_banner_v2; v2PresetControlMode=manual или v2TemplateId=sufler_clean_yellow_stack_v2; v2PresetControlMode=manual или v2TemplateId=sufler_compact_yellow_italic_v2; v2PresetControlMode=manual или v2TemplateId=sufler_orange_keyword_stack_v2; v2PresetControlMode=manual или v2TemplateId=frank_bold_orange_box_v2; v2PresetControlMode=manual или v2TemplateId=frank_green_caption_box_v2; v2PresetControlMode=manual или v2TemplateId=frank_bold_yellow_icon_v2; v2PresetControlMode=manual или v2TemplateId=frank_creator_yellow_stack_v2; v2PresetControlMode=manual или v2TemplateId=frank_red_green_active_v2; v2PresetControlMode=manual или v2TemplateId=frank_red_white_active_v2; v2PresetControlMode=manual или v2TemplateId=frank_yellow_keyword_v2; v2PresetControlMode=manual или v2TemplateId=frank_yellow_italic_v2; v2PresetControlMode=manual или v2TemplateId=frank_soft_pill_v2; v2PresetControlMode=manual; / static / phrase_pop / word_pop / active_word / word_reveal / active_box; Режим рендеринга |
animationIntensity | string | v2TemplateId=shorts_pro; v2PresetControlMode=manual или v2TemplateId=creator_hook_v2; v2PresetControlMode=manual или v2TemplateId=product_demo_v2; v2PresetControlMode=manual или v2TemplateId=cta_product_v2; v2PresetControlMode=manual или v2TemplateId=sufler_bold_emoji_stack_v2; v2PresetControlMode=manual или v2TemplateId=sufler_ref_dan_v2; v2PresetControlMode=manual или v2TemplateId=sufler_ref_viktor_v2; v2PresetControlMode=manual или v2TemplateId=sufler_neon_outline_emoji_v2; v2PresetControlMode=manual или v2TemplateId=sufler_orange_active_strip_v2; v2PresetControlMode=manual или v2TemplateId=sufler_minimal_white_pill_v2; v2PresetControlMode=manual или v2TemplateId=sufler_black_shadow_keyword_v2; v2PresetControlMode=manual или v2TemplateId=sufler_neon_banner_v2; v2PresetControlMode=manual или v2TemplateId=sufler_clean_yellow_stack_v2; v2PresetControlMode=manual или v2TemplateId=sufler_compact_yellow_italic_v2; v2PresetControlMode=manual или v2TemplateId=sufler_orange_keyword_stack_v2; v2PresetControlMode=manual или v2TemplateId=frank_bold_orange_box_v2; v2PresetControlMode=manual или v2TemplateId=frank_green_caption_box_v2; v2PresetControlMode=manual или v2TemplateId=frank_bold_yellow_icon_v2; v2PresetControlMode=manual или v2TemplateId=frank_creator_yellow_stack_v2; v2PresetControlMode=manual или v2TemplateId=frank_red_green_active_v2; v2PresetControlMode=manual или v2TemplateId=frank_red_white_active_v2; v2PresetControlMode=manual или v2TemplateId=frank_yellow_keyword_v2; v2PresetControlMode=manual или v2TemplateId=frank_yellow_italic_v2; v2PresetControlMode=manual или v2TemplateId=frank_soft_pill_v2; v2PresetControlMode=manual; low / medium / high; Интенсивность анимации |
highlightColor | string | v2TemplateId=product_demo_v2; v2PresetControlMode=manual или v2TemplateId=cta_product_v2; v2PresetControlMode=manual или v2TemplateId=sufler_bold_emoji_stack_v2; v2PresetControlMode=manual или v2TemplateId=sufler_ref_dan_v2; v2PresetControlMode=manual или v2TemplateId=sufler_ref_viktor_v2; v2PresetControlMode=manual или v2TemplateId=sufler_neon_outline_emoji_v2; v2PresetControlMode=manual или v2TemplateId=sufler_orange_active_strip_v2; v2PresetControlMode=manual или v2TemplateId=sufler_minimal_white_pill_v2; v2PresetControlMode=manual или v2TemplateId=sufler_black_shadow_keyword_v2; v2PresetControlMode=manual или v2TemplateId=sufler_neon_banner_v2; v2PresetControlMode=manual или v2TemplateId=sufler_clean_yellow_stack_v2; v2PresetControlMode=manual или v2TemplateId=sufler_compact_yellow_italic_v2; v2PresetControlMode=manual или v2TemplateId=sufler_orange_keyword_stack_v2; v2PresetControlMode=manual или v2TemplateId=frank_bold_orange_box_v2; v2PresetControlMode=manual или v2TemplateId=frank_green_caption_box_v2; v2PresetControlMode=manual или v2TemplateId=frank_bold_yellow_icon_v2; v2PresetControlMode=manual или v2TemplateId=frank_creator_yellow_stack_v2; v2PresetControlMode=manual или v2TemplateId=frank_red_green_active_v2; v2PresetControlMode=manual или v2TemplateId=frank_red_white_active_v2; v2PresetControlMode=manual или v2TemplateId=frank_yellow_keyword_v2; v2PresetControlMode=manual или v2TemplateId=frank_yellow_italic_v2; v2PresetControlMode=manual или v2TemplateId=frank_soft_pill_v2; v2PresetControlMode=manual; Цвет выделения |
revealBaseline | string | v2TemplateId=product_demo_v2; v2PresetControlMode=manual или v2TemplateId=cta_product_v2; v2PresetControlMode=manual или v2TemplateId=sufler_bold_emoji_stack_v2; v2PresetControlMode=manual или v2TemplateId=sufler_ref_dan_v2; v2PresetControlMode=manual или v2TemplateId=sufler_ref_viktor_v2; v2PresetControlMode=manual или v2TemplateId=sufler_neon_outline_emoji_v2; v2PresetControlMode=manual или v2TemplateId=sufler_orange_active_strip_v2; v2PresetControlMode=manual или v2TemplateId=sufler_minimal_white_pill_v2; v2PresetControlMode=manual или v2TemplateId=sufler_black_shadow_keyword_v2; v2PresetControlMode=manual или v2TemplateId=sufler_neon_banner_v2; v2PresetControlMode=manual или v2TemplateId=sufler_clean_yellow_stack_v2; v2PresetControlMode=manual или v2TemplateId=sufler_compact_yellow_italic_v2; v2PresetControlMode=manual или v2TemplateId=sufler_orange_keyword_stack_v2; v2PresetControlMode=manual или v2TemplateId=frank_bold_orange_box_v2; v2PresetControlMode=manual или v2TemplateId=frank_green_caption_box_v2; v2PresetControlMode=manual или v2TemplateId=frank_bold_yellow_icon_v2; v2PresetControlMode=manual или v2TemplateId=frank_creator_yellow_stack_v2; v2PresetControlMode=manual или v2TemplateId=frank_red_green_active_v2; v2PresetControlMode=manual или v2TemplateId=frank_red_white_active_v2; v2PresetControlMode=manual или v2TemplateId=frank_yellow_keyword_v2; v2PresetControlMode=manual или v2TemplateId=frank_yellow_italic_v2; v2PresetControlMode=manual или v2TemplateId=frank_soft_pill_v2; v2PresetControlMode=manual; / none / dim / full; Базовая линия появления |
animationStyle | string | v2TemplateId=product_demo_v2; v2PresetControlMode=manual или v2TemplateId=cta_product_v2; v2PresetControlMode=manual или v2TemplateId=sufler_bold_emoji_stack_v2; v2PresetControlMode=manual или v2TemplateId=sufler_ref_dan_v2; v2PresetControlMode=manual или v2TemplateId=sufler_ref_viktor_v2; v2PresetControlMode=manual или v2TemplateId=sufler_neon_outline_emoji_v2; v2PresetControlMode=manual или v2TemplateId=sufler_orange_active_strip_v2; v2PresetControlMode=manual или v2TemplateId=sufler_minimal_white_pill_v2; v2PresetControlMode=manual или v2TemplateId=sufler_black_shadow_keyword_v2; v2PresetControlMode=manual или v2TemplateId=sufler_neon_banner_v2; v2PresetControlMode=manual или v2TemplateId=sufler_clean_yellow_stack_v2; v2PresetControlMode=manual или v2TemplateId=sufler_compact_yellow_italic_v2; v2PresetControlMode=manual или v2TemplateId=sufler_orange_keyword_stack_v2; v2PresetControlMode=manual или v2TemplateId=frank_bold_orange_box_v2; v2PresetControlMode=manual или v2TemplateId=frank_green_caption_box_v2; v2PresetControlMode=manual или v2TemplateId=frank_bold_yellow_icon_v2; v2PresetControlMode=manual или v2TemplateId=frank_creator_yellow_stack_v2; v2PresetControlMode=manual или v2TemplateId=frank_red_green_active_v2; v2PresetControlMode=manual или v2TemplateId=frank_red_white_active_v2; v2PresetControlMode=manual или v2TemplateId=frank_yellow_keyword_v2; v2PresetControlMode=manual или v2TemplateId=frank_yellow_italic_v2; v2PresetControlMode=manual или v2TemplateId=frank_soft_pill_v2; v2PresetControlMode=manual; не более 40 символов |
emojiAccentMode | string | v2TemplateId=product_demo_v2; v2PresetControlMode=manual или v2TemplateId=cta_product_v2; v2PresetControlMode=manual или v2TemplateId=sufler_bold_emoji_stack_v2; v2PresetControlMode=manual или v2TemplateId=sufler_ref_dan_v2; v2PresetControlMode=manual или v2TemplateId=sufler_ref_viktor_v2; v2PresetControlMode=manual или v2TemplateId=sufler_neon_outline_emoji_v2; v2PresetControlMode=manual или v2TemplateId=sufler_orange_active_strip_v2; v2PresetControlMode=manual или v2TemplateId=sufler_minimal_white_pill_v2; v2PresetControlMode=manual или v2TemplateId=sufler_black_shadow_keyword_v2; v2PresetControlMode=manual или v2TemplateId=sufler_neon_banner_v2; v2PresetControlMode=manual или v2TemplateId=sufler_clean_yellow_stack_v2; v2PresetControlMode=manual или v2TemplateId=sufler_compact_yellow_italic_v2; v2PresetControlMode=manual или v2TemplateId=sufler_orange_keyword_stack_v2; v2PresetControlMode=manual или v2TemplateId=frank_bold_orange_box_v2; v2PresetControlMode=manual или v2TemplateId=frank_green_caption_box_v2; v2PresetControlMode=manual или v2TemplateId=frank_bold_yellow_icon_v2; v2PresetControlMode=manual или v2TemplateId=frank_creator_yellow_stack_v2; v2PresetControlMode=manual или v2TemplateId=frank_red_green_active_v2; v2PresetControlMode=manual или v2TemplateId=frank_red_white_active_v2; v2PresetControlMode=manual или v2TemplateId=frank_yellow_keyword_v2; v2PresetControlMode=manual или v2TemplateId=frank_yellow_italic_v2; v2PresetControlMode=manual или v2TemplateId=frank_soft_pill_v2; v2PresetControlMode=manual; не более 40 символов |
activeColor | string | v2TemplateId=cta_product_v2; v2PresetControlMode=manual или v2TemplateId=sufler_ref_viktor_v2; v2PresetControlMode=manual или v2TemplateId=sufler_orange_active_strip_v2; v2PresetControlMode=manual или v2TemplateId=sufler_minimal_white_pill_v2; v2PresetControlMode=manual или v2TemplateId=sufler_neon_banner_v2; v2PresetControlMode=manual или v2TemplateId=frank_bold_orange_box_v2; v2PresetControlMode=manual или v2TemplateId=frank_green_caption_box_v2; v2PresetControlMode=manual или v2TemplateId=frank_red_green_active_v2; v2PresetControlMode=manual или v2TemplateId=frank_red_white_active_v2; v2PresetControlMode=manual или v2TemplateId=frank_soft_pill_v2; v2PresetControlMode=manual; Цвет активного элемента |
activeBoxColor | string | v2TemplateId=cta_product_v2; v2PresetControlMode=manual или v2TemplateId=sufler_ref_viktor_v2; v2PresetControlMode=manual или v2TemplateId=sufler_orange_active_strip_v2; v2PresetControlMode=manual или v2TemplateId=sufler_minimal_white_pill_v2; v2PresetControlMode=manual или v2TemplateId=sufler_neon_banner_v2; v2PresetControlMode=manual или v2TemplateId=frank_bold_orange_box_v2; v2PresetControlMode=manual или v2TemplateId=frank_green_caption_box_v2; v2PresetControlMode=manual или v2TemplateId=frank_red_green_active_v2; v2PresetControlMode=manual или v2TemplateId=frank_red_white_active_v2; v2PresetControlMode=manual или v2TemplateId=frank_soft_pill_v2; v2PresetControlMode=manual; Цвет фона активного блока |
activeBoxPadding | number | v2TemplateId=cta_product_v2; v2PresetControlMode=manual или v2TemplateId=sufler_ref_viktor_v2; v2PresetControlMode=manual или v2TemplateId=sufler_orange_active_strip_v2; v2PresetControlMode=manual или v2TemplateId=sufler_minimal_white_pill_v2; v2PresetControlMode=manual или v2TemplateId=sufler_neon_banner_v2; v2PresetControlMode=manual или v2TemplateId=frank_bold_orange_box_v2; v2PresetControlMode=manual или v2TemplateId=frank_green_caption_box_v2; v2PresetControlMode=manual или v2TemplateId=frank_red_green_active_v2; v2PresetControlMode=manual или v2TemplateId=frank_red_white_active_v2; v2PresetControlMode=manual или v2TemplateId=frank_soft_pill_v2; v2PresetControlMode=manual; минимум 4; максимум 48 |
qualityMode | string | standard / pro; Режим качества |
emphasisMode | string | semantic / manual / karaoke / none; Режим выделения |
emphasisWords | array | v2EmphasisMode=manual; не более 50 элементов; не более 40 символов |
emphasisWords[] | string | обязательно при v2EmphasisMode=manual; Слова для выделения |
diagnosticsLevel | string | basic / full; Уровень диагностики |
visualQaMode | string | off / contact_sheet; Режим визуальной проверки качества |
glossary | array | не более 50 элементов |
glossary[].from | string | обязательно (v2); Исходный термин |
glossary[].to | string | обязательно (v2); Термин замены |
brandGlossary | array | не более 50 элементов |
brandGlossary[].from | string | обязательно (v2); Исходный термин |
brandGlossary[].to | string | обязательно (v2); Термин замены |
taskId | string | обязательно (get_task); Параметр пути: полученный taskId того же партнёра |
file | binary | обязательно (upload_source); Файл в multipart/form-data; не более 157286400 байт |
Опции Make и преобразование в REST
Это справочник выбора в Make; имена интерфейса не всегда совпадают с REST. Поля v1*/v2*, text* и sample* переводятся как описано выше. Вложенные условия относятся к интерфейсу Make.
| Поле формы | Когда | Значения |
|---|---|---|
language | auto / ru / en | |
captionEngine | v1 / v2 | |
v1TemplateId | captionEngine=v1 | clean-classic / clean-bold / podcast-lower-third / interview-soft-shadow / reels-punch / tiktok-bold-center / tiktok-keyword-highlight / viral-word-pop / clean-product-demo / boxed-active-word / karaoke-lite / karaoke-pop / gaming-outline / gaming-neon / education-marker / education-clean-center / minimal-modern / boxed-bold / emoji-accent / meme-caption / serif-cinematic / classic-subtitles / creator-hook / news-ticker / documentary-narration / sports-highlight / luxury-minimal / horror-crawl / children-playful / corporate-clean / vlog-casual / music-lyric / creative-handwritten / travel-explorer / tech-review / motivational-impact / cooking-recipe / fitness-energy / wedding-elegant / retro-display / academic-formal / brand-showcase / slavic-decorative |
v1HighlightMode | captionEngine=v1 | / none / keywords / karaoke / emoji |
v1PlacementMode | captionEngine=v1 | tiktok_bottom_safe / bottom_center / center / top / exact_preset / exact_coordinates |
v1Platform | captionEngine=v1; v1PlacementMode=exact_preset | rpc://getSafeZonePlatforms |
v1SafeZonePreset | captionEngine=v1; v1PlacementMode=exact_preset | rpc://getSafeZonePlacements |
v1TextStyleMode | captionEngine=v1 | template / custom |
v1Font | captionEngine=v1; v1TextStyleMode=custom | rpc://getFonts |
v2TemplateId | captionEngine=v2 | shorts_pro / creator_hook_v2 / product_demo_v2 / cta_product_v2 / sufler_bold_emoji_stack_v2 / sufler_ref_dan_v2 / sufler_ref_viktor_v2 / sufler_neon_outline_emoji_v2 / sufler_orange_active_strip_v2 / sufler_minimal_white_pill_v2 / sufler_black_shadow_keyword_v2 / sufler_neon_banner_v2 / sufler_clean_yellow_stack_v2 / sufler_compact_yellow_italic_v2 / sufler_orange_keyword_stack_v2 / frank_bold_orange_box_v2 / frank_green_caption_box_v2 / frank_bold_yellow_icon_v2 / frank_creator_yellow_stack_v2 / frank_red_green_active_v2 / frank_red_white_active_v2 / frank_yellow_keyword_v2 / frank_yellow_italic_v2 / frank_soft_pill_v2 |
v2QualityMode | captionEngine=v2 | standard / pro |
v2EmphasisMode | captionEngine=v2 | semantic / manual / karaoke / none |
v2DiagnosticsLevel | captionEngine=v2 | basic / full |
v2VisualQaMode | captionEngine=v2 | off / contact_sheet |
subtitleSourceMode | auto / manual | |
transcriptionEngine | subtitleSourceMode=auto | whisper / xai_grok_transcribe / elevenlabs_scribe / local_whisper |
translationMode | none / translate | |
translateTo | translationMode=translate | en / ru / de / fr / es / it / pt / zh / ja / ko / ar |
effectsMode | none / custom | |
videoEffects[].effectId | effectsMode=custom | rpc://getVideoEffects |
videoEffects[].scope | effectsMode=custom | clip / range |
outputMode | burn / srt / vtt / ass / burn+srt / burn+vtt | |
c2paSigningMode | off / franklab / user_profile | |
contentOrigin | c2paSigningMode=franklab | not_declared / human_edited / ai_assisted / ai_generated |
c2paSignerProfileId | c2paSigningMode=user_profile | rpc://getC2paSignerProfiles |
contentOrigin | c2paSigningMode=user_profile | not_declared / human_edited / ai_assisted / ai_generated / human_created / camera_captured |
Общие настройки пресетов v2 приведены один раз ниже. «Все 24» означает все значения v2TemplateId из таблицы выше; дополнительные условия в строке также обязательны. v2RevealBaseline доступен для 22 пресетов: всех перечисленных, кроме shorts_pro и creator_hook_v2.
| Поле формы | Пресеты v2TemplateId | Когда | Значения |
|---|---|---|---|
v2PresetControlMode | Все 24 | captionEngine=v2 | preset / manual |
v2Font | Все 24 | captionEngine=v2; v2PresetControlMode=manual | rpc://getFonts |
v2PlacementMode | Все 24 | captionEngine=v2; v2PresetControlMode=manual | / tiktok_bottom_safe / exact_preset / exact_coordinates |
v2Platform | Все 24 | captionEngine=v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset | rpc://getSafeZonePlatforms |
v2SafeZonePreset | Все 24 | captionEngine=v2; v2PresetControlMode=manual; v2PlacementMode=exact_preset | rpc://getSafeZonePlacements |
v2RenderMode | Все 24 | captionEngine=v2; v2PresetControlMode=manual | / static / phrase_pop / word_pop / active_word / word_reveal / active_box |
v2AnimationIntensity | Все 24 | captionEngine=v2; v2PresetControlMode=manual | low / medium / high |
v2RevealBaseline | Все, кроме shorts_pro, creator_hook_v2 | captionEngine=v2; v2PresetControlMode=manual | / none / dim / full |
Ответ и границы проверки
HTTP 200 {success:true,data:{taskId,status,final_cost_franks,cost_currency,cost_status,cost_unit}}; опрашивайте статус по полученному taskId.
Результат: downloadUrl/subtitleFileUrl, subtitleCount, transcribedText; для v2 также qualityScore, qualityGateStatus, renderMode, animatedWordCount, highlightedWords, visualQaStatus/visualQaUrl, subtitleDiagnostics. Проверяйте captionWarnings, fontRenderWarning, requestedFont/resolvedAssFont, appliedVideoFilters и ignoredVideoEffects. В Make нормализатор удаляет произвольные поля реплик; при cueStyleOverrideMode=cue сохраняет x/y/fontSize/font/color. В прямом REST передавайте только поля DTO.
REST position: top-left/top-center/top-right/center/bottom-left/bottom-center/bottom-right. Для v2 пользовательские параметры оформления требуют presetOverrideMode=manual. Условия subtitleSourceMode/translationMode/effectsMode/v1*/v2* в справочнике относятся к форме Make, не к полям REST.
Следующий шаг
Выберите одну операцию, загрузите небольшой собственный файл, проверьте доступ и клиентский тариф, затем отправьте один запрос и сохраните его taskId вместе с маршрутом опроса. Для заблокированных функций сначала требуется отдельная проверка или исправление контракта.