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