openapi: 3.2.0
info:
version: ''
title: Translate and Lip Sync Dub API
description: This RESTful API offers dubbing and lip sync resources for enterprise use. With this API an audio or video input can be dubbed to new language(s).
termsOfService: https://www.adobe.com/content/dam/cc/en/legal/terms/enterprise/pdfs/PSLT-AdobeCreativeAPI-WW-2024v2.pdf
servers:
- url: https://audio-video-api.adobe.io
description: Production environment
- url: https://audio-video-api-stage.adobe.io
description: Staging environment
security:
- AccessToken: []
X-Api-Key: []
tags:
- name: Dub
paths:
/v1/dub:
post:
summary: Dub audio or video
description: Generate dubbed video or audio.
A composited lip sync can be added for video dubbing.
operationId: dub
requestBody:
description: The dub request body is used to specify either an audio dubbing or a video dubbing.
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/DubRequest'
examples:
DubRequestUsingAutoTranslatedTranscripts:
$ref: '#/components/examples/DubRequestUsingAutoTranslatedTranscripts'
DubRequestUsingAudioAutoTranslatedTranscripts:
$ref: '#/components/examples/DubRequestUsingAudioAutoTranslatedTranscripts'
DubRequestUsingEditedSourceTranscript:
$ref: '#/components/examples/DubRequestUsingEditedSourceTranscript'
DubRequestUsingAudioEditedSourceTranscript:
$ref: '#/components/examples/DubRequestUsingAudioEditedSourceTranscript'
DubRequestUsingEditedTranslatedTranscript:
$ref: '#/components/examples/DubRequestUsingEditedTranslatedTranscript'
DubRequestUsingAudioEditedTranslatedTranscript:
$ref: '#/components/examples/DubRequestUsingAudioEditedTranslatedTranscript'
responses:
'202':
description: Accepted
content:
application/json:
schema:
$ref: '#/components/schemas/JobStatusLinkResponse'
examples:
DubResponse:
$ref: '#/components/examples/JobStatusLinkResponse'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
examples:
ErrorBodyBadRequest:
$ref: '#/components/examples/ErrorBodyBadRequest'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
examples:
ErrorBodyUnauthorized:
$ref: '#/components/examples/ErrorBodyUnauthorized'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
examples:
ErrorBodyForbidden:
$ref: '#/components/examples/ErrorBodyForbidden'
'404':
description: Resource Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
examples:
ErrorBodyResourceNotFound:
$ref: '#/components/examples/ErrorBodyResourceNotFound'
'405':
description: Method Not Allowed
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
examples:
ErrorBodyMethodNotAllowed:
$ref: '#/components/examples/ErrorBodyMethodNotAllowed'
'422':
description: Unprocessable Entity
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
examples:
ErrorBodyMethodNotAllowed:
$ref: '#/components/examples/ErrorBodyMethodNotAllowed'
ValidationErrorVideoSourceBlank:
$ref: '#/components/examples/ValidationErrorVideoSourceBlank'
ValidationErrorAudioSourceBlank:
$ref: '#/components/examples/ValidationErrorAudioSourceBlank'
ValidationErrorInputSourceBlank:
$ref: '#/components/examples/ValidationErrorInputSourceBlank'
ValidationErrorVideoAndAudioSimultaneous:
$ref: '#/components/examples/ValidationErrorVideoAndAudioSimultaneous'
ValidationErrorVideoInputMediaTypeMissing:
$ref: '#/components/examples/ValidationErrorVideoInputMediaTypeMissing'
ValidationErrorAudioInputMediaTypeMissing:
$ref: '#/components/examples/ValidationErrorAudioInputMediaTypeMissing'
ValidationErrorSourceUrlEmpty:
$ref: '#/components/examples/ValidationErrorSourceUrlEmpty'
ValidationErrorInvalidVideoAudioSourceUrl:
$ref: '#/components/examples/ValidationErrorInvalidVideoAudioSourceUrl'
ValidationErrorInvalidTranscriptUrl:
$ref: '#/components/examples/ValidationErrorInvalidTranscriptUrl'
ValidationErrorUnsupportedVideoMediaType:
$ref: '#/components/examples/ValidationErrorUnsupportedVideoMediaType'
ValidationErrorUnsupportedAudioMediaType:
$ref: '#/components/examples/ValidationErrorUnsupportedAudioMediaType'
ValidationErrorUnsupportedTargetLocaleCode:
$ref: '#/components/examples/ValidationErrorUnsupportedTargetLocaleCode'
ValidationErrorMissingTargetLocaleCode:
$ref: '#/components/examples/ValidationErrorMissingTargetLocaleCode'
ValidationErrorLocaleCodeNotRequiredForEditedTranscript:
$ref: '#/components/examples/ValidationErrorLocaleCodeNotRequiredForEditedTranscript'
ValidationErrorEitherTargetLocaleCodesOrTranscriptionRequired:
$ref: '#/components/examples/ValidationErrorEitherTargetLocaleCodesOrTranscriptionRequired'
'429':
description: Too many requests
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
examples:
ErrorBodyTooManyRequests:
$ref: '#/components/examples/ErrorBodyTooManyRequests'
'451':
description: Unauthorized due to legal reasons
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
examples:
ErrorBodyLegalReasons:
$ref: '#/components/examples/ErrorBodyLegalReasons'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorBody'
examples:
ErrorBodyInternalServerError:
$ref: '#/components/examples/ErrorBodyInternalServerError'
tags:
- Dub
components:
examples:
DubRequestUsingAudioEditedTranslatedTranscript:
summary: Dubbing with Pre-Existing Translations (Audio)
value:
audio:
source:
url:
mediaType: audio/mp3
transcripts:
- source:
url:
localeCode: en-US
- source:
url:
localeCode: fr-FR
lipSync: false
ValidationErrorUnsupportedTargetLocaleCode:
summary: Error for unsupported target locale code
value:
error_code: validation_error
message: 'Unsupported target locale code: <>'
ErrorBodyForbidden:
summary: Error Body Forbidden
value:
error_code: '403220'
message: Token not allowed in the current context
DubRequestUsingAutoTranslatedTranscripts:
summary: Automated dubbing (Video)
value:
video:
source:
url:
mediaType: video/mp4
targetLocaleCodes:
- da-DK
- en-IN
- en-GB
- es-AR
- es-419
- fr-CA
- hi-IN
- ja-JP
- ko-KR
- nb-NO
- nl-NL
- pt-BR
- sv-SE
- zh-CN
- en-US
- es-ES
- de-DE
- fr-FR
- it-IT
- pt-PT
lipSync: true
ValidationErrorMissingTargetLocaleCode:
summary: Error for missing target locale code
value:
error_code: validation_error
message: At least one target locale code required
DubRequestUsingAudioAutoTranslatedTranscripts:
summary: Automated dubbing (Audio)
value:
audio:
source:
url:
mediaType: audio/mp3
targetLocaleCodes:
- da-DK
- en-IN
- en-GB
- es-AR
- es-419
- fr-CA
- hi-IN
- ja-JP
- ko-KR
- nb-NO
- nl-NL
- pt-BR
- sv-SE
- zh-CN
- en-US
- es-ES
- de-DE
- fr-FR
- it-IT
- pt-PT
lipSync: false
ErrorBodyLegalReasons:
summary: Unauthorized due to legal reasons
value:
message: Unauthorized due to legal reasons
error_code: unauthorized_legal_reasons
ErrorBodyUnauthorized:
summary: Error Body Unauthorized
value:
error_code: '401013'
message: Oauth token is not valid
ErrorBodyInternalServerError:
summary: Error Body Internal Server Error
value:
error_code: '500001'
message: An internal server error occurred. Please try again later.
ValidationErrorLocaleCodeNotRequiredForEditedTranscript:
summary: Error indicating locale code is not required with edited transcript
value:
error_code: validation_error
message: Locale code not needed when providing an edited transcript
ValidationErrorInvalidTranscriptUrl:
summary: Error for invalid transcript input source URL
value:
error_code: validation_error
message: 'Invalid transcript input source URL: <>'
ValidationErrorUnsupportedVideoMediaType:
summary: Error for unsupported video media type
value:
error_code: validation_error
message: 'Unsupported input video media type: <>'
JobStatusLinkResponse:
summary: Successful Submission
value:
jobId:
statusUrl: https:///v1/status/
DubRequestUsingEditedSourceTranscript:
summary: Dubbing with an edited transcript (Video)
value:
video:
source:
url:
mediaType: video/mp4
targetLocaleCodes:
- da-DK
- en-IN
- en-GB
- es-AR
- es-419
- fr-CA
- hi-IN
- ja-JP
- ko-KR
- nb-NO
- nl-NL
- pt-BR
- sv-SE
- zh-CN
- en-US
- es-ES
- de-DE
- fr-FR
- it-IT
- pt-PT
transcripts:
- source:
url:
lipSync: true
ErrorBodyBadRequest:
summary: Error Body Bad Request
value:
error_code: '400001'
message: Invalid request. Please check the input data.
ValidationErrorAudioInputMediaTypeMissing:
summary: Error for missing audio input media type
value:
error_code: validation_error
message: Audio input media type must be specified
ValidationErrorInvalidVideoAudioSourceUrl:
summary: Error for invalid video/audio input source URL
value:
error_code: validation_error
message: 'Invalid video/audio input source URL: <>'
ValidationErrorVideoAndAudioSimultaneous:
summary: Error for providing both video and audio inputs simultaneously
value:
error_code: validation_error
message: Cannot provide both video and audio input simultaneously
DubRequestUsingEditedTranslatedTranscript:
summary: Dubbing with Pre-Existing Translations (Video)
value:
video:
source:
url:
mediaType: video/mp4
transcripts:
- source:
url:
localeCode: en-US
- source:
url:
localeCode: fr-FR
lipSync: true
ValidationErrorEitherTargetLocaleCodesOrTranscriptionRequired:
summary: Error for missing target locale codes or transcription input
value:
error_code: validation_error
message: Provide either target locale codes or transcription input for dubbing
ValidationErrorInputSourceBlank:
summary: Error for blank input source field
value:
error_code: validation_error
message: Input source field cannot be blank
ErrorBodyTooManyRequests:
summary: Error Body Too Many Requests
value:
message: Too Many Requests
error_code: '429011'
ValidationErrorSourceUrlEmpty:
summary: Error for empty source URL field
value:
error_code: validation_error
message: Source URL field cannot be empty
ErrorBodyMethodNotAllowed:
summary: Error Body Method Not Allowed
value:
error_code: '405001'
message: The requested method is not allowed on this endpoint.
ErrorBodyResourceNotFound:
summary: Error Body Resource Not Found
value:
error_code: unknown_job_id
message: The requested resource 123e4567-e89b-12d3-a456-426614174002 was not found.
ValidationErrorVideoInputMediaTypeMissing:
summary: Error for missing video input media type
value:
error_code: validation_error
message: Video input media type must be specified
ValidationErrorAudioSourceBlank:
summary: Error for blank audio source field
value:
error_code: validation_error
message: Audio source field cannot be blank
ValidationErrorUnsupportedAudioMediaType:
summary: Error for unsupported audio media type
value:
error_code: validation_error
message: 'Unsupported input audio media type: <>'
ValidationErrorVideoSourceBlank:
summary: Error for blank video source field
value:
error_code: validation_error
message: Video source field cannot be blank
DubRequestUsingAudioEditedSourceTranscript:
summary: Dubbing with an edited transcript (Audio)
value:
audio:
source:
url:
mediaType: audio/mp3
targetLocaleCodes:
- da-DK
- en-IN
- en-GB
- es-AR
- es-419
- fr-CA
- hi-IN
- ja-JP
- ko-KR
- nb-NO
- nl-NL
- pt-BR
- sv-SE
- zh-CN
- en-US
- es-ES
- de-DE
- fr-FR
- it-IT
- pt-PT
transcripts:
- source:
url:
lipSync: false
schemas:
VideoInputMediaType:
type: string
enum:
- video/mp4
- video/quicktime
- video/mov
description: The video media type of the input file. Use a supported type.
AudioInputMediaType:
type: string
enum:
- audio/mp3
- audio/mpeg
- audio/x-wav
- audio/wav
- audio/vnd.dlna.adts
- audio/aac
description: The audio media type of the input file. Use a supported type.
JobStatusLinkResponse:
type: object
properties:
statusUrl:
type: string
description: URL to download the results of the job.
jobId:
type: string
description: The job ID.
required:
- statusUrl
- jobId
description: Job status response.
AudioInput:
type: object
properties:
source:
$ref: '#/components/schemas/Source'
mediaType:
$ref: '#/components/schemas/AudioInputMediaType'
required:
- url
- mediaType
description: The audio input details for a dub request.
ErrorBody:
type: object
description: The error response object.
properties:
message:
type: string
description: The error message.
error_code:
type: string
description: Associated error code.
required:
- error_code
- message
TranscriptInputLocale:
type: string
enum:
- da-DK
- en-IN
- en-GB
- es-AR
- es-419
- fr-CA
- hi-IN
- ja-JP
- ko-KR
- nb-NO
- nl-NL
- pt-BR
- sv-SE
- zh-CN
- en-US
- es-ES
- de-DE
- fr-FR
- it-IT
- pt-PT
description: The languages that the transcript will be generated in. Use supported locale codes.
DubVideoRequest:
type: object
properties:
targetLocaleCodes:
type: array
items:
$ref: '#/components/schemas/DubTargetLocaleCodes'
description: 'Accepted values: [ ''da-DK'',''en-IN'',''en-GB'',''es-AR'', ''es-419'',''fr-CA'',''hi-IN'',''ja-JP'',''ko-KR'',''nb-NO'',''nl-NL'',''pt-BR'',''sv-SE'',''zh-CN'',''en-US'',''es-ES'',''de-DE'',''fr-FR'',''it-IT'',''pt-PT'']'
transcripts:
type: array
items:
$ref: '#/components/schemas/TranscriptInput'
video:
$ref: '#/components/schemas/VideoInput'
lipSync:
type: boolean
description: If `true`, a high-quality composited lip sync will be used in the video output.
default: 'false'
required:
- video
description: The video dub request body.
DubRequest:
type: object
oneOf:
- $ref: '#/components/schemas/DubAudioRequest'
- $ref: '#/components/schemas/DubVideoRequest'
description: The dub request body.
Source:
type: object
properties:
url:
type: string
format: uri
description: The pre-signed URL pointing to the input source.
DubAudioRequest:
type: object
properties:
targetLocaleCodes:
type: array
items:
$ref: '#/components/schemas/DubTargetLocaleCodes'
description: 'Accepted values: [ ''da-DK'',''en-IN'',''en-GB'',''es-AR'', ''es-419'',''fr-CA'',''hi-IN'',''ja-JP'',''ko-KR'',''nb-NO'',''nl-NL'',''pt-BR'',''sv-SE'',''zh-CN'',''en-US'',''es-ES'',''de-DE'',''fr-FR'',''it-IT'',''pt-PT'']'
transcripts:
type: array
items:
$ref: '#/components/schemas/TranscriptInput'
audio:
$ref: '#/components/schemas/AudioInput'
required:
- audio
description: The audio dub request body.
DubTargetLocaleCodes:
type: string
enum:
- da-DK
- en-IN
- en-GB
- es-AR
- es-419
- fr-CA
- hi-IN
- ja-JP
- ko-KR
- nb-NO
- nl-NL
- pt-BR
- sv-SE
- zh-CN
- en-US
- es-ES
- de-DE
- fr-FR
- it-IT
- pt-PT
description: Supported target locale codes for dubbing
TranscriptInput:
type: object
properties:
source:
$ref: '#/components/schemas/Source'
description: The pre-signed URL to download the translated/edited transcripts.
localeCode:
$ref: '#/components/schemas/TranscriptInputLocale'
required:
- source
description: Transcript input details for transcribe request.
VideoInput:
type: object
properties:
source:
$ref: '#/components/schemas/Source'
mediaType:
$ref: '#/components/schemas/VideoInputMediaType'
metadata:
type: object
properties:
dialogTrackNumber:
type: integer
required:
- url
- mediaType
description: The video input details for a dub request.
securitySchemes:
AccessToken:
type: http
scheme: bearer
X-Api-Key:
type: apiKey
name: x-api-key
in: header