curl -X POST \
https://studio.dubformer.ai/api/v1/projects/proj_5f83a14b2ec1b/videos/create \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"name": "New Marketing Video",
"workflowType": "dubbing",
"sourceArtifactId": "artifact_1234567890",
"sourceLanguage": "en",
"targetLanguages": ["es-ES", "fr-FR"],
"pipelineOptions": {
"shouldAutomateTranscription": true,
"shouldAutomateTranslation": true,
"shouldAutomateVoiceSelection": false
},
"remark": "Optional comment",
"stringVariables": [
{ "key": "storyTitleId", "value": "12345" },
{ "key": "storyDeeplink", "value": "https://pyramid.dalet.euronews.tech?titleId=12345&kanbanViewId=7KV6cv" }
]
}'
curl -X POST \
https://studio.dubformer.ai/api/v1/projects/proj_5f83a14b2ec1b/videos/create \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"name": "News Segment",
"workflowType": "dubbing",
"sourceArtifactId": "artifact_1234567890",
"sourceLanguage": "en",
"targetLanguages": ["es-ES", "fr-FR"],
"pipelineOptions": {
"shouldAutomateTranscription": true,
"shouldAutomateTranslation": true,
"shouldAutomateVoiceSelection": true,
"voiceSelectionMode": "label",
"voiceSelectionVoicesLabel": "News"
}
}'
curl -X POST \
https://studio.dubformer.ai/api/v1/projects/proj_5f83a14b2ec1b/videos/create \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"name": "Video with Pivot Translation",
"workflowType": "dubbing",
"sourceArtifactId": "artifact_1234567890",
"sourceLanguage": "ru",
"targetLanguages": ["en-US", "es-ES", "fr-FR"],
"pivotLanguage": "en-US",
"pipelineOptions": {
"shouldAutomateTranscription": true,
"shouldAutomateTranslation": true,
"shouldAutomateVoiceSelection": true
}
}'
curl -X POST \
https://studio.dubformer.ai/api/v1/projects/proj_5f83a14b2ec1b/videos/create \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"name": "Video with Ready Scripts",
"workflowType": "dubbing",
"sourceArtifactId": "artifact_1234567890",
"sourceLanguage": "en",
"targetLanguages": ["es-ES", "fr-FR"],
"sourceScript": {
"artifactId": "artifact_source_vtt"
},
"targetScripts": {
"es-ES": { "artifactId": "artifact_es_vtt" },
"fr-FR": {
"artifactId": "artifact_fr_xlsx",
"columns": { "text": "Line", "startTime": "In", "endTime": "Out", "speakerName": "Character" },
"frameRate": 25
}
}
}'
curl -X POST \
https://studio.dubformer.ai/api/v1/projects/proj_5f83a14b2ec1b/videos/create \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"name": "Autumn promo — DE",
"workflowType": "tts",
"sourceLanguage": "de-DE",
"targetLanguages": ["de-DE"],
"sourceScript": {
"artifactId": "artifact_script_xlsx",
"columns": {
"text": "Line",
"speakerName": "Character",
"outputFileName": "File name",
"inputFileName": "Reference",
"speechPrompt": "Direction"
}
},
"referenceArchiveArtifactId": "artifact_references_zip",
"pipelineOptions": {
"shouldAutomateVoiceSelection": true,
"voiceSelectionMode": "cloning"
}
}'
curl -X POST \
https://studio.dubformer.ai/api/v1/projects/proj_5f83a14b2ec1b/videos/create \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"name": "Video with Subtitles",
"workflowType": "subtitling",
"sourceArtifactId": "artifact_1234567890",
"sourceLanguage": "en",
"targetLanguages": ["es-ES", "fr-FR"],
"subtitlingParams": {
"es-ES": {
"maxLinesPerSubtitle": 2,
"maxCharsPerLine": 35,
"maxCharsPerSecond": 18,
"minDurationMs": 1000,
"maxDurationMs": 6000
},
"fr-FR": {
"maxLinesPerSubtitle": 2,
"maxCharsPerLine": 30,
"maxCharsPerSecond": 20,
"minDurationMs": 1000,
"maxDurationMs": 6000
}
}
}'
curl -X POST \
https://studio.dubformer.ai/api/v1/projects/proj_5f83a14b2ec1b/videos/create \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"name": "Video with Custom Mixing",
"workflowType": "dubbing",
"sourceArtifactId": "artifact_1234567890",
"sourceLanguage": "en",
"targetLanguages": ["es-ES", "fr-FR"],
"processingOptions": {
"exportTtsAaf": true,
"targetLoudness": -23,
"exportWavCodec": "pcm_s24le",
"exportWavRate": 48000,
"voiceoverMuffleDb": 9
}
}'
import axios from 'axios';
const response = await axios.post(
'https://studio.dubformer.ai/api/v1/projects/proj_5f83a14b2ec1b/videos/create',
{
name: 'New Marketing Video',
workflowType: 'dubbing',
sourceArtifactId: 'artifact_1234567890',
sourceLanguage: 'en',
targetLanguages: ['es-ES', 'fr-FR'],
pipelineOptions: {
shouldAutomateTranscription: true,
shouldAutomateTranslation: true,
shouldAutomateVoiceSelection: false
},
remark: 'Optional comment',
stringVariables: [
{ key: "storyTitleId", value: "12345" },
{ key: "storyDeeplink", value: "https://pyramid.dalet.euronews.tech?titleId=12345&kanbanViewId=7KV6cv" }
]
},
{
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
}
}
);
console.log(response.data);
import axios from 'axios';
const response = await axios.post(
'https://studio.dubformer.ai/api/v1/projects/proj_5f83a14b2ec1b/videos/create',
{
name: 'Video with Subtitles',
workflowType: 'subtitling',
sourceArtifactId: 'artifact_1234567890',
sourceLanguage: 'en',
targetLanguages: ['es-ES', 'fr-FR'],
subtitlingParams: {
'es-ES': {
maxLinesPerSubtitle: 2,
maxCharsPerLine: 35,
maxCharsPerSecond: 18,
minDurationMs: 1000,
maxDurationMs: 6000
},
'fr-FR': {
maxLinesPerSubtitle: 2,
maxCharsPerLine: 30,
maxCharsPerSecond: 20,
minDurationMs: 1000,
maxDurationMs: 6000
}
}
},
{
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
}
}
);
console.log(response.data);
{
"id": "vid_7a92c36d4fe3c",
"videoUrl": "https://studio.dubformer.ai/api/v1/projects/proj_5f83a14b2ec1b/videos/vid_7a92c36d4fe3c",
"name": "New Marketing Video",
"status": "new",
"workflowType": "dubbing",
"srcLang": "en",
"dstLangs": ["es-ES", "fr-FR"],
"pivotLanguage": null,
"videoDuration": 123.45,
"remark": "Optional comment",
"stringVariables": [
{ "key": "storyTitleId", "value": "12345" },
{ "key": "storyDeeplink", "value": "https://pyramid.dalet.euronews.tech?titleId=12345&kanbanViewId=7KV6cv" }
],
"createdAt": "2024-06-30T12:00:00.000Z",
"updatedAt": "2024-06-30T12:00:00.000Z"
}
Project Videos
Create Project Video
Add a new video to an existing project
POST
/
api
/
v1
/
projects
/
{projectId}
/
videos
/
create
curl -X POST \
https://studio.dubformer.ai/api/v1/projects/proj_5f83a14b2ec1b/videos/create \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"name": "New Marketing Video",
"workflowType": "dubbing",
"sourceArtifactId": "artifact_1234567890",
"sourceLanguage": "en",
"targetLanguages": ["es-ES", "fr-FR"],
"pipelineOptions": {
"shouldAutomateTranscription": true,
"shouldAutomateTranslation": true,
"shouldAutomateVoiceSelection": false
},
"remark": "Optional comment",
"stringVariables": [
{ "key": "storyTitleId", "value": "12345" },
{ "key": "storyDeeplink", "value": "https://pyramid.dalet.euronews.tech?titleId=12345&kanbanViewId=7KV6cv" }
]
}'
curl -X POST \
https://studio.dubformer.ai/api/v1/projects/proj_5f83a14b2ec1b/videos/create \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"name": "News Segment",
"workflowType": "dubbing",
"sourceArtifactId": "artifact_1234567890",
"sourceLanguage": "en",
"targetLanguages": ["es-ES", "fr-FR"],
"pipelineOptions": {
"shouldAutomateTranscription": true,
"shouldAutomateTranslation": true,
"shouldAutomateVoiceSelection": true,
"voiceSelectionMode": "label",
"voiceSelectionVoicesLabel": "News"
}
}'
curl -X POST \
https://studio.dubformer.ai/api/v1/projects/proj_5f83a14b2ec1b/videos/create \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"name": "Video with Pivot Translation",
"workflowType": "dubbing",
"sourceArtifactId": "artifact_1234567890",
"sourceLanguage": "ru",
"targetLanguages": ["en-US", "es-ES", "fr-FR"],
"pivotLanguage": "en-US",
"pipelineOptions": {
"shouldAutomateTranscription": true,
"shouldAutomateTranslation": true,
"shouldAutomateVoiceSelection": true
}
}'
curl -X POST \
https://studio.dubformer.ai/api/v1/projects/proj_5f83a14b2ec1b/videos/create \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"name": "Video with Ready Scripts",
"workflowType": "dubbing",
"sourceArtifactId": "artifact_1234567890",
"sourceLanguage": "en",
"targetLanguages": ["es-ES", "fr-FR"],
"sourceScript": {
"artifactId": "artifact_source_vtt"
},
"targetScripts": {
"es-ES": { "artifactId": "artifact_es_vtt" },
"fr-FR": {
"artifactId": "artifact_fr_xlsx",
"columns": { "text": "Line", "startTime": "In", "endTime": "Out", "speakerName": "Character" },
"frameRate": 25
}
}
}'
curl -X POST \
https://studio.dubformer.ai/api/v1/projects/proj_5f83a14b2ec1b/videos/create \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"name": "Autumn promo — DE",
"workflowType": "tts",
"sourceLanguage": "de-DE",
"targetLanguages": ["de-DE"],
"sourceScript": {
"artifactId": "artifact_script_xlsx",
"columns": {
"text": "Line",
"speakerName": "Character",
"outputFileName": "File name",
"inputFileName": "Reference",
"speechPrompt": "Direction"
}
},
"referenceArchiveArtifactId": "artifact_references_zip",
"pipelineOptions": {
"shouldAutomateVoiceSelection": true,
"voiceSelectionMode": "cloning"
}
}'
curl -X POST \
https://studio.dubformer.ai/api/v1/projects/proj_5f83a14b2ec1b/videos/create \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"name": "Video with Subtitles",
"workflowType": "subtitling",
"sourceArtifactId": "artifact_1234567890",
"sourceLanguage": "en",
"targetLanguages": ["es-ES", "fr-FR"],
"subtitlingParams": {
"es-ES": {
"maxLinesPerSubtitle": 2,
"maxCharsPerLine": 35,
"maxCharsPerSecond": 18,
"minDurationMs": 1000,
"maxDurationMs": 6000
},
"fr-FR": {
"maxLinesPerSubtitle": 2,
"maxCharsPerLine": 30,
"maxCharsPerSecond": 20,
"minDurationMs": 1000,
"maxDurationMs": 6000
}
}
}'
curl -X POST \
https://studio.dubformer.ai/api/v1/projects/proj_5f83a14b2ec1b/videos/create \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"name": "Video with Custom Mixing",
"workflowType": "dubbing",
"sourceArtifactId": "artifact_1234567890",
"sourceLanguage": "en",
"targetLanguages": ["es-ES", "fr-FR"],
"processingOptions": {
"exportTtsAaf": true,
"targetLoudness": -23,
"exportWavCodec": "pcm_s24le",
"exportWavRate": 48000,
"voiceoverMuffleDb": 9
}
}'
import axios from 'axios';
const response = await axios.post(
'https://studio.dubformer.ai/api/v1/projects/proj_5f83a14b2ec1b/videos/create',
{
name: 'New Marketing Video',
workflowType: 'dubbing',
sourceArtifactId: 'artifact_1234567890',
sourceLanguage: 'en',
targetLanguages: ['es-ES', 'fr-FR'],
pipelineOptions: {
shouldAutomateTranscription: true,
shouldAutomateTranslation: true,
shouldAutomateVoiceSelection: false
},
remark: 'Optional comment',
stringVariables: [
{ key: "storyTitleId", value: "12345" },
{ key: "storyDeeplink", value: "https://pyramid.dalet.euronews.tech?titleId=12345&kanbanViewId=7KV6cv" }
]
},
{
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
}
}
);
console.log(response.data);
import axios from 'axios';
const response = await axios.post(
'https://studio.dubformer.ai/api/v1/projects/proj_5f83a14b2ec1b/videos/create',
{
name: 'Video with Subtitles',
workflowType: 'subtitling',
sourceArtifactId: 'artifact_1234567890',
sourceLanguage: 'en',
targetLanguages: ['es-ES', 'fr-FR'],
subtitlingParams: {
'es-ES': {
maxLinesPerSubtitle: 2,
maxCharsPerLine: 35,
maxCharsPerSecond: 18,
minDurationMs: 1000,
maxDurationMs: 6000
},
'fr-FR': {
maxLinesPerSubtitle: 2,
maxCharsPerLine: 30,
maxCharsPerSecond: 20,
minDurationMs: 1000,
maxDurationMs: 6000
}
}
},
{
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
}
}
);
console.log(response.data);
{
"id": "vid_7a92c36d4fe3c",
"videoUrl": "https://studio.dubformer.ai/api/v1/projects/proj_5f83a14b2ec1b/videos/vid_7a92c36d4fe3c",
"name": "New Marketing Video",
"status": "new",
"workflowType": "dubbing",
"srcLang": "en",
"dstLangs": ["es-ES", "fr-FR"],
"pivotLanguage": null,
"videoDuration": 123.45,
"remark": "Optional comment",
"stringVariables": [
{ "key": "storyTitleId", "value": "12345" },
{ "key": "storyDeeplink", "value": "https://pyramid.dalet.euronews.tech?titleId=12345&kanbanViewId=7KV6cv" }
],
"createdAt": "2024-06-30T12:00:00.000Z",
"updatedAt": "2024-06-30T12:00:00.000Z"
}
This endpoint allows you to add a new video to an existing project. The video will be uploaded to the pipeline for processing.
Credits are charged by the number of characters in the script at creation. Voices are selected and the script is rendered automatically; poll Get Project Video Status until the
Path Parameters
string
required
The unique identifier of the project.
Request Body
string
required
Name of the video.
string
required
Type of video processing (e.g.,
dubbing, voiceover, audio_description, transcription, translation, subtitling, tts).tts is the Voice lines workflow: there is no source video — a script is voiced line by line into separate audio files. See Voice lines below for what changes in the request.string
Artifact ID of the source video (must be uploaded beforehand). Required for every workflow except
tts, where it must be omitted — the script is the source.string
required
Source language code in ISO 639-1 format (e.g.,
en, ru, de).You can also pass multi to enable multi-language source mode, where the source video contains speech in multiple languages. In this mode, the system will automatically detect the language of each segment.The
multi option must be enabled for your organization by an administrator. Contact your account manager to activate multi-language source support.array
Optional list of source language codes in ISO 639-1 format (e.g.,
["en", "ru", "de"]) to restrict automatic language detection to a known subset.Only allowed when sourceLanguage is multi. Omit the field to detect any supported language. When provided, it must be a non-empty array.array
required
Array of target language codes in BCP 47 format — a combination of an ISO 639-1 language code and an ISO 3166-1 Alpha-2 region code (e.g.,
es-ES, fr-FR, en-US).object
Attach a ready-made source script (the original-language transcript) instead of having it transcribed. Optional.
artifactId(string, required): Artifact ID of the uploaded script file. Must be an artifact of typescript.- Optional import settings inline alongside
artifactId.
object
Attach ready-made target scripts (finished translations) per language. Optional.An object where each key is a target language code that must be present in
targetLanguages, and each value has the same shape as sourceScript.Accepted for dubbing, voiceover, audio_description and translation. See Attaching Scripts for details.string
Artifact ID of the background audio (optional).
string
Artifact ID of the international mix audio (optional).
string
Artifact ID of the vocals HITL audio (optional).
string
Additional remarks about the video (optional).
array
Optional array of key-value pairs for storing video metadata. Useful for storing external system references like backlinks, identifiers, or other custom metadata.Each item should be an object with
key and value properties (both strings).Example:[
{ "key": "storyTitleId", "value": "12345" },
{ "key": "storyDeeplink", "value": "https://..." }
]
string
Optional pivot (intermediate) language code in BCP 47 format (e.g.,
en-US).When set, translation goes through the pivot language first (e.g., ru → en-US → es-ES) instead of translating directly from source to each target language. This can improve translation quality for rare language pairs.Supported for dubbing, voiceover, translation, and subtitling workflow types. Not available for transcription and audio_description.When pivot language is used, original timings are automatically preserved (align step is skipped).object
Pipeline configuration options (all fields optional):
shouldAutomateTranscription(boolean): Automatically transcribe the source videoshouldAutomateTranslation(boolean): Automatically translate the transcriptionshouldAutomateVoiceSelection(boolean): Automatically select voices for speakersvoiceSelectionMode(string): How voices are selected during automation. RequiresshouldAutomateVoiceSelection: true. One of:default— use library voices (default)cloning— use voice cloning (ElevenLabs). All target languages must support cloningemotion_transfer— use emotion transfer. Must be enabled for your organization, and all target languages must support itlabel— use only voices with a specific label. RequiresvoiceSelectionVoicesLabel
voiceSelectionVoicesLabel(string): Voice label name to filter by. Required whenvoiceSelectionModeislabel. The label must exist and have matching voices for all target languages
string
Voice lines only. Artifact ID of a
references archive — a zip of recordings (.wav, .mp3, .m4a, .aac, .ogg, .flac, or video files) matched to script lines by their inputFileName column. Required for voiceSelectionMode cloning and emotion_transfer.object
Subtitling parameters per destination language. Used only when
workflowType is subtitling.This is an object where keys are language codes (e.g., ‘en-US’, ‘es-ES’) and values are objects with the following optional fields:maxLinesPerSubtitle(number): Maximum number of lines per subtitle (default: 2, range: 1-5)maxCharsPerLine(number): Maximum number of characters per line (CPL) (default: 30, range: 1-1000)maxCharsPerSecond(number): Maximum reading speed in characters per second (CPS) (default: 20, range: 1-100)minDurationMs(number): Minimum subtitle duration in milliseconds (default: 1000, range: 100-60000)maxDurationMs(number): Maximum subtitle duration in milliseconds (default: 6000, range: 100-60000)
{
"en-US": {
"maxLinesPerSubtitle": 2,
"maxCharsPerLine": 30,
"maxCharsPerSecond": 20,
"minDurationMs": 1000,
"maxDurationMs": 6000
},
"es-ES": {
"maxLinesPerSubtitle": 2,
"maxCharsPerLine": 35,
"maxCharsPerSecond": 18,
"minDurationMs": 1000,
"maxDurationMs": 6000
}
}
object
Extra translation guidance passed to the translation engine. Optional.
common(string): Guidance applied to all target languages.byLang(object): Per-language guidance. Keys are target language codes (each must be present intargetLanguages), values are strings. The backend mergescommonfirst, then the language-specific prompt.
{
"common": "Keep brand names in English and use a friendly tone.",
"byLang": {
"de-DE": "Use the formal register (Sie)."
}
}
object
Advanced audio processing and export options applied when the video is rendered. All fields are optional; omit the field entirely to use the defaults.
exportTtsAaf(boolean): Export the synthesized speech in AAF format with separate audio tracks for each speaker (default:false).channelPerSpeaker(boolean, deprecated): Place each speaker in a separate audio channel instead of mixing them into one (default:false). UseexportTtsAafinstead.targetLoudness(number): Final loudness (LUFS) the output is normalized to (default:-23, per the EBU R128 standard).ttsLoudness(number): Loudness (LUFS) of the synthesized speech handed to mixing (default:-23).mixerCrossfadeMs(number): Crossfade duration in milliseconds at speech boundaries — controls how smooth or sharp audio transitions are (default:300).exportWavCodec(string): Audio codec for WAV export. One ofpcm_s16le,pcm_s24le,pcm_s32le,pcm_f32le,pcm_f64le(default:pcm_s16le).exportWavRate(number): Sample rate in Hz for exported WAV files, e.g.44100,48000(default:44100).voiceoverMuffleDb(number): How much (dB) to lower the original audio where synthesis is overlaid in voiceover mode. Higher values make the original quieter (default:9).backgroundMuffleDb(number): How much (dB) to lower the background track in voice-replacement mode. Applied only when a background track is provided (default:7).voiceoverFixVocalsVolume(boolean): Lower the on-screen speech across the whole track (byvoiceoverMuffleDb), not only where synthesis is applied (default:false).voiceoverFixBackgroundVolume(boolean): Keep the background at full volume and lower only the original speech byvoiceoverMuffleDbwhen overlaying synthesis (default:true).transferVoiceLoudness(boolean): Transfer the loudness of the separated original speech onto the synthesized speech, segment by segment (default:false).useBackgroundNorm(boolean): Normalize the loudness of the background track (default:false).
{
"exportTtsAaf": true,
"targetLoudness": -23,
"exportWavCodec": "pcm_s24le",
"exportWavRate": 48000
}
If you automate transcription, you won’t be able to edit the generated transcription in the future. The transcription phase will be skipped, and the result of the AI’s work will be used.
curl -X POST \
https://studio.dubformer.ai/api/v1/projects/proj_5f83a14b2ec1b/videos/create \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"name": "New Marketing Video",
"workflowType": "dubbing",
"sourceArtifactId": "artifact_1234567890",
"sourceLanguage": "en",
"targetLanguages": ["es-ES", "fr-FR"],
"pipelineOptions": {
"shouldAutomateTranscription": true,
"shouldAutomateTranslation": true,
"shouldAutomateVoiceSelection": false
},
"remark": "Optional comment",
"stringVariables": [
{ "key": "storyTitleId", "value": "12345" },
{ "key": "storyDeeplink", "value": "https://pyramid.dalet.euronews.tech?titleId=12345&kanbanViewId=7KV6cv" }
]
}'
curl -X POST \
https://studio.dubformer.ai/api/v1/projects/proj_5f83a14b2ec1b/videos/create \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"name": "News Segment",
"workflowType": "dubbing",
"sourceArtifactId": "artifact_1234567890",
"sourceLanguage": "en",
"targetLanguages": ["es-ES", "fr-FR"],
"pipelineOptions": {
"shouldAutomateTranscription": true,
"shouldAutomateTranslation": true,
"shouldAutomateVoiceSelection": true,
"voiceSelectionMode": "label",
"voiceSelectionVoicesLabel": "News"
}
}'
curl -X POST \
https://studio.dubformer.ai/api/v1/projects/proj_5f83a14b2ec1b/videos/create \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"name": "Video with Pivot Translation",
"workflowType": "dubbing",
"sourceArtifactId": "artifact_1234567890",
"sourceLanguage": "ru",
"targetLanguages": ["en-US", "es-ES", "fr-FR"],
"pivotLanguage": "en-US",
"pipelineOptions": {
"shouldAutomateTranscription": true,
"shouldAutomateTranslation": true,
"shouldAutomateVoiceSelection": true
}
}'
curl -X POST \
https://studio.dubformer.ai/api/v1/projects/proj_5f83a14b2ec1b/videos/create \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"name": "Video with Ready Scripts",
"workflowType": "dubbing",
"sourceArtifactId": "artifact_1234567890",
"sourceLanguage": "en",
"targetLanguages": ["es-ES", "fr-FR"],
"sourceScript": {
"artifactId": "artifact_source_vtt"
},
"targetScripts": {
"es-ES": { "artifactId": "artifact_es_vtt" },
"fr-FR": {
"artifactId": "artifact_fr_xlsx",
"columns": { "text": "Line", "startTime": "In", "endTime": "Out", "speakerName": "Character" },
"frameRate": 25
}
}
}'
curl -X POST \
https://studio.dubformer.ai/api/v1/projects/proj_5f83a14b2ec1b/videos/create \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"name": "Autumn promo — DE",
"workflowType": "tts",
"sourceLanguage": "de-DE",
"targetLanguages": ["de-DE"],
"sourceScript": {
"artifactId": "artifact_script_xlsx",
"columns": {
"text": "Line",
"speakerName": "Character",
"outputFileName": "File name",
"inputFileName": "Reference",
"speechPrompt": "Direction"
}
},
"referenceArchiveArtifactId": "artifact_references_zip",
"pipelineOptions": {
"shouldAutomateVoiceSelection": true,
"voiceSelectionMode": "cloning"
}
}'
curl -X POST \
https://studio.dubformer.ai/api/v1/projects/proj_5f83a14b2ec1b/videos/create \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"name": "Video with Subtitles",
"workflowType": "subtitling",
"sourceArtifactId": "artifact_1234567890",
"sourceLanguage": "en",
"targetLanguages": ["es-ES", "fr-FR"],
"subtitlingParams": {
"es-ES": {
"maxLinesPerSubtitle": 2,
"maxCharsPerLine": 35,
"maxCharsPerSecond": 18,
"minDurationMs": 1000,
"maxDurationMs": 6000
},
"fr-FR": {
"maxLinesPerSubtitle": 2,
"maxCharsPerLine": 30,
"maxCharsPerSecond": 20,
"minDurationMs": 1000,
"maxDurationMs": 6000
}
}
}'
curl -X POST \
https://studio.dubformer.ai/api/v1/projects/proj_5f83a14b2ec1b/videos/create \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"name": "Video with Custom Mixing",
"workflowType": "dubbing",
"sourceArtifactId": "artifact_1234567890",
"sourceLanguage": "en",
"targetLanguages": ["es-ES", "fr-FR"],
"processingOptions": {
"exportTtsAaf": true,
"targetLoudness": -23,
"exportWavCodec": "pcm_s24le",
"exportWavRate": 48000,
"voiceoverMuffleDb": 9
}
}'
import axios from 'axios';
const response = await axios.post(
'https://studio.dubformer.ai/api/v1/projects/proj_5f83a14b2ec1b/videos/create',
{
name: 'New Marketing Video',
workflowType: 'dubbing',
sourceArtifactId: 'artifact_1234567890',
sourceLanguage: 'en',
targetLanguages: ['es-ES', 'fr-FR'],
pipelineOptions: {
shouldAutomateTranscription: true,
shouldAutomateTranslation: true,
shouldAutomateVoiceSelection: false
},
remark: 'Optional comment',
stringVariables: [
{ key: "storyTitleId", value: "12345" },
{ key: "storyDeeplink", value: "https://pyramid.dalet.euronews.tech?titleId=12345&kanbanViewId=7KV6cv" }
]
},
{
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
}
}
);
console.log(response.data);
import axios from 'axios';
const response = await axios.post(
'https://studio.dubformer.ai/api/v1/projects/proj_5f83a14b2ec1b/videos/create',
{
name: 'Video with Subtitles',
workflowType: 'subtitling',
sourceArtifactId: 'artifact_1234567890',
sourceLanguage: 'en',
targetLanguages: ['es-ES', 'fr-FR'],
subtitlingParams: {
'es-ES': {
maxLinesPerSubtitle: 2,
maxCharsPerLine: 35,
maxCharsPerSecond: 18,
minDurationMs: 1000,
maxDurationMs: 6000
},
'fr-FR': {
maxLinesPerSubtitle: 2,
maxCharsPerLine: 30,
maxCharsPerSecond: 20,
minDurationMs: 1000,
maxDurationMs: 6000
}
}
},
{
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
}
}
);
console.log(response.data);
Response
string
Unique identifier of the created video.
string
URL to the created video resource.
string
Name of the video.
string
Status of the video (e.g., ‘new’).
string
Type of the video processing (e.g., ‘dubbing’).
string
Source language code.
array
Array of target language codes.
string | null
Pivot language code, if set.
number
Duration of the video in seconds (if available).
string
Additional remarks about the video (if any).
array | null
Array of key-value pairs containing video metadata, if provided.
object | null
The translation guidance stored for the video (
common and/or byLang), or null if not set.string
ISO timestamp of creation.
string
ISO timestamp of last update.
{
"id": "vid_7a92c36d4fe3c",
"videoUrl": "https://studio.dubformer.ai/api/v1/projects/proj_5f83a14b2ec1b/videos/vid_7a92c36d4fe3c",
"name": "New Marketing Video",
"status": "new",
"workflowType": "dubbing",
"srcLang": "en",
"dstLangs": ["es-ES", "fr-FR"],
"pivotLanguage": null,
"videoDuration": 123.45,
"remark": "Optional comment",
"stringVariables": [
{ "key": "storyTitleId", "value": "12345" },
{ "key": "storyDeeplink", "value": "https://pyramid.dalet.euronews.tech?titleId=12345&kanbanViewId=7KV6cv" }
],
"createdAt": "2024-06-30T12:00:00.000Z",
"updatedAt": "2024-06-30T12:00:00.000Z"
}
{
"error": "Bad Request"
}
Voice lines
Atts video takes a script instead of a video and delivers one audio file per line (or per outputFileName group), packed as tts.zip. Compared to the other workflows:
| Field | Voice lines |
|---|---|
sourceArtifactId | Must be omitted |
sourceScript | Required. The script to voice — see Attaching Scripts for the Voice lines columns (outputFileName, inputFileName, speechPrompt, …). Only the fromFile timings and speakers modes are accepted; shiftMs, frameRate and constantSpeakerId are not |
sourceLanguage / targetLanguages | The script’s language, given as both: targetLanguages must contain exactly one language equal to sourceLanguage |
referenceArchiveArtifactId | Optional recordings for the reference-based voice modes |
pipelineOptions.voiceSelectionMode | default, label, cloning, emotion_transfer; cloning and emotion_transfer need referenceArchiveArtifactId |
targetScripts, pivotLanguage, subtitlingParams, translationPrompt, sourceLanguageWhitelist, shouldAutomateTranscription, shouldAutomateTranslation, the background / mix / vocals artifacts | Rejected with 400 |
rendering phase rests on editor, then fetch tts.zip from List Translation Export Files for the video’s language.
The Voice lines workflow must be enabled for your organization. Contact your account manager to activate it.