Документация
FRANKLAB API

Утилиты и монтаж

Обработка видео, изображений и аудио, субтитры, SEO и Content Credentials через API.

Открыть .md
Открыть в AI

Разобраться с AI-ассистентом

Передаётся документация выбранного раздела, без ваших ключей. Большие разделы копируются целиком для вставки в чат.

Cursor и Claude Code откроются с готовым текстом, если он помещается в ссылку. ChatGPT и Antigravity: вставьте скопированный контекст вручную.

Задать вопрос

Девять модулей: 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.

bash
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 jobsGET /franklab/api/franklab/jobs/{taskId}data.downloadUrl, метаданные; data.error
OVERLAYGET /franklab/api/make/jobs/{taskId}data.result.downloadUrl; data.error / data.result.error
INDEXLIFT asyncGET /franklab/api/franklab/jobs/audit-landing/async/{taskId}data.result.data.seo_report, data.result.data.brief_suggestions, data.phase, data.error_message
SPEKTR RecraftGET /franklab/api/v1/recraft/record-info?taskId=...data.state, разберите data.resultJsonresultUrls[]; 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 / статус
listGET /franklab/api/make/c2pa/signer-profiles{} источник
generate_self_signedPOST /franklab/api/make/c2pa/signer-profiles{"action":"generate_self_signed","label":"My signing profile"} источник
create_from_pemPOST /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_pemPOST /franklab/api/make/c2pa/signer-profiles/{profileId}/rotate{"label":"My signing profile","certificateChainPem":"<YOUR_CERTIFICATE_CHAIN_PEM>","privateKeyPem":"<YOUR_PRIVATE_KEY_PEM>"} источник
revokePOST /franklab/api/make/c2pa/signer-profiles/{profileId}/revoke{} источник
lookup_signer-profilesGET /franklab/api/make/c2pa/signer-profilesисточник
check_connectionGET /franklab/api/franklab/integrations/text-sticker/auth/statsисточник
bash
curl --fail-with-body "$FRANKLAB_ORIGIN/franklab/api/make/c2pa/signer-profiles" \
  -H "Authorization: Bearer $FRANKLAB_KEY"

Поля REST

Поля относятся к выбранной операции; обязательность уточняется условием и минимальным примером. [] — элемент массива.

ПолеТипУсловия и допустимые значения
actionstringобязательно (generate_self_signed); Обязательное поле в примере этой операции; обязательно (create_from_pem)
labelstringобязательно (generate_self_signed); Название; обязательно (create_from_pem); обязательно (rotate_from_pem)
allowRestrictedOriginClaimsbooleanРазрешение заявлений об ограниченных вариантах происхождения; / true / false
certificateChainPemstringобязательно (create_from_pem); Цепочка сертификатов PEM; обязательно (rotate_from_pem)
privateKeyPemstringобязательно (create_from_pem); Закрытый ключ PEM; обязательно (rotate_from_pem)
profileIdstringобязательно (rotate_from_pem); Параметр пути: ID собственного активного профиля подписи; обязательно (revoke)

Опции Make и преобразование в REST

Это справочник выбора в Make; имена интерфейса не всегда совпадают с REST. Поля v1*/v2*, text* и sample* переводятся как описано выше. Вложенные условия относятся к интерфейсу Make.

Поле формыКогдаЗначения
actionlist / generate_self_signed / create_from_pem / rotate_from_pem / revoke
profileIdaction=rotate_from_pemrpc://getC2paSignerProfiles
allowRestrictedOriginClaimsaction=rotate_from_pem/ true / false
profileIdaction=revokerpc://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_speedPOST /franklab/api/franklab/jobs/video-speed{"videoUrl":"https://example.com/synthetic.mp4","speed":1.1} источник
audio_speedPOST /franklab/api/franklab/jobs/audio{"videoUrl":"https://example.com/synthetic.wav","speed":1.1,"operation":"speed","audioBitrate":"64k"} источник
get_taskGET /franklab/api/franklab/jobs/{taskId}источник
upload_sourcePOST /franklab/api/franklab/jobs/uploadисточник
check_connectionGET /franklab/api/franklab/integrations/text-sticker/auth/statsисточник
bash
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

Поля относятся к выбранной операции; обязательность уточняется условием и минимальным примером. [] — элемент массива.

ПолеТипУсловия и допустимые значения
c2paSigningModestringoff / franklab / user_profile; Режим подписи C2PA
contentOriginstringfranklab или user_profile; Ограниченные варианты происхождения требуют разрешающего их профиля user_profile и подтверждающих материалов; not_declared / human_edited / ai_assisted / ai_generated / human_created / camera_captured; Происхождение содержимого
humanAuthorNamestringc2paSigningMode=franklab или c2paSigningMode=user_profile; Имя автора-человека
humanAuthorUrlstringc2paSigningMode=franklab или c2paSigningMode=user_profile; URL автора-человека
reviewedBystringc2paSigningMode=franklab или c2paSigningMode=user_profile; Кто выполнил проверку
reviewedAtstringc2paSigningMode=franklab или c2paSigningMode=user_profile; Время проверки
reviewMethodstringc2paSigningMode=franklab или c2paSigningMode=user_profile; Метод проверки
sourceMaterialUrlsarrayc2paSigningMode=franklab или c2paSigningMode=user_profile; не более 10 элементов
originalEvidenceUrlsarrayc2paSigningMode=franklab или c2paSigningMode=user_profile; не более 10 элементов
verifiedIncomingC2paIngredientbooleanc2paSigningMode=franklab или c2paSigningMode=user_profile; Подтверждённый входной материал C2PA
c2paActionDescriptionstringc2paSigningMode=franklab или c2paSigningMode=user_profile; Описание действия C2PA
c2paDisclosurestringc2paSigningMode=franklab или c2paSigningMode=user_profile; Раскрытие сведений C2PA
c2paSignerProfileIdstringобязательно при c2paSigningMode=user_profile; rpc://getC2paSignerProfiles; ID профиля подписи C2PA
videoUrlstringобязательно (video_speed); URL; обязательно (audio_speed)
speednumberобязательно (video_speed); минимум 0.25; максимум 4; обязательно (audio_speed)
callbackUrlstringURL
audioBitratestring64k / 96k / 128k / 160k / 192k / 256k / 320k; Строка от 8k до 320k; custom — элемент управления Make, в REST передавайте выбранное значение
operationstringобязательно (audio_speed)
taskIdstringобязательно (get_task); Параметр пути: полученный taskId того же партнёра
filebinaryобязательно (upload_source); Файл в multipart/form-data; не более 157286400 байт

Опции Make и преобразование в REST

Это справочник выбора в Make; имена интерфейса не всегда совпадают с REST. Поля v1*/v2*, text* и sample* переводятся как описано выше. Вложенные условия относятся к интерфейсу Make.

Поле формыКогдаЗначения
modevideo_speed / audio_speed
audioBitratemode=audio_speed64k / 96k / 128k / 160k / 192k / 256k / 320k / custom
c2paSigningModeoff / franklab / user_profile
contentOriginc2paSigningMode=franklabnot_declared / human_edited / ai_assisted / ai_generated
c2paSignerProfileIdc2paSigningMode=user_profilerpc://getC2paSignerProfiles
contentOriginc2paSigningMode=user_profilenot_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 / статус
resizePOST /franklab/api/franklab/jobs/image{"imageUrl":"https://example.com/synthetic.png","operation":"resize","width":64,"height":64} источник
cropPOST /franklab/api/franklab/jobs/image{"imageUrl":"https://example.com/synthetic.png","operation":"crop","aspectRatio":"1:1"} источник
filterPOST /franklab/api/franklab/jobs/image{"imageUrl":"https://example.com/synthetic.png","operation":"filter","filterPreset":"grayscale"} источник
watermarkPOST /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_overlayPOST /franklab/api/franklab/jobs/image{"imageUrl":"https://example.com/synthetic.png","operation":"image_overlay","overlayImageUrl":"https://example.com/synthetic.png","overlayScale":0.25} источник
textPOST /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"} источник
rotatePOST /franklab/api/franklab/jobs/image{"imageUrl":"https://example.com/synthetic.png","operation":"rotate","angle":90} источник
flipPOST /franklab/api/franklab/jobs/image{"imageUrl":"https://example.com/synthetic.png","operation":"flip"} источник
flopPOST /franklab/api/franklab/jobs/image{"imageUrl":"https://example.com/synthetic.png","operation":"flop"} источник
blurPOST /franklab/api/franklab/jobs/image{"imageUrl":"https://example.com/synthetic.png","operation":"blur","sigma":2} источник
sharpenPOST /franklab/api/franklab/jobs/image{"imageUrl":"https://example.com/synthetic.png","operation":"sharpen","sigma":1} источник
infoPOST /franklab/api/franklab/jobs/image{"imageUrl":"https://example.com/synthetic.png","operation":"info"} блокировано
strip_metaPOST /franklab/api/franklab/jobs/image{"imageUrl":"https://example.com/synthetic.png","operation":"strip_meta"} источник
write_exifPOST /franklab/api/franklab/jobs/image{"imageUrl":"https://example.com/synthetic.png","operation":"write_exif","imageDescription":"Synthetic test"} источник
write_metadataPOST /franklab/api/franklab/jobs/image{"imageUrl":"https://example.com/synthetic.png","operation":"write_metadata","metaTitle":"Synthetic test"} источник
replace_metadataPOST /franklab/api/franklab/jobs/image{"imageUrl":"https://example.com/synthetic.png","operation":"replace_metadata","metaTitle":"Synthetic test"} источник
maskPOST /franklab/api/franklab/jobs/image{"imageUrl":"https://example.com/synthetic.png","operation":"mask","shape":"rounded","radius":8} источник
collagePOST /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"} источник
adjustPOST /franklab/api/franklab/jobs/image{"imageUrl":"https://example.com/synthetic.png","steps":[{"op":"adjust","brightness":1.1}],"outputFormat":"png"} источник
read_metadataPOST /franklab/api/franklab/jobs/image{"imageUrl":"https://example.com/synthetic.png","operation":"read_metadata","metadataEngine":"exiftool"} блокировано
remove_bgPOST /franklab/api/franklab/jobs/image{"imageUrl":"https://example.com/synthetic.png","operation":"remove_bg","removeBgProvider":"local"} источник
ocrPOST /franklab/api/franklab/jobs/image{"imageUrl":"https://example.com/synthetic.png","operation":"ocr","ocrLanguages":"eng"} блокировано
strip_gpsPOST /franklab/api/franklab/jobs/image{"imageUrl":"https://example.com/synthetic.png","operation":"strip_gps"} источник
pipelinePOST /franklab/api/franklab/jobs/image{"imageUrl":"https://example.com/synthetic.png","steps":[{"op":"resize","width":64,"height":64}],"outputFormat":"png"} источник
lookup_image-presetsGET /franklab/api/franklab/integrations/text-sticker/image-presetsисточник
lookup_image-formatsGET /franklab/api/franklab/integrations/text-sticker/image-formatsисточник
lookup_fontsGET /franklab/api/franklab/integrations/text-sticker/fontsисточник
lookup_signer-profilesGET /franklab/api/make/c2pa/signer-profilesисточник
get_taskGET /franklab/api/franklab/jobs/{taskId}источник
upload_sourcePOST /franklab/api/franklab/jobs/uploadисточник
check_connectionGET /franklab/api/franklab/integrations/text-sticker/auth/statsисточник
bash
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

Поля относятся к выбранной операции; обязательность уточняется условием и минимальным примером. [] — элемент массива.

ПолеТипУсловия и допустимые значения
imageUrlstringобязательно (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)
outputFormatstringjpeg / png / webp / avif / gif; Выходной формат
outputQualitynumberминимум 1; максимум 100
c2paSigningModestringoff / franklab / user_profile; Режим подписи C2PA
contentOriginstringfranklab или user_profile; Ограниченные варианты происхождения требуют разрешающего их профиля user_profile и подтверждающих материалов; not_declared / human_edited / ai_assisted / ai_generated / human_created / camera_captured; Происхождение содержимого
humanAuthorNamestringc2paSigningMode=franklab или c2paSigningMode=user_profile; Имя автора-человека
humanAuthorUrlstringc2paSigningMode=franklab или c2paSigningMode=user_profile; URL автора-человека
reviewedBystringc2paSigningMode=franklab или c2paSigningMode=user_profile; Кто выполнил проверку
reviewedAtstringc2paSigningMode=franklab или c2paSigningMode=user_profile; Время проверки
reviewMethodstringc2paSigningMode=franklab или c2paSigningMode=user_profile; Метод проверки
sourceMaterialUrlsarrayc2paSigningMode=franklab или c2paSigningMode=user_profile; не более 10 элементов
originalEvidenceUrlsarrayc2paSigningMode=franklab или c2paSigningMode=user_profile; не более 10 элементов
verifiedIncomingC2paIngredientbooleanc2paSigningMode=franklab или c2paSigningMode=user_profile; Подтверждённый входной материал C2PA
c2paActionDescriptionstringc2paSigningMode=franklab или c2paSigningMode=user_profile; Описание действия C2PA
c2paDisclosurestringc2paSigningMode=franklab или c2paSigningMode=user_profile; Раскрытие сведений C2PA
c2paSignerProfileIdstringобязательно при c2paSigningMode=user_profile; rpc://getC2paSignerProfiles; ID профиля подписи C2PA
presetstringrpc://getImagePresets; Пресет
widthnumberШирина
heightnumberВысота
fitstringcover / contain / fill / inside / outside; Подгонка
operationstringобязательно (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)
aspectRatiostringСоотношение сторон
filterPresetstringgrayscale / sepia / warm / cold / vibrant / muted / dramatic; Пресет фильтра
stepsarrayобязательно (watermark); не более 20 элементов; обязательно (text); обязательно (collage); обязательно (adjust); обязательно (pipeline)
steps[].opstringобязательно (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[].presetstringsteps[].op=resize или steps[].op=filter; grayscale / sepia / warm / cold / vibrant / muted / dramatic; rpc://getImagePresets; Пресет
steps[].widthnumbersteps[].op=resize или steps[].op=crop или steps[].op=collage; Ширина
steps[].heightnumbersteps[].op=resize или steps[].op=crop или steps[].op=collage; Высота
steps[].fitstringsteps[].op=resize; cover / contain / fill / inside / outside; Подгонка
steps[].aspectRatiostringsteps[].op=crop; Соотношение сторон
steps[].leftnumbersteps[].op=crop; Отступ слева
steps[].topnumbersteps[].op=crop; Отступ сверху
steps[].brightnessnumbersteps[].op=filter или steps[].op=adjust; Яркость
steps[].saturationnumbersteps[].op=filter или steps[].op=adjust; Насыщенность
steps[].huenumbersteps[].op=filter или steps[].op=adjust; Оттенок
steps[].imageUrlstringsteps[].op=watermark; URL изображения
steps[].positionstringsteps[].op=watermark или steps[].op=text; bottom-right / bottom-left / top-right / top-left / center / top-center / bottom-center; Положение
steps[].opacitynumbersteps[].op=watermark; Непрозрачность
steps[].scalenumbersteps[].op=watermark; Масштаб
steps[].marginnumbersteps[].op=watermark; Внешний отступ
steps[].contentstringsteps[].op=text; Содержимое
steps[].fontSizenumbersteps[].op=text; Размер шрифта
steps[].colorstringsteps[].op=text; Цвет
steps[].bgColorstringsteps[].op=text; Цвет фона
steps[].bgOpacitynumbersteps[].op=text; Непрозрачность фона
steps[].alignstringsteps[].op=text; center / left / right; Выравнивание
steps[].maxWidthnumbersteps[].op=text; Максимальная ширина
steps[].paddingnumbersteps[].op=text; Внутренний отступ
steps[].anglenumbersteps[].op=rotate; Угол
steps[].backgroundstringsteps[].op=rotate или steps[].op=collage; Фон
steps[].sigmanumbersteps[].op=blur или steps[].op=sharpen; Параметр сигма
steps[].shapestringsteps[].op=mask; rounded / circle; Форма
steps[].radiusnumbersteps[].op=mask; Радиус
steps[].imageUrlsarraysteps[].op=collage; URL изображений
steps[].columnsnumbersteps[].op=collage; Число столбцов
steps[].gapnumbersteps[].op=collage; Промежуток
steps[].contrastnumbersteps[].op=adjust; Контрастность
steps[].gammanumbersteps[].op=adjust; Гамма
steps[].formatstringsteps[].op=format; jpeg / png / webp / avif / gif; Формат
steps[].metadataEnginestringsteps[].op=read_metadata; sharp / exiftool; Обработчик метаданных
steps[].includeGpsbooleansteps[].op=read_metadata; Включение координат GPS
steps[].removeBgProviderstringsteps[].op=remove_bg; local; Провайдер удаления фона
steps[].alphaMattingbooleansteps[].op=remove_bg; Уточнение полупрозрачных краёв
steps[].ocrLanguagesstringsteps[].op=ocr; Языки распознавания текста
steps[].metaTitlestringsteps[].op=write_metadata или steps[].op=replace_metadata; Название в метаданных
steps[].metaDescriptionstringsteps[].op=write_metadata или steps[].op=replace_metadata; Описание в метаданных
steps[].metaKeywordsstringsteps[].op=write_metadata; Ключевые слова в метаданных
steps[].altTextstringsteps[].op=write_metadata или steps[].op=replace_metadata; Альтернативный текст
steps[].semanticDescriptionstringsteps[].op=write_metadata; Смысловое описание
steps[].semanticTagsstringsteps[].op=write_metadata или steps[].op=replace_metadata; Смысловые теги
watermarkImageUrlstringURL
overlayImageUrlstringобязательно (image_overlay); URL
overlayPositionstringtop-left / top-center / top-right / center-left / center / center-right / bottom-left / bottom-center / bottom-right; Положение наложения
overlayOpacitynumberминимум 0; максимум 1
overlayScalenumberминимум 0.01; максимум 1
overlayMarginnumberминимум 0
contentstringСодержимое
anglenumberУгол
sigmanumberПараметр сигма
imageDescriptionstringОписание изображения
copyrightstringАвторские права
artiststringИсполнитель
metaTitlestringНазвание в метаданных
metaDescriptionstringОписание в метаданных
metaKeywordsstringКлючевые слова в метаданных
metaAuthorstringАвтор в метаданных
metaCopyrightstringАвторские права в метаданных
metaCreditstringУказание источника в метаданных
metaSoftwarestringПрограммное обеспечение в метаданных
metaLicenseUrlstringURL
metaAcquireLicensePagestringURL
metaSourceUrlstringURL
metaDateCreatedstringДата создания в метаданных
metaDigitalSourceTypestringТип цифрового источника в метаданных
altTextstringАльтернативный текст
semanticDescriptionstringСмысловое описание
semanticTagsstringСмысловые теги
semanticScenestringСмысловое описание сцены
semanticStylestringСтилистические характеристики
semanticMoodstringНастроение
semanticColorsstringСмысловые характеристики цветов
semanticUseCasesstringВарианты использования
ocrTextstringРаспознанный текст
shapestringrounded / circle; Форма
radiusnumberРадиус
metadataEnginestringsharp / exiftool; Обработчик метаданных
includeGpsbooleanВключение координат GPS
removeBgProviderstringlocal; Провайдер удаления фона
alphaMattingbooleanУточнение полупрозрачных краёв
ocrLanguagesstringЯзыки распознавания текста
taskIdstringобязательно (get_task); Параметр пути: полученный taskId того же партнёра
filebinaryобязательно (upload_source); Файл в multipart/form-data; не более 157286400 байт

Опции Make и преобразование в REST

Это справочник выбора в Make; имена интерфейса не всегда совпадают с REST. Поля v1*/v2*, text* и sample* переводятся как описано выше. Вложенные условия относятся к интерфейсу Make.

Поле формыКогдаЗначения
operationresize / 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
presetoperation=resizerpc://getImagePresets
fitoperation=resizecover / contain / fill / inside / outside
filterPresetoperation=filtergrayscale / sepia / warm / cold / vibrant / muted / dramatic
watermarkPositionoperation=watermarkbottom-right / bottom-left / top-right / top-left / center / top-center / bottom-center
overlayPositionoperation=image_overlaytop-left / top-center / top-right / center-left / center / center-right / bottom-left / bottom-center / bottom-right
textFontoperation=textrpc://getFonts
textPositionoperation=textcenter / top / bottom / top-left / top-right / bottom-left / bottom-right
shapeoperation=maskrounded / circle
metadataEngineoperation=read_metadatasharp / exiftool
removeBgProvideroperation=remove_bglocal
outputFormatjpeg / png / webp / avif / gif
c2paSigningModeoff / franklab / user_profile
contentOriginc2paSigningMode=franklabnot_declared / human_edited / ai_assisted / ai_generated
c2paSignerProfileIdc2paSigningMode=user_profilerpc://getC2paSignerProfiles
contentOriginc2paSigningMode=user_profilenot_declared / human_edited / ai_assisted / ai_generated / human_created / camera_captured
steps[].opresize / 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[].presetsteps[].op=resizerpc://getImagePresets
steps[].fitsteps[].op=resizecover / contain / fill / inside / outside
steps[].presetsteps[].op=filtergrayscale / sepia / warm / cold / vibrant / muted / dramatic
steps[].positionsteps[].op=watermarkbottom-right / bottom-left / top-right / top-left / center / top-center / bottom-center
steps[].positionsteps[].op=textcenter / top-center / bottom-center / top-left / top-right / bottom-left / bottom-right
steps[].alignsteps[].op=textcenter / left / right
steps[].shapesteps[].op=maskrounded / circle
steps[].formatsteps[].op=formatjpeg / png / webp / avif / gif
steps[].metadataEnginesteps[].op=read_metadatasharp / exiftool
steps[].removeBgProvidersteps[].op=remove_bglocal

Ответ и границы проверки

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_waitPOST /franklab/api/franklab/jobs/audit-landing/async{"url":"https://example.com/","mode":"single-page"} источник
syncPOST /franklab/api/franklab/jobs/audit-landing{"url":"https://example.com/","mode":"single-page"} источник
get_taskGET /franklab/api/franklab/jobs/audit-landing/async/{taskId}источник
upload_sourcePOST /franklab/api/franklab/jobs/uploadисточник
check_connectionGET /franklab/api/franklab/integrations/text-sticker/auth/statsисточник
bash
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

Поля относятся к выбранной операции; обязательность уточняется условием и минимальным примером. [] — элемент массива.

ПолеТипУсловия и допустимые значения
urlstringобязательно (async_wait); Публичный HTTP(S) URL; обязательно (sync)
modestringsingle-page / crawl
taskIdstringобязательно (get_task); Параметр пути: полученный taskId того же партнёра
filebinaryобязательно (upload_source); Файл в multipart/form-data; не более 157286400 байт

Опции Make и преобразование в REST

Это справочник выбора в Make; имена интерфейса не всегда совпадают с REST. Поля v1*/v2*, text* и sample* переводятся как описано выше. Вложенные условия относятся к интерфейсу Make.

Поле формыКогдаЗначения
execution_modeasync_wait / sync
modesingle-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 / статус
concatPOST /franklab/api/franklab/jobs/montage{"operation":"concat","videos":[{"url":"https://example.com/synthetic.mp4"},{"url":"https://example.com/synthetic.mp4"}]} источник
framePOST /franklab/api/franklab/jobs/montage{"videoUrl":"https://example.com/synthetic.mp4","operation":"frame","position":"start","format":"png"} источник
trimPOST /franklab/api/franklab/jobs/montage{"videoUrl":"https://example.com/synthetic.mp4","operation":"trim","startTime":0,"duration":1} источник
reversePOST /franklab/api/franklab/jobs/montage{"videoUrl":"https://example.com/synthetic.mp4","operation":"reverse"} источник
cropPOST /franklab/api/franklab/jobs/montage{"videoUrl":"https://example.com/synthetic.mp4","operation":"crop","aspectRatio":"1:1"} источник
resizePOST /franklab/api/franklab/jobs/montage{"videoUrl":"https://example.com/synthetic.mp4","operation":"resize","width":160,"height":160} источник
probePOST /franklab/api/franklab/jobs/montage{"videoUrl":"https://example.com/synthetic.mp4","operation":"probe"} блокировано
write_tagsPOST /franklab/api/franklab/jobs/montage{"videoUrl":"https://example.com/synthetic.mp4","operation":"write_tags","tagTitle":"Synthetic test"} источник
replace_tagsPOST /franklab/api/franklab/jobs/montage{"videoUrl":"https://example.com/synthetic.mp4","operation":"replace_tags","tagTitle":"Synthetic test"} источник
strip_tagsPOST /franklab/api/franklab/jobs/montage{"videoUrl":"https://example.com/synthetic.mp4","operation":"strip_tags"} источник
gifPOST /franklab/api/franklab/jobs/montage{"videoUrl":"https://example.com/synthetic.mp4","operation":"gif","duration":1,"fps":5,"width":160} источник
fadePOST /franklab/api/franklab/jobs/montage{"videoUrl":"https://example.com/synthetic.mp4","operation":"fade","fadeInDuration":0.2} источник
thumbnail_smartPOST /franklab/api/franklab/jobs/montage{"videoUrl":"https://example.com/synthetic.mp4","operation":"thumbnail_smart"} источник
transcodePOST /franklab/api/franklab/jobs/montage{"videoUrl":"https://example.com/synthetic.mp4","operation":"transcode","videoCodec":"libx264","crf":28} источник
pipPOST /franklab/api/franklab/jobs/montage{"videoUrl":"https://example.com/synthetic.mp4","operation":"pip","overlayVideoUrl":"https://example.com/synthetic.mp4","pipScale":0.25} источник
image_on_videoPOST /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_imagePOST /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"} источник
slideshowPOST /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"} источник
speedPOST /franklab/api/franklab/jobs/video-speed{"videoUrl":"https://example.com/synthetic.mp4","speed":1.1} источник
subtitlesPOST /franklab/api/franklab/jobs/subtitles{"videoUrl":"https://example.com/synthetic.mp4","subtitles":[{"text":"Synthetic test","startTime":0,"endTime":1}]} источник
overlayPOST /franklab/api/franklab/jobs/overlay{"videoUrl":"https://example.com/synthetic.mp4","overlays":[{"type":"text","content":"Synthetic test","x":50,"y":50}]} источник
quality_comparePOST /franklab/api/franklab/jobs/montage{"videoUrl":"https://example.com/synthetic.mp4","operation":"quality_compare","referenceVideoUrl":"https://example.com/synthetic.mp4"} блокировано
stabilizePOST /franklab/api/franklab/jobs/montage{"videoUrl":"https://example.com/synthetic.mp4","operation":"stabilize"} источник
scenesPOST /franklab/api/franklab/jobs/montage{"videoUrl":"https://example.com/synthetic.mp4","operation":"scenes"} блокировано
qc_reportPOST /franklab/api/franklab/jobs/montage{"videoUrl":"https://example.com/synthetic.mp4","operation":"qc_report"} блокировано
split_screenPOST /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_motionPOST /franklab/api/franklab/jobs/montage{"videoUrl":"https://example.com/synthetic.mp4","operation":"slow_motion","slowFactor":2,"slowFps":30} источник
denoisePOST /franklab/api/franklab/jobs/montage{"videoUrl":"https://example.com/synthetic.mp4","operation":"denoise","denoiseMethod":"hqdn3d","denoiseStrength":"low"} источник
hdr_to_sdrPOST /franklab/api/franklab/jobs/montage{"videoUrl":"https://example.com/synthetic.mp4","operation":"hdr_to_sdr","tonemapMethod":"hable"} источник
animatedPOST /franklab/api/franklab/jobs/montage{"videoUrl":"https://example.com/synthetic.mp4","operation":"animated","animatedFormat":"webp","duration":1,"fps":5,"width":160} источник
mezzaninePOST /franklab/api/franklab/jobs/montage{"videoUrl":"https://example.com/synthetic.mp4","operation":"mezzanine","mezzanineCodec":"prores","proresProfile":0} источник
lookup_transitionsGET /franklab/api/franklab/integrations/text-sticker/transitionsисточник
lookup_transition-soundsGET /franklab/api/franklab/integrations/text-sticker/transition-soundsисточник
lookup_aspect-ratiosGET /franklab/api/franklab/integrations/text-sticker/aspect-ratiosисточник
lookup_resize-presetsGET /franklab/api/franklab/integrations/text-sticker/resize-presetsисточник
lookup_signer-profilesGET /franklab/api/make/c2pa/signer-profilesисточник
get_taskGET /franklab/api/franklab/jobs/{taskId}источник
upload_sourcePOST /franklab/api/franklab/jobs/uploadисточник
check_connectionGET /franklab/api/franklab/integrations/text-sticker/auth/statsисточник
bash
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

Поля относятся к выбранной операции; обязательность уточняется условием и минимальным примером. [] — элемент массива.

ПолеТипУсловия и допустимые значения
callbackUrlstringURL
videosarrayне более 20 элементов
maxTransitionRationumberМаксимальная доля перехода
operationstringобязательно (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)
videoUrlstringобязательно (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)
positionstringfirst / middle / last / custom; Положение
customTimenumberПользовательское время
formatstringjpg / png; Формат
startTimenumberВремя начала; минимум 0
durationnumberДлительность; минимум 0
aspectRatiostringrpc://getAspectRatios; Соотношение сторон
cropWnumberШирина области обрезки
cropHnumberВысота области обрезки
cropXnumberКоордината X области обрезки
cropYnumberКоордината Y области обрезки
presetstringrpc://getResizePresets; Пресет; fast / medium / slow / veryslow
widthnumberШирина
heightnumberВысота
tagTitlestringНазвание в тегах
tagArtiststringИсполнитель в тегах
tagDescriptionstringОписание в тегах
tagCommentstringКомментарий в тегах
tagDatestringДата в тегах
tagKeywordsstringКлючевые слова в тегах
tagCopyrightstringАвторские права в тегах
tagSoftwarestringПрограммное обеспечение в тегах
tagGenrestringЖанр в тегах
tagLanguagestringЯзык в тегах
tagCreationTimestringВремя создания в тегах
summarystringКраткое содержание
transcriptstringТранскрипт
thumbnailAltTextstringАльтернативный текст миниатюры
c2paSigningModestringoff / franklab / user_profile; Режим подписи C2PA
c2paSignerProfileIdstringобязательно при c2paSigningMode=user_profile; rpc://getC2paSignerProfiles; ID профиля подписи C2PA
contentOriginstringfranklab или user_profile; Ограниченные варианты происхождения требуют разрешающего их профиля user_profile и подтверждающих материалов; not_declared / human_edited / ai_assisted / ai_generated / human_created / camera_captured; Происхождение содержимого
sourceMaterialUrlsarrayне более 10 элементов
originalEvidenceUrlsarrayне более 10 элементов
verifiedIncomingC2paIngredientbooleanПодтверждённый входной материал C2PA
c2paActionDescriptionstringОписание действия C2PA
c2paDisclosurestringРаскрытие сведений C2PA
fpsnumberЧастота кадров
fadeInDurationnumberДлительность плавного появления
fadeOutDurationnumberДлительность плавного исчезновения
videoCodecstringlibx264 / libx265 / libvpx-vp9 / copy; Видеокодек
crfnumbercrf
audioBitratestring64k / 96k / 128k / 160k / 192k / 256k / 320k; Строка от 8k до 320k; custom — элемент управления Make, в REST передавайте выбранное значение
overlayVideoUrlstringобязательно (pip); URL; обязательно (video_on_image)
pipPositionstringtop-left / top-right / bottom-left / bottom-right / center; Положение картинки в картинке
pipScalenumberМасштаб картинки в картинке
includeBaseAudiobooleanВключение исходной звуковой дорожки
baseAudioVolumenumberГромкость исходной звуковой дорожки
includeOverlayAudiobooleanВключение звука наложения
overlayAudioVolumenumberГромкость звука наложения
overlayImageUrlstringобязательно (image_on_video); URL
overlayPositionstringtop-left / top-center / top-right / center / bottom-left / bottom-center / bottom-right; Положение наложения
overlayScalenumberминимум 0.01; максимум 1
overlayOpacitynumberминимум 0; максимум 1
overlayMarginnumberминимум 0
endTimenumberминимум 0
imageUrlstringобязательно (video_on_image); URL
durationModestringoverlay / fixed; Режим длительности
imageUrlsarrayне более 20 элементов
slideDurationnumberДлительность слайда
slideTransitionstringrpc://getTransitions; Переход между слайдами
slideTransitionDurationnumberДлительность перехода между слайдами
speednumberобязательно (speed); минимум 0.25; максимум 4
templateIdstringID шаблона
languagestringru / en / auto; Язык
highlightModestringnone / keywords / karaoke; Режим выделения
platformstringnone / tiktok / instagram_reels / youtube_shorts; Платформа
safeZonePresetstringПресет безопасной зоны
subtitlesarrayне более 500 элементов
overlaysarrayне более 20 элементов
configIdstringID конфигурации
referenceVideoUrlstringобязательно (quality_compare); URL
shakinessnumberминимум 1; максимум 10
smoothingnumberминимум 1; максимум 100
sceneThresholdnumberминимум 1; максимум 100
sceneThumbnailsbooleanМиниатюры сцен
splitLayoutstringhorizontal / vertical / grid_2x2; Схема разделения
slowFactornumber2 / 4; Коэффициент замедления
slowFpsnumber30 / 60; Частота кадров при замедлении
denoiseMethodstringhqdn3d / nlmeans; Метод шумоподавления
denoiseStrengthstringlow / medium / high; Интенсивность шумоподавления
tonemapMethodstringhable / mobius / reinhard; Метод тонального отображения
animatedFormatstringwebp / avif; Формат анимации
mezzanineCodecstringprores / dnxhd; Промежуточный кодек
proresProfilenumber0 / 1 / 2 / 3; Профиль ProRes
dnxhdProfilestringdnxhr_lb / dnxhr_sq / dnxhr_hq / dnxhr_hqx; Профиль DNxHD
taskIdstringобязательно (get_task); Параметр пути: полученный taskId того же партнёра
filebinaryобязательно (upload_source); Файл в multipart/form-data; не более 157286400 байт

Опции Make и преобразование в REST

Это справочник выбора в Make; имена интерфейса не всегда совпадают с REST. Поля v1*/v2*, text* и sample* переводятся как описано выше. Вложенные условия относятся к интерфейсу Make.

Поле формыКогдаЗначения
operationconcat / 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
positionoperation=framefirst / middle / last / custom
formatoperation=framejpg / png
aspectRatiooperation=croprpc://getAspectRatios
presetoperation=resizerpc://getResizePresets
c2paSigningModeoperation=write_tagsoff / franklab / user_profile
c2paSignerProfileIdoperation=write_tagsrpc://getC2paSignerProfiles
contentOriginoperation=write_tagsnot_declared / human_edited / ai_assisted / ai_generated / human_created / camera_captured
c2paSigningModeoperation=replace_tagsoff / franklab / user_profile
c2paSignerProfileIdoperation=replace_tagsrpc://getC2paSignerProfiles
contentOriginoperation=replace_tagsnot_declared / human_edited / ai_assisted / ai_generated / human_created / camera_captured
formatoperation=thumbnail_smartjpg / png
videoCodecoperation=transcodelibx264 / libx265 / libvpx-vp9 / copy
presetoperation=transcodefast / medium / slow / veryslow
pipPositionoperation=piptop-left / top-right / bottom-left / bottom-right / center
overlayPositionoperation=image_on_videotop-left / top-center / top-right / center / bottom-left / bottom-center / bottom-right
pipPositionoperation=video_on_imagetop-left / top-right / bottom-left / bottom-right / center
durationModeoperation=video_on_imageoverlay / fixed
slideTransitionoperation=slideshowrpc://getTransitions
subtitleLanguageoperation=subtitlesru / en / auto
highlightModeoperation=subtitlesnone / keywords / karaoke
subtitlePlatformoperation=subtitlesnone / tiktok / instagram_reels / youtube_shorts
splitLayoutoperation=split_screenhorizontal / vertical / grid_2x2
slowFactoroperation=slow_motion2 / 4
slowFpsoperation=slow_motion30 / 60
denoiseMethodoperation=denoisehqdn3d / nlmeans
denoiseStrengthoperation=denoiselow / medium / high
tonemapMethodoperation=hdr_to_sdrhable / mobius / reinhard
animatedFormatoperation=animatedwebp / avif
mezzanineCodecoperation=mezzanineprores / dnxhd
proresProfileoperation=mezzanine0 / 1 / 2 / 3
dnxhdProfileoperation=mezzaninednxhr_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 / статус
overlayPOST /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_trueGET /franklab/api/franklab/integrations/text-sticker/stickers?animated=trueисточник
lookup_emojisGET /franklab/api/franklab/integrations/text-sticker/emojisисточник
lookup_fontsGET /franklab/api/franklab/integrations/text-sticker/fontsисточник
lookup_stickers_animated_falseGET /franklab/api/franklab/integrations/text-sticker/stickers?animated=falseисточник
lookup_safe-zone-optionsGET /franklab/api/franklab/integrations/text-sticker/safe-zone-optionsисточник
lookup_subtitle-templatesGET /franklab/api/franklab/integrations/text-sticker/subtitle-templatesисточник
lookup_transitionsGET /franklab/api/franklab/integrations/text-sticker/transitionsисточник
lookup_video-effectsGET /franklab/api/franklab/integrations/text-sticker/video-effectsисточник
get_taskGET /franklab/api/make/jobs/{taskId}источник
upload_sourcePOST /franklab/api/franklab/jobs/uploadисточник
check_connectionGET /franklab/api/franklab/integrations/text-sticker/auth/statsисточник
bash
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

Поля относятся к выбранной операции; обязательность уточняется условием и минимальным примером. [] — элемент массива.

ПолеТипУсловия и допустимые значения
videoUrlstringобязательно (overlay); URL
platformstringnone / tiktok / instagram_reels / youtube_shorts; Платформа
configIdstringID конфигурации
overlaysarrayне более 20 элементов
overlays[].typestringобязательно (overlay); text / emoji / sticker / animated_sticker / watermark; Тип
overlays[].contentstringСодержимое
overlays[].stickerIdstringrpc://getOverlayStickers; ID стикера
overlays[].animatedStickerIdstringrpc://getOverlayAnimatedStickers; ID анимированного стикера
overlays[].imageUrlstringURL изображения
overlays[].opacitynumberНепрозрачность
overlays[].scalenumberМасштаб
overlays[].positionstring/ bottom-right / bottom-left / top-right / top-left / center / top-center / bottom-center; Положение
overlays[].marginnumberВнешний отступ
overlays[].emojiIdstringrpc://getOverlayEmojis; ID эмодзи
overlays[].placementstringcustom / center / top_safe / bottom_safe / top_left_safe / top_right_safe / bottom_left_safe / bottom_right_safe; Размещение
overlays[].xnumberoverlays[].x
overlays[].ynumberoverlays[].y
overlays[].startTimenumberВремя начала
overlays[].endTimenumberВремя окончания
overlays[].fontSizenumberРазмер шрифта
overlays[].colorstringЦвет
overlays[].fontstringrpc://getOverlayFonts; Шрифт
overlays[].shadowColorstringЦвет тени
overlays[].shadowXnumberСмещение тени по X
overlays[].shadowYnumberСмещение тени по Y
overlays[].widthnumberШирина
overlays[].heightnumberВысота
callbackUrlstringURL
taskIdstringобязательно (get_task); Параметр пути: полученный taskId того же партнёра
filebinaryобязательно (upload_source); Файл в multipart/form-data; не более 157286400 байт

Опции Make и преобразование в REST

Это справочник выбора в Make; имена интерфейса не всегда совпадают с REST. Поля v1*/v2*, text* и sample* переводятся как описано выше. Вложенные условия относятся к интерфейсу Make.

Поле формыКогдаЗначения
platformnone / tiktok / instagram_reels / youtube_shorts
overlays[].typetext / emoji / sticker / animated_sticker / watermark
overlays[].stickerIdrpc://getOverlayStickers
overlays[].animatedStickerIdrpc://getOverlayAnimatedStickers
overlays[].position/ bottom-right / bottom-left / top-right / top-left / center / top-center / bottom-center
overlays[].emojiIdrpc://getOverlayEmojis
overlays[].placementcustom / center / top_safe / bottom_safe / top_left_safe / top_right_safe / bottom_left_safe / bottom_right_safe
overlays[].fontrpc://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_samplePOST /franklab/api/franklab/audio-samples{"name":"Synthetic sample","sampleUrl":"https://example.com/synthetic.wav"} источник
apply_samplePOST /franklab/api/franklab/jobs/audio{"videoUrl":"https://example.com/synthetic.mp4","operation":"overlay","sampleId":"<SAMPLE_UUID>"} источник
overlayPOST /franklab/api/franklab/jobs/audio{"videoUrl":"https://example.com/synthetic.wav","operation":"overlay","audioUrl":"https://example.com/synthetic.wav"} источник
replacePOST /franklab/api/franklab/jobs/audio{"videoUrl":"https://example.com/synthetic.wav","operation":"replace","audioUrl":"https://example.com/synthetic.wav"} источник
fitPOST /franklab/api/franklab/jobs/audio{"videoUrl":"https://example.com/synthetic.wav","operation":"fit","audioUrl":"https://example.com/synthetic.wav","fitStrategy":"trim_pad","fitAudioMode":"replace"} источник
extractPOST /franklab/api/franklab/jobs/audio{"videoUrl":"https://example.com/synthetic.wav","operation":"extract"} источник
speedPOST /franklab/api/franklab/jobs/audio{"videoUrl":"https://example.com/synthetic.wav","operation":"speed","speed":1.1} источник
removePOST /franklab/api/franklab/jobs/audio{"videoUrl":"https://example.com/synthetic.wav","operation":"remove"} источник
probePOST /franklab/api/franklab/jobs/audio{"videoUrl":"https://example.com/synthetic.wav","operation":"probe"} блокировано
write_tagsPOST /franklab/api/franklab/jobs/audio{"videoUrl":"https://example.com/synthetic.wav","operation":"write_tags","tagTitle":"Synthetic test"} источник
replace_tagsPOST /franklab/api/franklab/jobs/audio{"videoUrl":"https://example.com/synthetic.wav","operation":"replace_tags","tagTitle":"Synthetic test"} источник
strip_tagsPOST /franklab/api/franklab/jobs/audio{"videoUrl":"https://example.com/synthetic.wav","operation":"strip_tags"} источник
normalizePOST /franklab/api/franklab/jobs/audio{"videoUrl":"https://example.com/synthetic.wav","operation":"normalize","targetLoudness":-16} источник
trimPOST /franklab/api/franklab/jobs/audio{"videoUrl":"https://example.com/synthetic.wav","operation":"trim","startTime":0,"duration":1} источник
convertPOST /franklab/api/franklab/jobs/audio{"videoUrl":"https://example.com/synthetic.wav","operation":"convert","targetFormat":"mp3","audioBitrate":"64k"} источник
fadePOST /franklab/api/franklab/jobs/audio{"videoUrl":"https://example.com/synthetic.wav","operation":"fade","fadeInDuration":0.2} источник
mergePOST /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_comparePOST /franklab/api/franklab/jobs/audio{"videoUrl":"https://example.com/synthetic.wav","operation":"quality_compare","referenceAudioUrl":"https://example.com/synthetic.wav"} блокировано
analyzePOST /franklab/api/franklab/jobs/audio{"videoUrl":"https://example.com/synthetic.wav","operation":"analyze"} блокировано
spectrogramPOST /franklab/api/franklab/jobs/audio{"videoUrl":"https://example.com/synthetic.wav","operation":"spectrogram","imageWidth":320,"imageHeight":240} источник
waveform_imagePOST /franklab/api/franklab/jobs/audio{"videoUrl":"https://example.com/synthetic.wav","operation":"waveform_image","imageWidth":320,"imageHeight":240} источник
fingerprintPOST /franklab/api/franklab/jobs/audio{"videoUrl":"https://example.com/synthetic.wav","operation":"fingerprint"} блокировано
enhance_dialoguePOST /franklab/api/franklab/jobs/audio{"videoUrl":"https://example.com/synthetic.wav","operation":"enhance_dialogue","enhanceOriginal":1,"enhanceAmount":1} источник
stereo_toolsPOST /franklab/api/franklab/jobs/audio{"videoUrl":"https://example.com/synthetic.wav","operation":"stereo_tools","stereoPreset":"mono"} источник
lookup_audio-samplesGET /franklab/api/franklab/integrations/text-sticker/audio-samplesисточник
lookup_signer-profilesGET /franklab/api/make/c2pa/signer-profilesисточник
get_taskGET /franklab/api/franklab/jobs/{taskId}источник
upload_sourcePOST /franklab/api/franklab/jobs/uploadисточник
save_sample_filePOST /franklab/api/franklab/audio-samplesисточник
list_samplesGET /franklab/api/franklab/audio-samplesисточник
check_connectionGET /franklab/api/franklab/integrations/text-sticker/auth/statsисточник
bash
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>"}'
bash
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

Поля относятся к выбранной операции; обязательность уточняется условием и минимальным примером. [] — элемент массива.

ПолеТипУсловия и допустимые значения
namestringобязательно (save_sample); не более 120 символов; обязательно (save_sample_file); Non-empty, maximum 120 characters
sampleUrlstringобязательно при sampleSourceMode=url; URL
sampleStartTimenumberминимум 0; Seconds >=0
sampleEndTimenumberминимум 0; Время в секундах, больше времени начала
videoUrlstringобязательно (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)
sampleIdstringобязательно (apply_sample); rpc://getAudioSamples; ID аудиосэмпла
operationstringобязательно (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)
insertAtTimenumberминимум 0
audioStartTimenumberминимум 0
audioEndTimenumberминимум 0
audioVolumenumberминимум 0; максимум 2
videoVolumenumberминимум 0; максимум 2; fitAudioMode=mix
loopIfShortbooleanЗацикливание при недостаточной длительности; fitStrategy=trim_pad
callbackUrlstringURL
audioUrlstringобязательно (overlay); URL; обязательно (replace); обязательно (fit)
audioFadeOutbooleanПлавное затухание звука
fitAudioModestringобязательно (fit); replace / mix; Режим подгонки аудио
fitStrategystringобязательно (fit); trim_pad / stretch; Способ подгонки
speedModestringобязательно при fitStrategy=stretch; standard / voice_natural; Режим скорости; обязательно (speed)
speednumberобязательно (speed); минимум 0.25; максимум 4
audioBitratestring64k / 96k / 128k / 160k / 192k / 256k / 320k; Строка от 8k до 320k; custom — элемент управления Make, в REST передавайте выбранное значение
tagTitlestringНазвание в тегах
tagArtiststringИсполнитель в тегах
tagAlbumstringАльбом в тегах
tagGenrestringЖанр в тегах
tagCommentstringКомментарий в тегах
tagDatestringДата в тегах
tagDescriptionstringОписание в тегах
tagKeywordsstringКлючевые слова в тегах
tagCopyrightstringАвторские права в тегах
tagComposerstringКомпозитор в тегах
tagAlbumArtiststringИсполнитель альбома в тегах
tagTrackstringНомер дорожки в тегах
tagDiscstringНомер диска в тегах
tagPublisherstringИздатель в тегах
tagBpmstringТемп в тегах
tagLanguagestringЯзык в тегах
tagSoftwarestringПрограммное обеспечение в тегах
summarystringКраткое содержание
transcriptstringТранскрипт
c2paSigningModestringoff / franklab / user_profile; Режим подписи C2PA
c2paSignerProfileIdstringобязательно при c2paSigningMode=user_profile; rpc://getC2paSignerProfiles; ID профиля подписи C2PA
contentOriginstringfranklab или user_profile; Ограниченные варианты происхождения требуют разрешающего их профиля user_profile и подтверждающих материалов; not_declared / human_edited / ai_assisted / ai_generated / human_created / camera_captured; Происхождение содержимого
sourceMaterialUrlsarrayне более 10 элементов
originalEvidenceUrlsarrayне более 10 элементов
verifiedIncomingC2paIngredientbooleanПодтверждённый входной материал C2PA
c2paActionDescriptionstringОписание действия C2PA
c2paDisclosurestringРаскрытие сведений C2PA
targetLoudnessnumberЦелевая громкость
targetTruePeaknumberЦелевой истинный пиковый уровень
startTimenumberминимум 0
durationnumberобязательно (trim); минимум 0
targetFormatstringобязательно (convert); mp3 / aac / wav / ogg / flac / alac / opus; Целевой формат
fadeInDurationnumberминимум 0
fadeOutDurationnumberминимум 0
audioUrlsarrayне более 20 элементов
referenceAudioUrlstringобязательно (quality_compare); URL
imageWidthnumberминимум 160; максимум 4096
imageHeightnumberминимум 120; максимум 2160
spectrogramColorstringintensity / channel / rainbow / moreland / nebulae / fire / fiery / fruit / cool / magma / green / viridis / plasma / cividis / terrain; Цвет спектрограммы
spectrogramScalestringlog / lin / sqrt / cbrt / 4thrt / 5thrt; Шкала спектрограммы
spectrogramLegendbooleanЛегенда спектрограммы
waveformColorstringЦвет волновой формы
waveformBgColorstringЦвет фона волновой формы
waveformSplitChannelsbooleanРаздельное отображение каналов
enhanceOriginalnumberминимум 0; максимум 1
enhanceAmountnumberминимум 0; максимум 3
stereoPresetstringwiden / narrow / mono; Стереопресет
taskIdstringобязательно (get_task); Параметр пути: полученный taskId того же партнёра
filebinaryобязательно (upload_source); Файл в multipart/form-data; не более 157286400 байт
sampleFilebinaryобязательно (save_sample_file); multipart/form-data; <=50 MiB; mp3/wav/aac/m4a/ogg/flac

Опции Make и преобразование в REST

Это справочник выбора в Make; имена интерфейса не всегда совпадают с REST. Поля v1*/v2*, text* и sample* переводятся как описано выше. Вложенные условия относятся к интерфейсу Make.

Поле формыКогдаЗначения
operationsave_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
sampleSourceModeoperation=save_sampleurl / file
sampleIdoperation=apply_samplerpc://getAudioSamples
sampleOperationoperation=apply_sampleoverlay / replace / fit
fitAudioModeoperation=fitreplace / mix
fitStrategyoperation=fittrim_pad / stretch
speedModeoperation=fit; fitStrategy=stretchstandard / voice_natural
speedModeoperation=speedstandard / voice_natural
audioBitrateoperation=speed64k / 96k / 128k / 160k / 192k / 256k / 320k / custom
c2paSigningModeoperation=write_tagsoff / franklab / user_profile
c2paSignerProfileIdoperation=write_tagsrpc://getC2paSignerProfiles
contentOriginoperation=write_tagsnot_declared / human_edited / ai_assisted / ai_generated / human_created / camera_captured
c2paSigningModeoperation=replace_tagsoff / franklab / user_profile
c2paSignerProfileIdoperation=replace_tagsrpc://getC2paSignerProfiles
contentOriginoperation=replace_tagsnot_declared / human_edited / ai_assisted / ai_generated / human_created / camera_captured
targetFormatoperation=convertmp3 / aac / wav / ogg / flac / alac / opus
audioBitrateoperation=convert64k / 96k / 128k / 160k / 192k / 256k / 320k / custom
spectrogramColoroperation=spectrogramintensity / channel / rainbow / moreland / nebulae / fire / fiery / fruit / cool / magma / green / viridis / plasma / cividis / terrain
spectrogramScaleoperation=spectrogramlog / lin / sqrt / cbrt / 4thrt / 5thrt
stereoPresetoperation=stereo_toolswiden / 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_removePOST /franklab/api/v1/recraft/create-task{"model":"recraft/remove-background","input":{"image":"https://example.com/synthetic.png"}} блокировано
bria_image_remove_bgPOST /franklab/api/franklab/jobs/image{"operation":"bria_image_remove_bg","imageUrl":"https://example.com/synthetic.png"} источник
bria_image_replace_bgPOST /franklab/api/franklab/jobs/image{"operation":"bria_image_replace_bg","imageUrl":"https://example.com/synthetic.png","prompt":"Plain studio background"} источник
bria_erase_foregroundPOST /franklab/api/franklab/jobs/image{"operation":"bria_erase_foreground","imageUrl":"https://example.com/synthetic.png"} источник
bria_erase_by_textPOST /franklab/api/franklab/jobs/image{"operation":"bria_erase_by_text","imageUrl":"https://example.com/synthetic.png","objectName":"lamp"} источник
bria_product_lifestyle_by_textPOST /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_cutoutPOST /franklab/api/franklab/jobs/image{"operation":"bria_product_cutout","imageUrl":"https://example.com/synthetic.png"} источник
waveformPOST /franklab/api/franklab/jobs/montage{"operation":"waveform","videoUrl":"https://example.com/synthetic.wav","width":320,"height":240} источник
video_roundPOST /franklab/api/franklab/jobs/montage{"operation":"round","videoUrl":"https://example.com/synthetic.mp4","shape":"rounded","radius":8,"backgroundColor":"#000000"} источник
video_remove_bgPOST /franklab/api/franklab/jobs/montage{"operation":"remove_bg","videoUrl":"https://example.com/synthetic.mp4","removeBgProvider":"bria","removeBgOutputCodec":"webm_vp9"} источник
bria_video_replace_bgPOST /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_objectPOST /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_taskGET /franklab/api/franklab/jobs/{taskId}источник
upload_sourcePOST /franklab/api/franklab/jobs/uploadисточник
get_recraft_taskGET /franklab/api/v1/recraft/record-infoблокировано
check_connectionGET /franklab/api/v1/images/omni-imageисточник
bash
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

Поля относятся к выбранной операции; обязательность уточняется условием и минимальным примером. [] — элемент массива.

ПолеТипУсловия и допустимые значения
modelstringобязательно (background_remove); recraft/remove-background
inputobjectобязательно (background_remove); Входной объект
input.imagestringобязательно (background_remove); URL изображения; В Make указаны png/jpg/webp, до 5 МБ, до 16 Мп, 256–4096 пикселей
callBackUrlstringНеобязательный URL обратного вызова провайдера
callbackUrlstringURL
imageUrlstringобязательно (bria_image_remove_bg); URL; обязательно (bria_image_replace_bg); обязательно (bria_erase_foreground); обязательно (bria_erase_by_text); обязательно (bria_product_lifestyle_by_text); обязательно (bria_product_cutout)
preserveAlphabooleanСохранение альфа-канала
operationstringобязательно (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)
promptstringПромпт
refImagesarrayРеференсные изображения
briaModestringhigh_control / base / fast; Режим Bria
negativePromptstringНегативный промпт
refinePromptbooleanУточнение промпта
originalQualitybooleanИсходное качество
forceBackgroundDetectionbooleanПринудительное определение фона
seednumberНачальное значение генератора
objectNamestringобязательно (bria_erase_by_text); Название объекта
sceneDescriptionstringобязательно (bria_product_lifestyle_by_text); Описание сцены
optimizeDescriptionbooleanОптимизация описания
placementTypestringautomatic_aspect_ratio / original / manual_placement / manual_padding / custom_coordinates; Тип размещения
briaAspectRatiostring1:1 / 4:5 / 9:16 / 16:9 / 3:2 / 2:3; Соотношение сторон Bria
forceRmbgbooleanПринудительное удаление фона
skustringsku
videoUrlstringобязательно (waveform); URL; обязательно (video_round); обязательно (video_remove_bg); обязательно (bria_video_replace_bg); обязательно (bria_video_erase_object)
widthnumberШирина
heightnumberВысота
waveformColorstringЦвет волновой формы
waveformBgColorstringЦвет фона волновой формы
shapestringrounded / circle; Форма
radiusnumberРадиус
backgroundColorstringЦвет фона
removeBgProviderstringbria / auto / replicate; Провайдер удаления фона
removeBgBackgroundColorstringTransparent / Black / White / Gray / Red / Green / Blue / Yellow / Cyan / Magenta / Orange; Цвет фона после удаления
removeBgOutputCodecstringwebm_vp9 / mov_h265 / mov_proresks / mkv_vp9 / gif / mp4_h264 / mp4_h265 / mkv_h264 / mkv_h265; Кодек после удаления фона
removeBgPreserveAudiobooleanСохранение звука при удалении фона
backgroundUrlstringобязательно (bria_video_replace_bg); URL
durationnumberДлительность
briaOutputCodecstringmp4_h264 / mp4_h265 / webm_vp9 / mov_h265 / mov_proresks / mkv_h264 / mkv_h265 / mkv_vp9 / gif; Выходной кодек Bria
briaPreserveAudiobooleanСохранение звука Bria
maskUrlstringобязательно (bria_video_erase_object); URL
autoTrimbooleanАвтоматическая обрезка
taskIdstringобязательно (get_task); Параметр пути: полученный taskId того же партнёра; обязательно (get_recraft_task); Параметр запроса, полученный от recraft/create-task
filebinaryобязательно (upload_source); Файл в multipart/form-data; не более 157286400 байт
pageNumnumberПагинация через параметры запроса; Проверка соединения использует 1
pageSizenumberПагинация через параметры запроса; Проверка соединения использует 1

Опции Make и преобразование в REST

Это справочник выбора в Make; имена интерфейса не всегда совпадают с REST. Поля v1*/v2*, text* и sample* переводятся как описано выше. Вложенные условия относятся к интерфейсу Make.

Поле формыКогдаЗначения
operationbackground_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
briaModeoperation=bria_image_replace_bghigh_control / base / fast
briaModeoperation=bria_product_lifestyle_by_texthigh_control / base / fast
placementTypeoperation=bria_product_lifestyle_by_textautomatic_aspect_ratio / original / manual_placement / manual_padding / custom_coordinates
briaAspectRatiooperation=bria_product_lifestyle_by_text1:1 / 4:5 / 9:16 / 16:9 / 3:2 / 2:3
shapeoperation=video_roundrounded / circle
removeBgProvideroperation=video_remove_bgbria / auto / replicate
removeBgBackgroundColoroperation=video_remove_bgTransparent / Black / White / Gray / Red / Green / Blue / Yellow / Cyan / Magenta / Orange
removeBgOutputCodecoperation=video_remove_bgwebm_vp9 / mov_h265 / mov_proresks / mkv_vp9 / gif / mp4_h264 / mp4_h265 / mkv_h264 / mkv_h265
briaOutputCodecoperation=bria_video_replace_bgmp4_h264 / mp4_h265 / webm_vp9 / mov_h265 / mov_proresks / mkv_h264 / mkv_h265 / mkv_vp9 / gif
briaOutputCodecoperation=bria_video_erase_objectmp4_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 / статус
v1POST /franklab/api/franklab/jobs/subtitles{"videoUrl":"https://example.com/synthetic.mp4","captionEngine":"v1","subtitles":[{"text":"Synthetic test","startTime":0,"endTime":1}],"outputMode":"burn"} источник
v2POST /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_fontsGET /franklab/api/franklab/integrations/text-sticker/fontsисточник
lookup_subtitle-templatesGET /franklab/api/franklab/integrations/text-sticker/subtitle-templatesисточник
lookup_video-effectsGET /franklab/api/franklab/integrations/text-sticker/video-effectsисточник
lookup_safe-zone-platform-optionsGET /franklab/api/franklab/integrations/text-sticker/safe-zone-platform-optionsисточник
lookup_safe-zone-placement-optionsGET /franklab/api/franklab/integrations/text-sticker/safe-zone-placement-optionsисточник
get_taskGET /franklab/api/franklab/jobs/{taskId}источник
upload_sourcePOST /franklab/api/franklab/jobs/uploadисточник
check_connectionGET /franklab/api/franklab/integrations/text-sticker/auth/statsисточник
bash
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

Поля относятся к выбранной операции; обязательность уточняется условием и минимальным примером. [] — элемент массива.

ПолеТипУсловия и допустимые значения
videoUrlstringобязательно (v1); URL; обязательно (v2)
languagestringauto / ru / en; Язык
transcriptionEnginestringsubtitleSourceMode=auto; whisper / xai_grok_transcribe / elevenlabs_scribe / local_whisper; Система транскрибации
diarizebooleansubtitleSourceMode=auto; transcriptionEngine=xai_grok_transcribe или subtitleSourceMode=auto; transcriptionEngine=elevenlabs_scribe; Разделение по говорящим
transcriptionFormatbooleansubtitleSourceMode=auto; transcriptionEngine=xai_grok_transcribe; Формат транскрибации
fillerWordsbooleansubtitleSourceMode=auto; transcriptionEngine=xai_grok_transcribe; Слова-паразиты
keytermarraysubtitleSourceMode=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[]
subtitlesarrayобязательно при subtitleSourceMode=manual; не более 500 элементов
subtitles[].textstringобязательно при subtitleSourceMode=manual; Текст
subtitles[].startTimenumberобязательно при subtitleSourceMode=manual; Время начала
subtitles[].endTimenumberобязательно при subtitleSourceMode=manual; Время окончания
subtitles[].wordsarraysubtitleSourceMode=manual; Слова
subtitles[].words[].wordstringобязательно при subtitleSourceMode=manual; Слово
subtitles[].words[].startnumberобязательно при subtitleSourceMode=manual; Начало
subtitles[].words[].endnumberобязательно при subtitleSourceMode=manual; Окончание
translateTostringtranslationMode=translate; en / ru / de / fr / es / it / pt / zh / ja / ko / ar; Язык перевода
dualLanguagebooleantranslationMode=translate; Два языка
videoEffectsarrayeffectsMode=custom; не более 20 элементов
videoEffects[].effectIdstringобязательно при effectsMode=custom; rpc://getVideoEffects; ID эффекта
videoEffects[].scopestringeffectsMode=custom; clip / range; Область применения
videoEffects[].startTimenumbereffectsMode=custom; Время начала
videoEffects[].endTimenumbereffectsMode=custom; Время окончания
videoEffects[].intensitynumbereffectsMode=custom; Интенсивность
outputModestringburn / srt / vtt / ass / burn+srt / burn+vtt; Режим вывода
c2paSigningModestringoff / franklab / user_profile; Режим подписи C2PA
contentOriginstringfranklab или user_profile; Ограниченные варианты происхождения требуют разрешающего их профиля user_profile и подтверждающих материалов; not_declared / human_edited / ai_assisted / ai_generated / human_created / camera_captured; Происхождение содержимого
humanAuthorNamestringc2paSigningMode=franklab или c2paSigningMode=user_profile; Имя автора-человека
humanAuthorUrlstringc2paSigningMode=franklab или c2paSigningMode=user_profile; URL автора-человека
reviewedBystringc2paSigningMode=franklab или c2paSigningMode=user_profile; Кто выполнил проверку
reviewedAtstringc2paSigningMode=franklab или c2paSigningMode=user_profile; Время проверки
reviewMethodstringc2paSigningMode=franklab или c2paSigningMode=user_profile; Метод проверки
sourceMaterialUrlsarrayc2paSigningMode=franklab или c2paSigningMode=user_profile; не более 10 элементов
originalEvidenceUrlsarrayc2paSigningMode=franklab или c2paSigningMode=user_profile; не более 10 элементов
verifiedIncomingC2paIngredientbooleanc2paSigningMode=franklab или c2paSigningMode=user_profile; Подтверждённый входной материал C2PA
c2paActionDescriptionstringc2paSigningMode=franklab или c2paSigningMode=user_profile; Описание действия C2PA
c2paDisclosurestringc2paSigningMode=franklab или c2paSigningMode=user_profile; Раскрытие сведений C2PA
c2paSignerProfileIdstringобязательно при c2paSigningMode=user_profile; rpc://getC2paSignerProfiles; ID профиля подписи C2PA
callbackUrlstringURL
templateIdstringclean-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
highlightModestring/ none / keywords / karaoke / emoji; Режим выделения
platformstringv1PlacementMode=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 из справочника платформ безопасных зон
safeZonePresetstringv1PlacementMode=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
positionXnumberv1PlacementMode=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
positionYnumberv1PlacementMode=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
fontSizenumberv1TextStyleMode=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
fontstringv1TextStyleMode=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
colorstringv1TextStyleMode=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
uppercasebooleanv1TextStyleMode=custom; Верхний регистр
displayWordsnumberv1TextStyleMode=custom; минимум 1; максимум 6
maxLinesnumberv1TextStyleMode=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
maxCharsPerLinenumberv1TextStyleMode=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
gapSplitSecnumberv1TextStyleMode=custom; минимум 0.15; максимум 2
lingerMsnumberv1TextStyleMode=custom; минимум 0; максимум 500
captionEnginestring
presetOverrideModestringv2TemplateId=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; Режим переопределения пресета
outlinenumberv2TemplateId=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
outlineColorstringv2TemplateId=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; Цвет обводки
shadownumberv2TemplateId=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
renderModestringv2TemplateId=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; Режим рендеринга
animationIntensitystringv2TemplateId=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; Интенсивность анимации
highlightColorstringv2TemplateId=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; Цвет выделения
revealBaselinestringv2TemplateId=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; Базовая линия появления
animationStylestringv2TemplateId=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 символов
emojiAccentModestringv2TemplateId=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 символов
activeColorstringv2TemplateId=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; Цвет активного элемента
activeBoxColorstringv2TemplateId=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; Цвет фона активного блока
activeBoxPaddingnumberv2TemplateId=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
qualityModestringstandard / pro; Режим качества
emphasisModestringsemantic / manual / karaoke / none; Режим выделения
emphasisWordsarrayv2EmphasisMode=manual; не более 50 элементов; не более 40 символов
emphasisWords[]stringобязательно при v2EmphasisMode=manual; Слова для выделения
diagnosticsLevelstringbasic / full; Уровень диагностики
visualQaModestringoff / contact_sheet; Режим визуальной проверки качества
glossaryarrayне более 50 элементов
glossary[].fromstringобязательно (v2); Исходный термин
glossary[].tostringобязательно (v2); Термин замены
brandGlossaryarrayне более 50 элементов
brandGlossary[].fromstringобязательно (v2); Исходный термин
brandGlossary[].tostringобязательно (v2); Термин замены
taskIdstringобязательно (get_task); Параметр пути: полученный taskId того же партнёра
filebinaryобязательно (upload_source); Файл в multipart/form-data; не более 157286400 байт

Опции Make и преобразование в REST

Это справочник выбора в Make; имена интерфейса не всегда совпадают с REST. Поля v1*/v2*, text* и sample* переводятся как описано выше. Вложенные условия относятся к интерфейсу Make.

Поле формыКогдаЗначения
languageauto / ru / en
captionEnginev1 / v2
v1TemplateIdcaptionEngine=v1clean-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
v1HighlightModecaptionEngine=v1/ none / keywords / karaoke / emoji
v1PlacementModecaptionEngine=v1tiktok_bottom_safe / bottom_center / center / top / exact_preset / exact_coordinates
v1PlatformcaptionEngine=v1; v1PlacementMode=exact_presetrpc://getSafeZonePlatforms
v1SafeZonePresetcaptionEngine=v1; v1PlacementMode=exact_presetrpc://getSafeZonePlacements
v1TextStyleModecaptionEngine=v1template / custom
v1FontcaptionEngine=v1; v1TextStyleMode=customrpc://getFonts
v2TemplateIdcaptionEngine=v2shorts_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
v2QualityModecaptionEngine=v2standard / pro
v2EmphasisModecaptionEngine=v2semantic / manual / karaoke / none
v2DiagnosticsLevelcaptionEngine=v2basic / full
v2VisualQaModecaptionEngine=v2off / contact_sheet
subtitleSourceModeauto / manual
transcriptionEnginesubtitleSourceMode=autowhisper / xai_grok_transcribe / elevenlabs_scribe / local_whisper
translationModenone / translate
translateTotranslationMode=translateen / ru / de / fr / es / it / pt / zh / ja / ko / ar
effectsModenone / custom
videoEffects[].effectIdeffectsMode=customrpc://getVideoEffects
videoEffects[].scopeeffectsMode=customclip / range
outputModeburn / srt / vtt / ass / burn+srt / burn+vtt
c2paSigningModeoff / franklab / user_profile
contentOriginc2paSigningMode=franklabnot_declared / human_edited / ai_assisted / ai_generated
c2paSignerProfileIdc2paSigningMode=user_profilerpc://getC2paSignerProfiles
contentOriginc2paSigningMode=user_profilenot_declared / human_edited / ai_assisted / ai_generated / human_created / camera_captured

Общие настройки пресетов v2 приведены один раз ниже. «Все 24» означает все значения v2TemplateId из таблицы выше; дополнительные условия в строке также обязательны. v2RevealBaseline доступен для 22 пресетов: всех перечисленных, кроме shorts_pro и creator_hook_v2.

Поле формыПресеты v2TemplateIdКогдаЗначения
v2PresetControlModeВсе 24captionEngine=v2preset / manual
v2FontВсе 24captionEngine=v2; v2PresetControlMode=manualrpc://getFonts
v2PlacementModeВсе 24captionEngine=v2; v2PresetControlMode=manual/ tiktok_bottom_safe / exact_preset / exact_coordinates
v2PlatformВсе 24captionEngine=v2; v2PresetControlMode=manual; v2PlacementMode=exact_presetrpc://getSafeZonePlatforms
v2SafeZonePresetВсе 24captionEngine=v2; v2PresetControlMode=manual; v2PlacementMode=exact_presetrpc://getSafeZonePlacements
v2RenderModeВсе 24captionEngine=v2; v2PresetControlMode=manual/ static / phrase_pop / word_pop / active_word / word_reveal / active_box
v2AnimationIntensityВсе 24captionEngine=v2; v2PresetControlMode=manuallow / medium / high
v2RevealBaselineВсе, кроме shorts_pro, creator_hook_v2captionEngine=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 вместе с маршрутом опроса. Для заблокированных функций сначала требуется отдельная проверка или исправление контракта.

/docs/utilities-api.md
Не нашли ответ?Связаться с поддержкой