{ "openapi": "3.1.0", "info": { "version": "1.0.0", "title": "Firefly Services Audio and Video API", "description": "This RESTful API provides resources to use Firefly Services AI for audio and video generation and processing.", "termsOfService": "https://www.adobe.com/content/dam/cc/en/legal/terms/enterprise/pdfs/PSLT-AdobeCreativeAPI-WW-2024v2.pdf" }, "tags": [ { "name": "Dynamic Graphics Render", "description": "Endpoints for Dynamic Graphics Render (DGR): template describe, presets, render, cancel, list jobs, and job status. Supports MOGRT and After Effects (AEP) templates." }, { "name": "Reframe", "description": "Endpoints for video reframing." }, { "name": "Translate and lip sync", "description": "Endpoints for transcribing and dubbing audio/video content." }, { "name": "Text-to-speech", "description": "Endpoints for text-to-speech operations." }, { "name": "Text-to-Avatar", "description": "Endpoints for Text-to-Avatar operations." }, { "name": "Manage jobs", "description": "Endpoints for managing asynchronous jobs." } ], "servers": [ { "url": "https://audio-video-api.adobe.io", "description": "Production server." } ], "security": [ { "AccessToken": [], "X-Api-Key": [] } ], "paths": { "/v1/voices": { "get": { "tags": [ "Text-to-speech", "Text-to-Avatar" ], "summary": "Get available voices", "description": "This endpoint provides the list of all available voices for the user's enterprise.", "operationId": "voices", "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SuccessfulVoicesResponse" }, "examples": { "Success": { "$ref": "#/components/examples/SuccessfulVoicesResponse" } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FailedResponse" }, "examples": { "ErrorBodyUnauthorized": { "$ref": "#/components/examples/ErrorBodyUnauthorized" } } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FailedResponse" }, "examples": { "ErrorBodyForbidden": { "$ref": "#/components/examples/ErrorBodyForbidden" }, "ErrorBodyAPIKeyInvalid": { "$ref": "#/components/examples/ErrorBodyAPIKeyInvalid" } } } } }, "429": { "description": "Too Many Requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FailedResponse" }, "examples": { "ErrorBodyTooManyRequests": { "$ref": "#/components/examples/ErrorBodyTooManyRequests" } } } } }, "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FailedResponse" }, "examples": { "RunTimeError": { "$ref": "#/components/examples/RunTimeError" }, "StudioAPIFailedEntitiesErrorResponse": { "$ref": "#/components/examples/StudioAPIFailedEntitiesErrorResponse" } } } } } } } }, "/v1/generate-speech": { "post": { "tags": [ "Text-to-speech" ], "summary": "Generate speech from text", "description": "This endpoint generates speech from a transcript. You can provide the transcript either as plain text or a pre-signed URL. The response will include a job ID and a status URL for tracking the job.", "operationId": "generate-speech", "requestBody": { "description": "The request body contains the transcript used for generating speech.", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TTSRequest" }, "examples": { "TextInputForSpeechGeneration": { "$ref": "#/components/examples/TextInputForSpeechGeneration" }, "URLInputForSpeechGeneration": { "$ref": "#/components/examples/URLInputForSpeechGeneration" } } } } }, "responses": { "202": { "description": "Accepted", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SubmitAPIResponse" }, "examples": { "SubmitRequestResponse": { "$ref": "#/components/examples/SubmitRequestResponse" } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FailedResponse" }, "examples": { "BadRequestError": { "$ref": "#/components/examples/BadRequestError" } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FailedResponse" }, "examples": { "UnauthorizedAccessError": { "$ref": "#/components/examples/ErrorBodyUnauthorized" }, "ErrorBodyAccessDenied": { "$ref": "#/components/examples/ErrorBodyAccessDenied" } } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FailedResponse" }, "examples": { "ErrorBodyForbidden": { "$ref": "#/components/examples/ErrorBodyForbidden" }, "ErrorBodyAPIKeyInvalid": { "$ref": "#/components/examples/ErrorBodyAPIKeyInvalid" }, "UserNotEntitledError": { "$ref": "#/components/examples/UserNotEntitledError" }, "QuotaExceededError": { "$ref": "#/components/examples/QuotaExceededError" }, "UserProfileDeniedError": { "$ref": "#/components/examples/UserProfileDeniedError" }, "UserBlockedError": { "$ref": "#/components/examples/UserBlockedError" }, "InvalidSubscriptionError": { "$ref": "#/components/examples/InvalidSubscriptionError" }, "ViolationError": { "$ref": "#/components/examples/ViolationError" }, "TasteExhaustedError": { "$ref": "#/components/examples/TasteExhaustedError" }, "AccessError": { "$ref": "#/components/examples/AccessError" } } } } }, "422": { "description": "Unprocessable Entity", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FailedResponse" }, "examples": { "InvalidInputErrorExample": { "$ref": "#/components/examples/InvalidInputErrorExample" }, "MissingInputFileUrlErrorExample": { "$ref": "#/components/examples/MissingInputFileUrlErrorExample" }, "InvalidInputUrlErrorExample": { "$ref": "#/components/examples/InvalidInputUrlErrorExample" }, "InputFileFormatValidationErrorExample": { "$ref": "#/components/examples/InputFileFormatValidationErrorExample" }, "MissingScriptErrorExample": { "$ref": "#/components/examples/MissingScriptErrorExample" }, "EmptyTextForScriptErrorExample": { "$ref": "#/components/examples/EmptyTextForScriptErrorExample" }, "TextLengthExceededForScriptErrorExample": { "$ref": "#/components/examples/TextLengthExceededForScriptErrorExample" }, "TextLengthTooShortForScriptErrorExample": { "$ref": "#/components/examples/TextLengthTooShortForScriptErrorExample" }, "ScriptInvalidASCIIRange": { "$ref": "#/components/examples/ScriptInvalidASCIIRange" }, "ScriptInvalidTextSupportedRange": { "$ref": "#/components/examples/ScriptInvalidTextSupportedRange" }, "InvalidOrMissingLocaleCodeForScriptErrorExample": { "$ref": "#/components/examples/InvalidOrMissingLocaleCodeForScriptErrorExample" }, "MissingMediaTypeForScriptErrorExample": { "$ref": "#/components/examples/MissingMediaTypeForScriptErrorExample" }, "MediatypeIncompatibleForText": { "$ref": "#/components/examples/MediatypeIncompatibleForText" }, "MissingSourceLocaleErrorExample": { "$ref": "#/components/examples/MissingSourceLocaleErrorExample" }, "SourceUrlSourceTextConflictErrorExample": { "$ref": "#/components/examples/SourceUrlSourceTextConflictErrorExample" }, "UnsupportedVoiceIdErrorExample": { "$ref": "#/components/examples/UnsupportedVoiceIdErrorExample" }, "MissingVoiceIdErrorExample": { "$ref": "#/components/examples/MissingVoiceIdErrorExample" }, "MissingOutputErrorExample": { "$ref": "#/components/examples/MissingOutputErrorExample" }, "MissingMediaTypeForOutputErrorExample": { "$ref": "#/components/examples/MissingMediaTypeForOutputErrorExample" }, "InvalidOutputFileFormatErrorExample": { "$ref": "#/components/examples/InvalidOutputFileFormatErrorExample" }, "InvalidRequestPayloadErrorExample": { "$ref": "#/components/examples/InvalidRequestPayloadErrorExample" }, "InvalidSourceUrlErrorExample": { "$ref": "#/components/examples/InvalidSourceUrlErrorExample" }, "IncorrectVoiceNameErrorExample": { "$ref": "#/components/examples/IncorrectVoiceNameErrorExample" } } } } }, "429": { "description": "Too Many Requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FailedResponse" }, "examples": { "ErrorBodyTooManyRequests": { "$ref": "#/components/examples/ErrorBodyTooManyRequests" }, "ErrorBodyRateLimited": { "$ref": "#/components/examples/ErrorBodyRateLimited" } } } } }, "451": { "description": "Unauthorized For Legal Reasons", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FailedResponse" }, "examples": { "ErrorBodyLegalReasons": { "$ref": "#/components/examples/ErrorBodyLegalReasons" } } } } }, "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FailedResponse" }, "examples": { "TTSServiceSubmitError": { "$ref": "#/components/examples/TTSServiceSubmitError" }, "TTSEntityCreationError": { "$ref": "#/components/examples/TTSEntityCreationError" }, "TTSRuntimeError": { "$ref": "#/components/examples/TTSRuntimeError" } } } } } } } }, "/v1/status/{jobId}": { "get": { "tags": [ "Manage jobs" ], "summary": "Get job status", "description": "Provides the status and result of an asynchronous job. For Dynamic Graphics Render (DGR), returns the status of a Describe template or Render job.", "operationId": "status", "parameters": [ { "name": "jobId", "in": "path", "description": "The job ID of an asynchronous job.", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StatusAPIResponse" }, "examples": { "StatusAPIInprogressRequestResponse": { "$ref": "#/components/examples/StatusApiInProgressRequestResponse" }, "StatusAPISuccessRequestResponse": { "$ref": "#/components/examples/StatusApiSuccessRequestResponse" }, "StatusAPIFailedInputFileDownloadResponse": { "$ref": "#/components/examples/StatusAPIFailedInputFileDownloadResponse" }, "DGRJobStatusNotStarted": { "$ref": "#/components/examples/DGRJobStatusNotStarted" }, "DGRJobStatusRunning": { "$ref": "#/components/examples/DGRJobStatusRunning" }, "DGRDescribeSuccess": { "$ref": "#/components/examples/DGRDescribeSuccess" }, "DGRRenderSuccessSingle": { "$ref": "#/components/examples/DGRRenderSuccessSingle" }, "DGRRenderSuccessMultiple": { "$ref": "#/components/examples/DGRRenderSuccessMultiple" }, "DGRRenderPartialSuccess": { "$ref": "#/components/examples/DGRRenderPartialSuccess" }, "DGRRenderSuccessTwoVariations": { "$ref": "#/components/examples/DGRRenderSuccessTwoVariations" }, "DGRJobFailed": { "$ref": "#/components/examples/DGRJobFailed" }, "StatusAPIFailedMediatypeMismatchResponse": { "$ref": "#/components/examples/StatusAPIFailedMediatypeMismatchResponse" }, "StatusAPIFailedCAISigningResponse": { "$ref": "#/components/examples/StatusAPIFailedCAISigningResponse" }, "StatusAPIFailedUploadErrorResponse": { "$ref": "#/components/examples/StatusAPIFailedUploadErrorResponse" }, "StatusAPIFailedDownloadErrorResponse": { "$ref": "#/components/examples/StatusAPIFailedDownloadErrorResponse" }, "StatusAPIFailedTTSErrorResponse": { "$ref": "#/components/examples/StatusAPIFailedTTSErrorResponse" }, "StatusAPIFailedDurationTooLongResponse": { "$ref": "#/components/examples/StatusAPIFailedDurationTooLongResponse" }, "StatusAPIFailedUnsupportedBackgroundResponse": { "$ref": "#/components/examples/StatusAPIFailedUnsupportedBackgroundResponse" }, "StatusAPIFailedBackgroundResolutionErrorResponse": { "$ref": "#/components/examples/StatusAPIFailedBackgroundResolutionErrorResponse" }, "StatusAPIFailedCropAreaErrorResponse": { "$ref": "#/components/examples/StatusAPIFailedCropAreaErrorResponse" }, "StatusAPIFailedBackgroundCropErrorResponse": { "$ref": "#/components/examples/StatusAPIFailedBackgroundCropErrorResponse" }, "StatusAPIFailedFFMpegErrorResponse": { "$ref": "#/components/examples/StatusAPIFailedFFMpegErrorResponse" }, "StatusAPIFailedAvatarErrorResponse": { "$ref": "#/components/examples/StatusAPIFailedAvatarErrorResponse" }, "StatusAPIFailedLipsyncErrorResponse": { "$ref": "#/components/examples/StatusAPIFailedLipsyncErrorResponse" }, "StatusAPIFailedLipsyncPollingErrorResponse": { "$ref": "#/components/examples/StatusAPIFailedLipsyncPollingErrorResponse" }, "StatusAPIFailedMediaTrimErrorResponse": { "$ref": "#/components/examples/StatusAPIFailedMediaTrimErrorResponse" }, "StatusAPIFailedMediaTrimAlphaErrorResponse": { "$ref": "#/components/examples/StatusAPIFailedMediaTrimAlphaErrorResponse" }, "StatusAPIFailedInternalErrorResponse": { "$ref": "#/components/examples/StatusAPIFailedInternalErrorResponse" }, "StatusAPIFailedTTSInternalErrorResponse": { "$ref": "#/components/examples/StatusAPIFailedTTSInternalErrorResponse" }, "DGRDescribeAEPSuccess": { "$ref": "#/components/examples/DGRDescribeAEPSuccess" }, "DGRRenderPartialSuccessWithDestination": { "$ref": "#/components/examples/DGRRenderPartialSuccessWithDestination" } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FailedResponse" }, "examples": { "ErrorBodyUnauthorized": { "$ref": "#/components/examples/ErrorBodyUnauthorized" } } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FailedResponse" }, "examples": { "ErrorBodyForbidden": { "$ref": "#/components/examples/ErrorBodyForbidden" }, "ErrorBodyAPIKeyInvalid": { "$ref": "#/components/examples/ErrorBodyAPIKeyInvalid" } } } } }, "404": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FailedResponse" }, "examples": { "ErrorBodyResourceNotFound": { "$ref": "#/components/examples/ErrorBodyResourceNotFound" } } } } }, "429": { "description": "Too Many Requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FailedResponse" }, "examples": { "ErrorBodyTooManyRequests": { "$ref": "#/components/examples/ErrorBodyTooManyRequests" } } } } }, "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FailedResponse" }, "examples": { "RunTimeError": { "$ref": "#/components/examples/RunTimeError" }, "TEXT_TO_SPEECH_ENTITY_CREATION_ERROR": { "$ref": "#/components/examples/TEXT_TO_SPEECH_ENTITY_CREATION_ERROR" }, "TEXT_TO_SPEECH_SERVICE_SUBMIT_ERROR": { "$ref": "#/components/examples/TEXT_TO_SPEECH_SERVICE_SUBMIT_ERROR" } } } } } } } }, "/v1/templates/describe": { "post": { "tags": [ "Dynamic Graphics Render" ], "summary": "Describe template", "description": "Analyzes a MOGRT (video template) file and returns a manifest of editable controls; fonts, images, audio, video and other supported values.", "operationId": "template-describe", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TemplateDescribeRequest" }, "examples": { "MOGRTExample": { "summary": "Describe a MOGRT template", "value": { "type": "MOGRT", "source": { "url": "" } } }, "AEPExample": { "summary": "Describe an AEP template", "value": { "type": "AEP", "source": { "url": "", "projectFileName": "MyProject.aep", "compName": "MainComp" } } } } } } }, "responses": { "202": { "description": "Accepted", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TemplateDescribeResponse" }, "examples": { "SuccessResponse": { "value": { "jobId": "", "statusUrl": "https://audio-video-api.adobe.io/v1/status/" } } } } }, "headers": { "Link": { "schema": { "type": "string" }, "description": "URL to monitor the status of the job." } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" }, "examples": { "InvalidJsonError": { "value": { "error_code": "invalid_json", "message": "Invalid request. Please check the input data." } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" }, "examples": { "InvalidToken": { "value": { "error_code": "401013", "message": "OAuth token is not valid." } } } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" }, "examples": { "InvalidContext": { "value": { "error_code": "access_error", "message": "Token not allowed in the current context." } }, "ApiKeyIsRequired": { "value": { "error_code": "403000", "message": "API key is required." } } } } } }, "422": { "description": "Unprocessable Entity", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" }, "examples": { "ValidationError": { "value": { "error_code": "validation_error", "message": "Validation error occurred", "messageId": "42206000" } }, "InvalidTemplateTypeError": { "value": { "error_code": "validation_error", "message": "Input must contain a valid template type", "messageId": "42206001" } }, "InvalidTemplateSourceError": { "value": { "error_code": "validation_error", "message": "Invalid template source", "messageId": "42206002" } }, "InvalidTemplateSourceUrlError": { "value": { "error_code": "validation_error", "message": "Invalid template source URL", "messageId": "42206003" } } } } } }, "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" }, "examples": { "ServerError": { "value": { "messageId": "50006000", "message": "Internal Server Error", "error_code": "runtime_error" } } } } } } } } }, "/v1/presets": { "get": { "tags": [ "Dynamic Graphics Render" ], "summary": "Fetch video rendering presets", "description": "Returns a list of predefined social-first encoding presets for rendering outputs.", "operationId": "get-presets", "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PresetsResponse" }, "examples": { "PresetsExample": { "$ref": "#/components/examples/PresetsResponse" } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" }, "examples": { "Unauthorized": { "value": { "error_code": "401013", "message": "OAuth token is not valid." } } } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" }, "examples": { "Forbidden": { "value": { "error_code": "403000", "message": "API key is required." } } } } } } } } }, "/v1/templates/render": { "post": { "tags": [ "Dynamic Graphics Render" ], "summary": "Render template", "description": "Renders one or more video variations by applying overrides and export presets. Submit up to 10 overrides per call for a subset of editable layers and get a pre-signed URL link to download the video file. For layers that are not editable, the system defaults are automatically applied at export.", "operationId": "template-render", "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TemplateRenderRequest" }, "examples": { "MOGRTRenderExample": { "summary": "Render a MOGRT template with two variations", "value": { "type": "MOGRT", "source": { "url": "" }, "fonts": [ { "name": "", "source": { "url": "" } } ], "config": { "handleMissingFonts": "use_default" }, "assets": [ { "source": { "url": "" } }, { "source": { "url": "" } } ], "presets": [ { "source": { "presetId": "ffs_video_api_vert_1920p_hq" } }, { "source": { "url": "" } } ], "variations": [ { "variables": [ { "variableId": "", "selectedCheckboxValue": true }, { "variableId": "", "assetIndex": 0, "scale": "no_scale", "matchSourceDuration": true }, { "variableId": "", "selectedDropdownValue": "0" }, { "variableId": "", "text": "First Name", "fontName": "font_name_1" }, { "variableId": "", "selectedSliderValue": -18 }, { "variableId": "", "assetIndex": 1, "audioPreference": "replace" } ] }, { "variables": [ { "variableId": "", "selectedCheckboxValue": true }, { "variableId": "", "assetIndex": 0, "scale": "fit_to_frame", "matchSourceDuration": false }, { "variableId": "", "selectedDropdownValue": "0" }, { "variableId": "", "text": "First Name", "fontName": "font_name_1" }, { "variableId": "", "selectedSliderValue": -18 }, { "variableId": "", "assetIndex": 1, "audioPreference": "mix" } ] } ], "outputs": [ { "variationIndex": 0, "presetIndex": 0, "fileName": "some_custom_file_name", "destination": "" }, { "variationIndex": 1, "presetIndex": 0, "fileName": "output_vert_1920p_hq", "destination": "" }, { "variationIndex": 1, "presetIndex": 1, "fileName": "my_custom_file_name", "destination": { "url": "" } } ] } }, "AEPRenderExample": { "summary": "Render an AEP template with layer operations", "value": { "type": "AEP", "source": { "url": "", "projectFileName": "MyProject.aep", "compName": "MainComp" }, "fonts": [ { "name": "", "source": { "url": "" } } ], "config": { "handleMissingFonts": "use_default" }, "assets": [ { "source": { "url": "" } } ], "presets": [ { "source": { "presetId": "ffs_video_api_vert_1920p_hq" } } ], "variations": [ { "variables": [ { "variableId": "", "text": "Shop for your essential gear" }, { "variableId": "", "selectedSliderValue": 50 }, { "variableId": "", "selectedCheckboxValue": true }, { "variableId": "", "selectedDropdownValue": "0" }, { "variableId": "", "assetIndex": 0, "scale": "fit_to_frame", "matchSourceDuration": true } ], "layerOperations": [ { "operation": "SET_LAYER_DURATION", "layerIndex": 1, "durationSeconds": 4 }, { "operation": "SHIFT_INPOINT", "layerIndex": 2, "targetLayerIndex": 1, "offsetFrames": 30 }, { "operation": "TRIM_COMP_TO_LAYER", "startLayerIndex": 1, "endLayerIndex": 4 } ] } ], "outputs": [ { "variationIndex": 0, "presetIndex": 0, "fileName": "aep_output" } ] } } } } } }, "responses": { "202": { "description": "Accepted", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TemplateRenderResponse" }, "examples": { "SuccessResponse": { "value": { "jobId": "", "statusUrl": "https://audio-video-api.adobe.io/v1/status/" } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" }, "examples": { "InvalidJsonError": { "value": { "error_code": "invalid_json", "message": "Invalid request. Please check the input data." } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" }, "examples": { "InvalidToken": { "value": { "error_code": "401013", "message": "OAuth token is not valid." } } } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" }, "examples": { "InvalidContext": { "value": { "error_code": "access_error", "message": "Token not allowed in the current context." } }, "ApiKeyIsRequired": { "value": { "error_code": "403000", "message": "API key is required." } } } } } }, "422": { "description": "Unprocessable Entity", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" }, "examples": { "InvalidTemplateTypeError": { "value": { "error_code": "validation_error", "message": "Input must contain a valid template type", "messageId": "42205000" } }, "InvalidTemplateSourceUrlError": { "value": { "error_code": "validation_error", "message": "Invalid template source URL", "messageId": "42205001" } }, "InvalidPresetIdError": { "value": { "error_code": "validation_error", "message": "{presetId} export preset does not exist", "messageId": "42205002" } }, "InvalidFontDetailsError": { "value": { "error_code": "validation_error", "message": "Invalid font details in variation {variationIndex} control {controlIndex}", "messageId": "42205003" } }, "InvalidMediaDetailsError": { "value": { "error_code": "validation_error", "message": "Invalid media details in variation {variationIndex} control {controlIndex}", "messageId": "42205004" } }, "InvalidScaleTypeError": { "value": { "error_code": "validation_error", "message": "Invalid scale type in variation {variationIndex} control {controlIndex}", "messageId": "42205005" } }, "InvalidControlTypeError": { "value": { "error_code": "validation_error", "message": "Invalid control type in variation {variationIndex} control {controlIndex}", "messageId": "42205006" } } } } } }, "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" }, "examples": { "InternalServerError": { "value": { "error_code": "runtime_error", "message": "Internal Server Error", "messageId": "50005001" } } } } } } } } }, "/v1/reframe": { "post": { "tags": [ "Reframe" ], "summary": "Reframe video", "description": "This endpoint enables you to reframe video using AI. Provide video input with a pre-signed URL to generate reframed video output. \n\nThis API has more limited capabilities than the v2 endpoint, and may be deprecated soon. **It's recommended to use the v2 endpoint instead.**", "operationId": "generate-reframed-video", "requestBody": { "description": "The reframe request body.", "required": true, "content": { "application/json": { "schema": { "properties": { "video": { "type": "object", "properties": { "source": { "type": "object", "properties": { "url": { "type": "string", "format": "uri", "description": "The pre-signed URL pointing to the input source." } }, "required": [ "url" ], "description": "Details of the source including a pre-signed URL. See the [list of allowed domains for storage](https://developer.adobe.com/audio-video-firefly-services/getting-started/storage-solutions/)." }, "mediaType": { "type": "string", "enum": [ "video/mp4", "video/quicktime" ], "description": "Supported video media types." } }, "required": [ "source", "mediaType" ], "description": "Video input details." }, "sceneEditDetection": { "type": "boolean", "description": "Apply Scene Edit Detection before reframing.", "default": true }, "overlays": { "type": "array", "items": { "$ref": "#/components/schemas/Overlay" }, "description": "Configuration details for video overlays." }, "outputConfig": { "type": "object", "properties": { "aspectRatios": { "type": "array", "items": { "type": "string", "format": "numerator:denominator" }, "description": "A list of aspect ratios for the output video." } }, "required": [ "aspectRatios" ], "description": "Configuration details for the generated reframed video." } }, "required": [ "video", "outputConfig" ], "type": "object" }, "examples": { "ReframedVideoInputRequestPayload": { "summary": "Video input to generate Reframed video output", "value": { "video": { "source": { "url": "" }, "mediaType": "video/mp4" }, "sceneEditDetection": true, "overlays": [ { "mediaType": "image/gif", "source": { "url": "" }, "startTime": "00:00:05:00", "duration": "00:00:05:00", "scale": { "width": 500, "height": 500 }, "position": { "anchorPoint": "top_left", "offsetX": 500, "offsetY": 500 }, "repeat": "loop" } ], "outputConfig": { "aspectRatios": [ "1:1", "9:16", "4:5" ] } } } } } } }, "responses": { "202": { "description": "Accepted", "content": { "application/json": { "schema": { "description": "Response indicating that the reframed video job has been successfully submitted.", "properties": { "jobId": { "type": "string", "description": "The unique identifier for the job." }, "statusUrl": { "type": "string", "description": "The URL to monitor the status of the job." } }, "required": [ "jobId", "statusUrl" ], "type": "object" }, "examples": { "GenerateReframedVideoResponse": { "summary": "Response for successful job submission", "value": { "jobId": "", "statusUrl": "https:///v1/status/" } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GenerateReframedVideoJobErrorBody" }, "examples": { "ErrorBodyBadRequest": { "$ref": "#/components/examples/ErrorBodyBadRequest" } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GenerateReframedVideoJobErrorBody" }, "examples": { "ErrorBodyUnauthorized": { "$ref": "#/components/examples/ErrorBodyUnauthorized" } } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GenerateReframedVideoJobErrorBody" }, "examples": { "ErrorBodyForbidden": { "$ref": "#/components/examples/ErrorBodyForbidden" } } } } }, "404": { "description": "Resource not found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GenerateReframedVideoJobErrorBody" }, "examples": { "ErrorBodyResourceNotFound": { "$ref": "#/components/examples/ErrorBodyResourceNotFound" } } } } }, "405": { "description": "Method Not Allowed", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GenerateReframedVideoJobErrorBody" }, "examples": { "ErrorBodyMethodNotAllowed": { "$ref": "#/components/examples/ErrorBodyMethodNotAllowed" } } } } }, "429": { "description": "Too many requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GenerateReframedVideoJobErrorBody" }, "examples": { "ErrorBodyTooManyRequests": { "$ref": "#/components/examples/ErrorBodyTooManyRequests" } } } } }, "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GenerateReframedVideoJobErrorBody" }, "examples": { "ErrorBodyInternalServerError": { "$ref": "#/components/examples/ErrorBodyInternalServerError" } } } } } } } }, "/v1/transcribe": { "post": { "tags": [ "Translate and lip sync" ], "summary": "Transcribe media", "description": "Generates transcripts and captions for the input audio or video in the source language or in a target language.", "operationId": "transcribe", "requestBody": { "description": "The transcribe request body.", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TranscribeRequest" }, "examples": { "AudioInputToGenerateTranscriptFromSourceAudio": { "$ref": "#/components/examples/AudioInputToGenerateTranscriptFromSourceAudio" }, "VideoInputToGenerateTranscriptFromSourceVideo": { "$ref": "#/components/examples/VideoInputToGenerateTranscriptFromSourceVideo" }, "AudioInputToGenerateTranscriptFromTargetLanguageAudio": { "$ref": "#/components/examples/AudioInputToGenerateTranscriptFromTargetLanguageAudio" }, "VideoInputToGenerateTranscriptFromTargetLanguageVideo": { "$ref": "#/components/examples/VideoInputToGenerateTranscriptFromTargetLanguageVideo" }, "AudioInputToGenerateTranscriptAndCaptionsFromTargetFormatsFromSourceAudio": { "$ref": "#/components/examples/AudioInputToGenerateTranscriptAndCaptionsFromTargetFormatsFromSourceAudio" }, "VideoInputToGenerateTranscriptAndCaptionsFromTargetFormatsFromSourceVideo": { "$ref": "#/components/examples/VideoInputToGenerateTranscriptAndCaptionsFromTargetFormatsFromSourceVideo" } } } } }, "responses": { "202": { "description": "Accepted", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/JobStatusLinkResponse" }, "examples": { "TranscribeResponse": { "$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" }, "ValidationErrorBlankTranscriptSourceField": { "$ref": "#/components/examples/ValidationErrorBlankTranscriptSourceField" }, "ValidationErrorInvalidTranscriptUrl": { "$ref": "#/components/examples/ValidationErrorInvalidTranscriptUrl" }, "ValidationErrorUnsupportedVideoMediaType": { "$ref": "#/components/examples/ValidationErrorUnsupportedVideoMediaType" }, "ValidationErrorUnsupportedAudioMediaType": { "$ref": "#/components/examples/ValidationErrorUnsupportedAudioMediaType" }, "ValidationErrorUnsupportedTargetLocaleCode": { "$ref": "#/components/examples/ValidationErrorUnsupportedTargetLocaleCode" }, "ValidationErrorBlankTargetLocaleCode": { "$ref": "#/components/examples/ValidationErrorBlankTargetLocaleCode" }, "ValidationErrorMissingTargetLocaleCode": { "$ref": "#/components/examples/ValidationErrorMissingTargetLocaleCode" }, "ValidationErrorLocaleCodeNotRequiredForEditedTranscript": { "$ref": "#/components/examples/ValidationErrorLocaleCodeNotRequiredForEditedTranscript" }, "ValidationErrorEitherTargetLocaleCodesOrTranscriptionRequired": { "$ref": "#/components/examples/ValidationErrorEitherTargetLocaleCodesOrTranscriptionRequired" }, "ValidationErrorCaptionGenerationNotSupportedWithTranslation": { "$ref": "#/components/examples/ValidationErrorCaptionGenerationNotSupportedWithTranslation" } } } } }, "429": { "description": "Too Many Requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorBody" }, "examples": { "ErrorBodyTooManyRequests": { "$ref": "#/components/examples/ErrorBodyTooManyRequests" } } } } }, "451": { "description": "Unauthorized For 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" } } } } } } } }, "/v1/dub": { "post": { "tags": [ "Translate and lip sync" ], "summary": "Dub audio or video", "description": "Generate dubbed video or audio. A composited lip sync can also be added for video dubbing.", "operationId": "dub", "requestBody": { "description": "The dub request body.", "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 For 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" } } } } } } } }, "/v1/avatars": { "get": { "tags": [ "Text-to-Avatar" ], "summary": "Get available avatars", "description": "Retrieves the list of all available avatars for the user's enterprise.", "operationId": "avatars", "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SuccessfulAvatarsResponse" }, "examples": { "Success": { "$ref": "#/components/examples/SuccessfulAvatarsResponse" } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FailedResponse" }, "examples": { "ErrorBodyUnauthorized": { "$ref": "#/components/examples/ErrorBodyUnauthorized" } } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FailedResponse" }, "examples": { "ErrorBodyForbidden": { "$ref": "#/components/examples/ErrorBodyForbidden" }, "ErrorBodyAPIKeyInvalid": { "$ref": "#/components/examples/ErrorBodyAPIKeyInvalid" } } } } }, "429": { "description": "Too Many Requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FailedResponse" }, "examples": { "ErrorBodyTooManyRequests": { "$ref": "#/components/examples/ErrorBodyTooManyRequests" } } } } }, "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FailedResponse" }, "examples": { "RunTimeError": { "$ref": "#/components/examples/RunTimeError" }, "StudioAPIFailedEntitiesErrorResponse": { "$ref": "#/components/examples/StudioAPIFailedEntitiesErrorResponse" } } } } } } } }, "/v2/reframe": { "post": { "tags": [ "Reframe" ], "summary": "Reframe video v2", "description": "This endpoint enables you to reframe the input media. You can provide a video input via a pre-signed URL to generate reframed output video.", "operationId": "generate-reframed-video-v2", "requestBody": { "description": "Generate reframed video request body.", "required": true, "content": { "application/json": { "schema": { "properties": { "video": { "$ref": "#/components/schemas/VideoInputV2" }, "analysis": { "$ref": "#/components/schemas/AnalysisV2" }, "composition": { "$ref": "#/components/schemas/CompositionV2" }, "output": { "type": "object", "properties": { "format": { "$ref": "#/components/schemas/OutputFormatV2" }, "renditions": { "type": "array", "uniqueItems": true, "description": "Array of output rendition specifications.", "items": { "oneOf": [ { "title": "Aspect Ratio Rendition", "type": "object", "properties": { "aspectRatio": { "$ref": "#/components/schemas/AspectRatioV2" }, "mediaDestination": { "$ref": "#/components/schemas/Destination" }, "sidecarDestination": { "$ref": "#/components/schemas/Destination" } }, "required": [ "aspectRatio" ] }, { "title": "Resolution Rendition", "type": "object", "properties": { "resolution": { "type": "object", "properties": { "width": { "type": "integer", "description": "Resolution width of the output in pixels." }, "height": { "type": "integer", "description": "Resolution height of the output in pixels." } }, "required": [ "width", "height" ] }, "mediaDestination": { "$ref": "#/components/schemas/Destination" }, "sidecarDestination": { "$ref": "#/components/schemas/Destination" } }, "required": [ "resolution" ] } ] } } }, "required": [ "renditions" ], "description": "Output configuration details for generating the reframed video." } }, "required": [ "video", "output" ], "type": "object" }, "examples": { "ReframedVideoInputRequestPayload": { "summary": "Video input to generate reframed video output", "value": { "video": { "source": { "url": "" } }, "analysis": { "sceneEditDetection": true, "focalPoints": [] }, "composition": { "overlays": [ { "source": { "url": "" }, "startTime": "00:00:05:00", "duration": "00:00:05:00", "scale": { "width": 500, "height": 500 }, "position": { "anchorPoint": "top_left", "offsetX": 500, "offsetY": 500 }, "repeat": "loop" } ] }, "output": { "format": { "media": "mp4" }, "renditions": [ { "aspectRatio": { "x": 1, "y": 1 }, "mediaDestination": { "url": "" } }, { "aspectRatio": { "x": 16, "y": 9 } } ], "layout": { "applyLetterboxing": false } } } }, "ObjectDetectionExample": { "summary": "Example with object detection for focal points", "value": { "video": { "source": { "url": "" } }, "analysis": { "sceneEditDetection": true, "focalPoints": [ "car", "people" ] }, "output": { "format": { "media": "mp4" }, "renditions": [ { "aspectRatio": { "x": 16, "y": 9 } } ], "layout": { "applyLetterboxing": false } } } } } } } }, "responses": { "202": { "description": "Accepted", "content": { "application/json": { "schema": { "description": "Response indicating that the reframed video job has been successfully submitted.", "properties": { "jobId": { "type": "string", "description": "The unique identifier for the job." }, "statusUrl": { "type": "string", "description": "The URL to monitor the status of the job." } }, "required": [ "jobId", "statusUrl" ], "type": "object" }, "examples": { "GenerateReframedVideoResponse": { "summary": "Response for successful job submission", "value": { "jobId": "", "statusUrl": "https:///v1/status/" } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "description": "Error response for the reframed video job.", "properties": { "error_code": { "type": "string", "description": "A code representing the specific error type." }, "message": { "type": "string", "description": "A description of the error that occurred." } }, "required": [ "message", "error_code" ], "type": "object" }, "examples": { "ErrorBodyBadRequest": { "summary": "Error Body Bad Request", "value": { "error_code": "400001", "message": "Invalid request. Please check the input data." } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "description": "Error response for the reframed video job.", "properties": { "error_code": { "type": "string", "description": "A code representing the specific error type." }, "message": { "type": "string", "description": "A description of the error that occurred." } }, "required": [ "message", "error_code" ], "type": "object" }, "examples": { "ErrorBodyUnauthorized": { "summary": "Error Body Unauthorized", "value": { "error_code": "401013", "message": "OAuth token is not valid." } } } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "description": "Error response for the reframed video job.", "properties": { "error_code": { "type": "string", "description": "A code representing the specific error type." }, "message": { "type": "string", "description": "A description of the error that occurred." } }, "required": [ "message", "error_code" ], "type": "object" }, "examples": { "ErrorBodyForbidden": { "summary": "Error Body Forbidden", "value": { "error_code": "403220", "message": "Token not allowed in the current context." } } } } } }, "404": { "description": "Resource Not Found", "content": { "application/json": { "schema": { "description": "Error response for the reframed video job.", "properties": { "error_code": { "type": "string", "description": "A code representing the specific error type." }, "message": { "type": "string", "description": "A description of the error that occurred." } }, "required": [ "message", "error_code" ], "type": "object" }, "examples": { "ErrorBodyResourceNotFound": { "summary": "Resource Not Found", "value": { "error_code": "404001", "message": "The requested resource was not found." } } } } } }, "405": { "description": "Method Not Allowed", "content": { "application/json": { "schema": { "description": "Error response for the reframed video job.", "properties": { "error_code": { "type": "string", "description": "A code representing the specific error type." }, "message": { "type": "string", "description": "A description of the error that occurred." } }, "required": [ "message", "error_code" ], "type": "object" }, "examples": { "ErrorBodyMethodNotAllowed": { "summary": "Method Not Allowed", "value": { "error_code": "405001", "message": "The requested method is not allowed on this endpoint." } } } } } }, "429": { "description": "Too Many Requests", "content": { "application/json": { "schema": { "description": "Error response for the reframed video job.", "properties": { "error_code": { "type": "string", "description": "A code representing the specific error type." }, "message": { "type": "string", "description": "A description of the error that occurred." } }, "required": [ "message", "error_code" ], "type": "object" }, "examples": { "ErrorBodyTooManyRequests": { "summary": "Too Many Requests", "value": { "message": "Too Many Requests", "error_code": "429011" } } } } } }, "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "description": "Error response for the reframed video job.", "properties": { "error_code": { "type": "string", "description": "A code representing the specific error type." }, "message": { "type": "string", "description": "A description of the error that occurred." } }, "required": [ "message", "error_code" ], "type": "object" }, "examples": { "ErrorBodyInternalServerError": { "summary": "Internal Server Error", "value": { "error_code": "500001", "message": "An internal server error occurred. Please try again later." } } } } } } } } }, "/v2/status/{jobId}": { "get": { "tags": [ "Reframe", "Manage jobs" ], "summary": "Get job result", "description": "This endpoint retrieves the result of an asynchronous reframed job initiated using the job ID.", "operationId": "job-result-v2", "parameters": [ { "name": "jobId", "in": "path", "description": "The job ID to get status for an asynchronous generate reframed video job.", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Success", "content": { "application/json": { "schema": { "type": "object", "description": "Job response on status API.", "oneOf": [ { "title": "Job In Progress", "type": "object", "description": "Response indicating that the reframed video job is in progress.", "properties": { "status": { "type": "string", "enum": [ "not_started", "running", "failed", "succeeded", "partially_succeeded" ], "description": "The status of the reframed video job." }, "jobId": { "type": "string", "description": "The unique identifier for the job." } }, "required": [ "status", "jobId" ] }, { "title": "Job Success", "type": "object", "description": "Success response for the reframed video job.", "properties": { "status": { "type": "string", "enum": [ "not_started", "running", "failed", "succeeded", "partially_succeeded" ], "description": "The status of the reframed video job." }, "jobId": { "type": "string", "description": "The unique identifier for the job." }, "outputs": { "type": "array", "uniqueItems": true, "description": "Array of output rendition results.", "items": { "oneOf": [ { "title": "Successful Rendition", "type": "object", "properties": { "destination": { "type": "object", "properties": { "url": { "type": "string", "format": "uri", "description": "The pre-signed URL pointing to the output." } }, "required": [ "url" ], "description": "Details of the output destination, including a pre-signed URL." } }, "required": [ "destination" ] }, { "title": "Failed Rendition", "type": "object", "description": "Error response for the generate reframed video job.", "properties": { "error": { "type": "object", "properties": { "error_code": { "type": "string", "description": "A code representing the specific error type." }, "message": { "type": "string", "description": "A description of the error that occurred." } }, "required": [ "message", "error_code" ], "description": "Details of the error encountered during the reframing process." } }, "required": [ "error" ] } ] } } }, "required": [ "status", "jobId", "outputs" ] }, { "title": "Job Partial Success", "type": "object", "description": "Response for a reframed video job that partially succeeded.", "properties": { "status": { "type": "string", "enum": [ "not_started", "running", "failed", "succeeded", "partially_succeeded" ], "description": "The status of the reframed video job." }, "jobId": { "type": "string", "description": "The unique identifier for the job." }, "outputs": { "type": "array", "items": { "oneOf": [ { "title": "Successful Rendition", "type": "object", "description": "Success response for the generate reframed video job.", "properties": { "destination": { "type": "object", "properties": { "url": { "type": "string", "format": "uri", "description": "The pre-signed URL pointing to the output." } }, "required": [ "url" ], "description": "Details of the output destination, including a pre-signed URL." } }, "required": [ "destination" ] }, { "title": "Failed Rendition", "type": "object", "description": "Error response for the generate reframed video job.", "properties": { "error": { "type": "object", "properties": { "error_code": { "type": "string", "description": "A code representing the specific error type." }, "message": { "type": "string", "description": "A description of the error that occurred." } }, "required": [ "message", "error_code" ], "description": "Details of the error encountered during the reframing process." } }, "required": [ "error" ] } ] }, "description": "Details of the job's partial success, including successful outputs and any errors encountered." } }, "required": [ "status", "jobId", "outputs" ] }, { "title": "Job Failure", "type": "object", "description": "Error response for a reframed video job that failed.", "properties": { "status": { "type": "string", "enum": [ "not_started", "running", "failed", "succeeded", "partially_succeeded" ], "description": "The status of the reframed video job, indicating a failure." }, "jobId": { "type": "string", "description": "The unique identifier for the job." }, "outputs": { "type": "object", "properties": { "renditions": { "type": "array", "uniqueItems": true, "description": "Array of failed rendition outputs.", "items": { "title": "Failed Rendition", "type": "object", "description": "Error response for the generate reframed video job.", "properties": { "error": { "type": "object", "properties": { "error_code": { "type": "string", "description": "A code representing the specific error type." }, "message": { "type": "string", "description": "A description of the error that occurred." } }, "required": [ "message", "error_code" ], "description": "Details of the error encountered during the reframing process." } }, "required": [ "error" ] } } }, "required": [ "renditions" ], "description": "Details of the errors encountered during the job." } }, "required": [ "status", "jobId", "outputs" ] } ] }, "examples": { "GenerateReframedVideoJobPendingResponse": { "summary": "Job is pending", "value": { "status": "pending", "jobId": "123e4567-e89b-12d3-a456-426614174002" } }, "GenerateReframedVideoJobInProgressResponse": { "summary": "Job is in progress", "value": { "status": "running", "jobId": "123e4567-e89b-12d3-a456-426614174002" } }, "GenerateReframedVideoJobSuccessResponse": { "summary": "Job succeeded", "value": { "status": "succeeded", "jobId": "123e4567-e89b-12d3-a456-426614174002", "outputs": [ { "destination": { "url": "<<>>" } } ] } }, "GenerateReframedVideoJobPartialSuccessResponse": { "summary": "Job partially succeeded", "value": { "status": "partially_succeeded", "jobId": "123e4567-e89b-12d3-a456-426614174002", "outputs": [ { "destination": { "url": "<<>>" } }, { "error": { "error_code": "<>", "message": "<>" } } ] } }, "GenerateReframedVideoJobFailureResponse": { "summary": "Job failed", "value": { "status": "failed", "jobId": "123e4567-e89b-12d3-a456-426614174002", "outputs": [ { "error": { "error_code": "<>", "message": "<>" } }, { "error": { "error_code": "<>", "message": "<>" } } ] } } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "description": "Response indicating that the reframed video job has been successfully submitted.", "properties": { "jobId": { "type": "string", "description": "The unique identifier for the job." }, "statusUrl": { "type": "string", "description": "The URL to monitor the status of the job." } }, "required": [ "jobId", "statusUrl" ], "type": "object" }, "examples": { "ErrorBodyBadRequest": { "summary": "Bad Request", "value": { "error_code": "400001", "message": "Invalid request. Please check the input data." } } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "description": "Response indicating that the reframed video job has been successfully submitted.", "properties": { "jobId": { "type": "string", "description": "The unique identifier for the job." }, "statusUrl": { "type": "string", "description": "The URL to monitor the status of the job." } }, "required": [ "jobId", "statusUrl" ], "type": "object" }, "examples": { "ErrorBodyUnauthorized": { "summary": "Unauthorized", "value": { "error_code": "401013", "message": "OAuth token is not valid" } } } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "description": "Response indicating that the reframed video job has been successfully submitted.", "properties": { "jobId": { "type": "string", "description": "The unique identifier for the job." }, "statusUrl": { "type": "string", "description": "The URL to monitor the status of the job." } }, "required": [ "jobId", "statusUrl" ], "type": "object" }, "examples": { "ErrorBodyForbidden": { "summary": "Forbidden", "value": { "error_code": "401013", "message": "OAuth token is not valid" } } } } } }, "404": { "description": "Resource Not Found", "content": { "application/json": { "schema": { "description": "Response indicating that the reframed video job has been successfully submitted.", "properties": { "jobId": { "type": "string", "description": "The unique identifier for the job." }, "statusUrl": { "type": "string", "description": "The URL to monitor the status of the job." } }, "required": [ "jobId", "statusUrl" ], "type": "object" }, "examples": { "ErrorBodyResourceNotFound": { "summary": "Resource Not Found", "value": { "error_code": "404001", "message": "The requested resource was not found." } } } } } }, "405": { "description": "Method Not Allowed", "content": { "application/json": { "schema": { "description": "Response indicating that the reframed video job has been successfully submitted.", "properties": { "jobId": { "type": "string", "description": "The unique identifier for the job." }, "statusUrl": { "type": "string", "description": "The URL to monitor the status of the job." } }, "required": [ "jobId", "statusUrl" ], "type": "object" }, "examples": { "ErrorBodyMethodNotAllowed": { "summary": "Method Not Allowed", "value": { "error_code": "405001", "message": "The requested method is not allowed on this endpoint." } } } } } }, "422": { "description": "Unprocessable Entity", "content": { "application/json": { "schema": { "description": "Response indicating that the reframed video job has been successfully submitted.", "properties": { "jobId": { "type": "string", "description": "The unique identifier for the job." }, "statusUrl": { "type": "string", "description": "The URL to monitor the status of the job." } }, "required": [ "jobId", "statusUrl" ], "type": "object" } } } }, "429": { "description": "Too Many Requests", "content": { "application/json": { "schema": { "description": "Response indicating that the reframed video job has been successfully submitted.", "properties": { "jobId": { "type": "string", "description": "The unique identifier for the job." }, "statusUrl": { "type": "string", "description": "The URL to monitor the status of the job." } }, "required": [ "jobId", "statusUrl" ], "type": "object" }, "examples": { "ErrorBodyTooManyRequests": { "summary": "Too Many Requests", "value": { "message": "Too Many Requests", "error_code": "429011" } } } } } }, "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "description": "Response indicating that the reframed video job has been successfully submitted.", "properties": { "jobId": { "type": "string", "description": "The unique identifier for the job." }, "statusUrl": { "type": "string", "description": "The URL to monitor the status of the job." } }, "required": [ "jobId", "statusUrl" ], "type": "object" }, "examples": { "ErrorBodyInternalServerError": { "summary": "Internal Server Error", "value": { "error_code": "500001", "message": "An internal server error occurred. Please try again later." } } } } } } } } }, "/v1/generate-avatar": { "post": { "tags": [ "Text-to-Avatar" ], "summary": "Generate avatar video from text", "description": "Generates an avatar video from a provided transcript or audio file. You can provide the transcript either as plain text or a pre-signed URL. The API is asynchronous, so the response will include a job ID and a status URL for tracking the running job.", "operationId": "generate-avatar", "requestBody": { "description": "The request body contains the transcript and details for generating an avatar.", "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AvatarRequest" }, "examples": { "PlainTextInputForAvatarGeneration": { "$ref": "#/components/examples/PlainTextInputForAvatarGeneration" }, "PlainTextInputForAvatarGenerationUsingVideoBackground": { "$ref": "#/components/examples/PlainTextInputForAvatarGenerationUsingVideoBackground" }, "PlainTextInputForAvatarGenerationUsingImageBackground": { "$ref": "#/components/examples/PlainTextInputForAvatarGenerationUsingImageBackground" }, "PlainTextInputForAvatarGenerationUsingColorBackground": { "$ref": "#/components/examples/PlainTextInputForAvatarGenerationUsingColorBackground" }, "URLTextInputForAvatarGeneration": { "$ref": "#/components/examples/URLTextInputForAvatarGeneration" }, "URLInputForAvatarGeneration": { "$ref": "#/components/examples/URLInputForAvatarGeneration" } } } } }, "responses": { "202": { "description": "Accepted", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SubmitAPIResponse" }, "examples": { "SubmitRequestResponse": { "$ref": "#/components/examples/SubmitRequestResponse" } } } } }, "400": { "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FailedResponse" }, "examples": { "BadRequestError": { "$ref": "#/components/examples/BadRequestError" } } } } }, "401": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FailedResponse" }, "examples": { "UnauthorizedAccessError": { "$ref": "#/components/examples/ErrorBodyUnauthorized" }, "ErrorBodyAccessDenied": { "$ref": "#/components/examples/ErrorBodyAccessDenied" } } } } }, "403": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FailedResponse" }, "examples": { "ErrorBodyForbidden": { "$ref": "#/components/examples/ErrorBodyForbidden" }, "ErrorBodyAPIKeyInvalid": { "$ref": "#/components/examples/ErrorBodyAPIKeyInvalid" }, "UserNotEntitledError": { "$ref": "#/components/examples/UserNotEntitledError" }, "QuotaExceededError": { "$ref": "#/components/examples/QuotaExceededError" }, "UserProfileDeniedError": { "$ref": "#/components/examples/UserProfileDeniedError" }, "UserBlockedError": { "$ref": "#/components/examples/UserBlockedError" }, "InvalidSubscriptionError": { "$ref": "#/components/examples/InvalidSubscriptionError" }, "ViolationError": { "$ref": "#/components/examples/ViolationError" }, "TasteExhaustedError": { "$ref": "#/components/examples/TasteExhaustedError" }, "AccessError": { "$ref": "#/components/examples/AccessError" } } } } }, "422": { "description": "Unprocessable Entity.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FailedResponse" }, "examples": { "InvalidInputErrorExample": { "$ref": "#/components/examples/InvalidInputErrorExample" }, "MissingInputFileUrlErrorExample": { "$ref": "#/components/examples/MissingInputFileUrlErrorExample" }, "InvalidInputUrlErrorExample": { "$ref": "#/components/examples/InvalidInputUrlErrorExample" }, "InputFileFormatValidationErrorExample": { "$ref": "#/components/examples/InputFileFormatValidationErrorExample" }, "MissingScriptErrorExample": { "$ref": "#/components/examples/MissingScriptErrorExample" }, "EmptyTextForScriptErrorExample": { "$ref": "#/components/examples/EmptyTextForScriptErrorExample" }, "TextLengthExceededForScriptErrorExample": { "$ref": "#/components/examples/TextLengthExceededForScriptErrorExample" }, "TextLengthTooShortForScriptErrorExample": { "$ref": "#/components/examples/TextLengthTooShortForScriptErrorExample" }, "ScriptInvalidASCIIRange": { "$ref": "#/components/examples/ScriptInvalidASCIIRange" }, "ScriptInvalidTextSupportedRange": { "$ref": "#/components/examples/ScriptInvalidTextSupportedRange" }, "InvalidOrMissingLocaleCodeForScriptErrorExample": { "$ref": "#/components/examples/InvalidOrMissingLocaleCodeForScriptErrorExample" }, "MissingMediaTypeForScriptErrorExample": { "$ref": "#/components/examples/MissingMediaTypeForScriptErrorExample" }, "MissingSourceLocaleErrorExample": { "$ref": "#/components/examples/MissingSourceLocaleErrorExample" }, "SourceUrlSourceTextConflictErrorExample": { "$ref": "#/components/examples/SourceUrlSourceTextConflictErrorExample" }, "UnsupportedVoiceIdErrorExample": { "$ref": "#/components/examples/UnsupportedVoiceIdErrorExample" }, "MissingVoiceIdErrorExample": { "$ref": "#/components/examples/MissingVoiceIdErrorExample" }, "MissingOutputErrorExample": { "$ref": "#/components/examples/MissingOutputErrorExample" }, "MissingMediaTypeForOutputErrorExample": { "$ref": "#/components/examples/MissingMediaTypeForOutputErrorExample" }, "InvalidOutputFileFormatErrorExample": { "$ref": "#/components/examples/InvalidOutputFileFormatErrorExample" }, "InvalidRequestPayloadErrorExample": { "$ref": "#/components/examples/InvalidRequestPayloadErrorExample" }, "InputScriptAudioConflictErrorExample": { "$ref": "#/components/examples/InputScriptAudioConflictErrorExample" }, "InputScriptAudioMissingErrorExample": { "$ref": "#/components/examples/InputScriptAudioMissingErrorExample" }, "InputScriptAudioMissingOrInvalidErrorExample": { "$ref": "#/components/examples/InputScriptAudioMissingOrInvalidErrorExample" }, "InvalidOrMissingAudioUrlErrorExample": { "$ref": "#/components/examples/InvalidOrMissingAudioUrlErrorExample" }, "MissingAudioSourceErrorExample": { "$ref": "#/components/examples/MissingAudioSourceErrorExample" }, "MissingAvatarIdErrorExample": { "$ref": "#/components/examples/MissingAvatarIdErrorExample" }, "UnsupportedAvatarIdErrorExample": { "$ref": "#/components/examples/UnsupportedAvatarIdErrorExample" }, "MissingBackgroundUrlErrorExample": { "$ref": "#/components/examples/MissingBackgroundUrlErrorExample" }, "MissingBackgroundTypeErrorExample": { "$ref": "#/components/examples/MissingBackgroundTypeErrorExample" }, "InvalidBackgroundUrlErrorExample": { "$ref": "#/components/examples/InvalidBackgroundUrlErrorExample" }, "BackgroundSourceColorConflictErrorExample": { "$ref": "#/components/examples/BackgroundSourceColorConflictErrorExample" }, "BackgroundSourceColorMissingErrorExample": { "$ref": "#/components/examples/BackgroundSourceColorMissingErrorExample" }, "InvalidBackgroundColorErrorExample": { "$ref": "#/components/examples/InvalidBackgroundColorErrorExample" }, "MissingBackgroundColorErrorExample": { "$ref": "#/components/examples/MissingBackgroundColorErrorExample" }, "BackgroundIncompatibleWithFormat": { "$ref": "#/components/examples/BackgroundIncompatibleWithFormat" }, "FormatIncompatibleWithBackground": { "$ref": "#/components/examples/FormatIncompatibleWithBackground" }, "UnsupportedOutputResolution": { "$ref": "#/components/examples/UnsupportedOutputResolution" }, "UnsupportedShotTypeErrorExample": { "$ref": "#/components/examples/UnsupportedShotTypeErrorExample" }, "InvalidSourceUrlErrorExample": { "$ref": "#/components/examples/InvalidSourceUrlErrorExample" }, "IncorrectVoiceNameErrorExample": { "$ref": "#/components/examples/IncorrectVoiceNameErrorExample" }, "MediatypeIncompatibleForText": { "$ref": "#/components/examples/MediatypeIncompatibleForText" }, "MISSING_PARAMS_IN_CROP_AREA": { "$ref": "#/components/examples/MISSING_PARAMS_IN_CROP_AREA" }, "INVALID_CROP_AREA_PARAMS": { "$ref": "#/components/examples/INVALID_CROP_AREA_PARAMS" }, "CROP_AREA_ASPECT_RATIO_NOT_SUPPORTED": { "$ref": "#/components/examples/CROP_AREA_ASPECT_RATIO_NOT_SUPPORTED" }, "StatusAPIFailedBackgroundFileResponse": { "$ref": "#/components/examples/StatusAPIFailedBackgroundFileResponse" }, "CROP_AREA_UNSUPPORTED_FOR_NON_IMAGE_VIDEO_BACKGROUND": { "$ref": "#/components/examples/CROP_AREA_UNSUPPORTED_FOR_NON_IMAGE_VIDEO_BACKGROUND" } } } } }, "429": { "description": "Too Many Requests", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FailedResponse" }, "examples": { "ErrorBodyTooManyRequests": { "$ref": "#/components/examples/ErrorBodyTooManyRequests" }, "ErrorBodyRateLimited": { "$ref": "#/components/examples/ErrorBodyRateLimited" } } } } }, "451": { "description": "Unavailable For Legal Reasons", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FailedResponse" }, "examples": { "ErrorBodyLegalReasons": { "$ref": "#/components/examples/ErrorBodyLegalReasons" } } } } }, "500": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FailedResponse" }, "examples": { "TTSServiceSubmitError": { "$ref": "#/components/examples/TTSServiceSubmitError" }, "TTSEntityCreationError": { "$ref": "#/components/examples/TTSEntityCreationError" }, "TTSRuntimeError": { "$ref": "#/components/examples/TTSRuntimeError" } } } } } } } }, "/v1/cancel/{jobId}": { "put": { "tags": [ "Dynamic Graphics Render", "Manage jobs" ], "summary": "Cancel a render job", "description": "Aborts an in-flight render job. The request is synchronous from the caller's perspective \u2014 the API returns 200 OK as soon as the cancellation has been accepted. Subsequent status lookups will report `\"status\": \"canceled\"` once the worker has stopped. Cancellation is idempotent: a PUT against a job that is already canceled also returns 200 OK. In-progress outputs are not uploaded to the destinations specified in the original Render request.", "operationId": "cancel-render-job", "parameters": [ { "name": "jobId", "in": "path", "description": "The job identifier (UUID) returned by the Render Template API in the 202 response, also available as the `cancelUrl` property.", "required": true, "schema": { "type": "string", "format": "uuid" } } ], "responses": { "200": { "description": "Cancellation accepted. The response body may be empty.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CancelJobResponse" } } } }, "400": { "description": "Bad Request \u2014 malformed input.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "401": { "description": "Unauthorized \u2014 missing or invalid token.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "403": { "description": "Forbidden \u2014 caller does not own this resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "404": { "description": "Not Found \u2014 the specified job does not exist.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "409": { "description": "Conflict \u2014 the job is already in a terminal state and cannot be canceled.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "429": { "description": "Too Many Requests \u2014 rate limit exceeded.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "500": { "description": "Internal Server Error.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } } }, "security": [ { "AccessToken": [] }, { "X-Api-Key": [] } ] } }, "/v1/templates/render/jobs": { "get": { "tags": [ "Dynamic Graphics Render", "Manage jobs" ], "summary": "List render jobs", "description": "Returns the list of render jobs owned by the caller, optionally filtered by job status. Useful for discovering all currently running renders before issuing cancels, and for building admin dashboards. Results are paginated; use `paging.nextUrl` to fetch subsequent pages.", "operationId": "list-render-jobs", "parameters": [ { "name": "status", "in": "query", "description": "Filter by job status. Allowed values match the Status API enum. Omit to return jobs in all states.", "required": false, "schema": { "type": "string", "enum": [ "not_started", "running", "succeeded", "partially_succeeded", "failed", "canceled" ] } }, { "name": "limit", "in": "query", "description": "Maximum number of jobs to return per page (default 20, max 100).", "required": false, "schema": { "type": "integer", "default": 20, "minimum": 1, "maximum": 100 } } ], "responses": { "200": { "description": "Success \u2014 paginated list of jobs (possibly empty).", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ListJobsResponse" }, "examples": { "FirstPageExample": { "summary": "First page with more pages available", "value": { "jobs": [ { "jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "status": "running", "statusUrl": "https://audio-video-api.adobe.io/v1/status/a1b2c3d4-e5f6-7890-abcd-ef1234567890", "cancelUrl": "https://audio-video-api.adobe.io/v1/cancel/a1b2c3d4-e5f6-7890-abcd-ef1234567890", "createdAt": "2025-05-13T10:00:00Z" } ], "paging": { "nextUrl": "https://audio-video-api.adobe.io/v1/templates/render/jobs?limit=20&cursor=eyJsYXN0S2V5IjoiYWJjIn0", "totalRecords": 42 } } }, "EmptyResultExample": { "summary": "No jobs match the filter", "value": { "jobs": [], "paging": { "totalRecords": 0 } } } } } } }, "400": { "description": "Bad Request \u2014 malformed input.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "401": { "description": "Unauthorized \u2014 missing or invalid token.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "403": { "description": "Forbidden \u2014 caller does not own this resource.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "429": { "description": "Too Many Requests \u2014 rate limit exceeded.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "500": { "description": "Internal Server Error.", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } } }, "security": [ { "AccessToken": [] }, { "X-Api-Key": [] } ] } } }, "components": { "securitySchemes": { "AccessToken": { "type": "http", "scheme": "bearer", "description": "The Adobe-generated access token, S2S format." }, "X-Api-Key": { "type": "apiKey", "name": "x-api-key", "in": "header", "description": "The client ID for authentication." } }, "schemas": { "SuccessfulVoicesResponse": { "type": "object", "description": "List of available voices.", "properties": { "voices": { "type": "array", "items": { "$ref": "#/components/schemas/VoiceEntity" } } } }, "VoiceEntity": { "type": "object", "description": "Details of Voice Entity.", "properties": { "voiceId": { "type": "string", "description": "The unique ID for the voice." }, "displayName": { "type": "string", "description": "The displayed name for the voice." }, "gender": { "type": "string", "description": "The gender of the voice." }, "style": { "type": "string", "description": "The speaking style of the voice.", "enum": [ "Casual", "Excited" ] }, "voiceType": { "type": "string", "description": "Not applicable at this time." }, "status": { "type": "string", "description": "This determines if the specific voice ID is available for use. Deprecated voices will have an Inactive status.", "enum": [ "Active", "Inactive" ] }, "extendedPropertyMap": { "type": "object", "description": "This is a field for any additional properties for the voice." }, "wordsPerMinute": { "type": "string", "description": "The speed of speaking, in words per minute." }, "rolePlayList": { "type": "array", "description": "Not applicable at this time.", "items": { "type": "string" } }, "sampleURL": { "type": "string", "description": "A pre-signed URL for downloading the sample audio." } } }, "SuccessfulAvatarsResponse": { "type": "object", "description": "List of available avatars.", "properties": { "avatars": { "type": "array", "items": { "$ref": "#/components/schemas/AvatarEntity" } } } }, "AvatarEntity": { "type": "object", "description": "Details of the avatar entity.", "properties": { "avatarId": { "type": "string", "description": "The unique ID for the avatar." }, "displayName": { "type": "string", "description": "The displayed name for the avatar." }, "gender": { "type": "string", "description": "The gender of the avatar." }, "clothingStyle": { "type": "string", "description": "The clothing style worn by the avatar.", "enum": [ "Casual", "Formal", "Professional" ] }, "ageGroup": { "type": "string", "description": "The intended age bracket of the avatar.", "enum": [ "Young Adult", "Middle Aged", "Senior" ] }, "ethnicity": { "type": "string", "description": "The ethnicity of the avatar." }, "style": { "type": "string", "description": "This property is used when the avatar wears a professional or region-specific costume (like Nurse, Doctor, Emergency Worker, Retail Worker, etc.)." }, "status": { "type": "string", "description": "This determines if the specific avatar ID is available for use. Deprecated avatars will have an Inactive status.", "enum": [ "Active", "Inactive" ] }, "extendedPropertyMap": { "type": "object", "properties": { "aspectRatio": { "type": "object", "properties": { "x": { "type": "integer" }, "y": { "type": "integer" } } }, "resolution": { "type": "object", "properties": { "width": { "type": "integer" }, "height": { "type": "integer" } } } }, "description": "This is a field for any additional properties for the avatar." }, "thumbnailUrls": { "type": "object", "properties": { "hd": { "type": "string", "description": "A pre-signed URL for downloading the high-resolution avatar thumbnail." }, "lowRes": { "type": "string", "description": "A pre-signed URL for downloading the low-resolution avatar thumbnail." } } }, "voiceId": { "type": "string", "description": "The unique ID for the voice." }, "sampleVideo": { "type": "object", "properties": { "webm": { "type": "string", "description": "A pre-signed URL for downloading avatar sample video in WEBM format." }, "mp4": { "type": "string", "description": "A pre-signed URL for downloading avatar sample video in MP4 format." } } } } }, "SupportedLanguageCode": { "type": "string", "enum": [ "en-US", "es-ES", "de-DE", "fr-FR", "da-DK", "en-GB", "en-IN", "es-419", "es-AR", "fr-CA", "hi-IN", "it-IT", "ja-JP", "ko-KR", "nb-NO", "pt-BR", "pt-PT", "nl-NL", "zh-CN", "sv-SE" ], "description": "The language code for the supported language desired in the result." }, "SupportedAudioOutputAudioFormat": { "type": "string", "enum": [ "audio/wav" ], "description": "The supported audio format for output." }, "SupportedOutputVideoFormat": { "type": "string", "enum": [ "video/mp4" ], "description": "The supported video format for background video for Avatar." }, "SupportedBackgroundType": { "type": "string", "enum": [ "color", "video", "image" ], "description": "Supported background type for output Avatar video." }, "TTSRequest": { "$ref": "#/components/schemas/GenerateSpeechUsingPlainText" }, "GenerateSpeechUsingPlainText": { "type": "object", "properties": { "script": { "oneOf": [ { "$ref": "#/components/schemas/TextSource" }, { "$ref": "#/components/schemas/URLSource" } ], "type": "object", "properties": { "localeCode": { "$ref": "#/components/schemas/SupportedLanguageCode" }, "mediaType": { "type": "string", "enum": [ "text/plain" ], "description": "The format of the text resource." } }, "required": [ "localeCode", "mediaType" ] }, "voiceId": { "type": "string", "description": "ID of the voice to use from the catalog of voices." }, "output": { "type": "object", "properties": { "mediaType": { "$ref": "#/components/schemas/SupportedAudioOutputAudioFormat" } }, "required": [ "mediaType" ] } }, "required": [ "voiceId", "output", "script" ] }, "AvatarRequest": { "type": "object", "oneOf": [ { "$ref": "#/components/schemas/GenerateAvatarUsingPlainText" }, { "$ref": "#/components/schemas/GenerateAvatarUsingAudioFile" } ] }, "GenerateAvatarUsingPlainText": { "title": "Using Plain Text", "type": "object", "properties": { "script": { "oneOf": [ { "$ref": "#/components/schemas/TextSource" }, { "$ref": "#/components/schemas/URLSource" } ], "type": "object", "properties": { "localeCode": { "$ref": "#/components/schemas/SupportedLanguageCode" }, "mediaType": { "type": "string", "enum": [ "text/plain" ], "description": "The format of the text resource." } }, "required": [ "localeCode", "mediaType" ] }, "voiceId": { "type": "string", "description": "ID of the voice to use from the catalog of voices." }, "avatarId": { "type": "string", "description": "ID of the avatar to use from the catalog of avatars." }, "output": { "$ref": "#/components/schemas/AvatarOutputObject" } }, "required": [ "voiceId", "output", "script", "avatarId" ] }, "GenerateAvatarUsingAudioFile": { "title": "Using Audio File", "type": "object", "properties": { "audio": { "type": "object", "properties": { "source": { "$ref": "#/components/schemas/URLObject" }, "mediaType": { "type": "string", "enum": [ "audio/wav" ] }, "localeCode": { "$ref": "#/components/schemas/SupportedLanguageCode" } }, "required": [ "localeCode", "mediaType", "source" ] }, "avatarId": { "type": "string", "description": "ID of the avatar to use from the catalog of avatars." }, "output": { "$ref": "#/components/schemas/AvatarOutputObject" } }, "required": [ "output", "audio", "avatarId" ] }, "URLSource": { "type": "object", "title": "Image or video background", "properties": { "source": { "type": "object", "properties": { "url": { "type": "string", "format": "uri", "description": "The pre-signed URL pointing to the resource to be used for avatar/speech generation." } }, "description": "Details of the source including a pre-signed URL. See the [list of allowed domains for storage](https://developer.adobe.com/audio-video-firefly-services/getting-started/storage-solutions/)." } } }, "URLObject": { "type": "object", "description": "URL object containing a pre-signed URL. See the [list of allowed domains for storage](https://developer.adobe.com/audio-video-firefly-services/getting-started/storage-solutions/).", "properties": { "url": { "type": "string", "format": "uri", "description": "The pre-signed URL pointing to the resource to be used for avatar/speech generation." } } }, "AvatarOutputObject": { "type": "object", "description": "Output configuration for avatar video generation.", "properties": { "mediaType": { "$ref": "#/components/schemas/SupportedOutputVideoFormat" }, "background": { "oneOf": [ { "$ref": "#/components/schemas/OutputColor" }, { "$ref": "#/components/schemas/URLSource" } ], "type": "object", "properties": { "type": { "$ref": "#/components/schemas/SupportedBackgroundType" } } }, "resolution": { "type": "object", "properties": { "width": { "type": "string" }, "height": { "type": "string" } } } }, "required": [ "mediaType" ] }, "TextSource": { "description": "Details of the text resource.", "type": "string", "properties": { "text": { "type": "string" } } }, "OutputColor": { "type": "string", "title": "Color background", "description": "Color specification for avatar background.", "properties": { "color": { "type": "string", "pattern": "^#[0-9a-fA-F]{6}$", "description": "Color code for the background of the output. This should be a six digit hexadecimal value." } } }, "SubmitAPIResponse": { "type": "object", "description": "Response returned when a job is successfully submitted.", "properties": { "jobId": { "type": "string" }, "statusUrl": { "type": "string" } } }, "StatusAPIResponse": { "type": "object", "description": "Response object for job status queries.", "oneOf": [ { "$ref": "#/components/schemas/StatusAPIInprogressResponse" }, { "$ref": "#/components/schemas/StatusAPICompletedResponse" }, { "$ref": "#/components/schemas/StatusAPIFailedResponse" }, { "$ref": "#/components/schemas/JobStatus" } ] }, "StatusAPIResponseStatus": { "type": "string", "enum": [ "pending", "running", "failed", "succeeded", "canceled" ], "description": "Status of the job. Includes \"canceled\" for jobs aborted via the Cancel API." }, "StatusAPIInprogressResponse": { "type": "object", "properties": { "jobId": { "type": "string" }, "status": { "$ref": "#/components/schemas/StatusAPIResponseStatus" } } }, "StatusAPICompletedResponse": { "type": "object", "properties": { "jobId": { "type": "string" }, "status": { "$ref": "#/components/schemas/StatusAPIResponseStatus" }, "output": { "type": "object", "properties": { "destination": { "$ref": "#/components/schemas/Destination" } } } } }, "StatusAPIFailedResponse": { "type": "object", "description": "Response object for failed jobs.", "properties": { "status": { "$ref": "#/components/schemas/StatusAPIResponseStatus" }, "jobId": { "type": "string" }, "error_code": { "type": "string" }, "message": { "type": "string" } } }, "FailedResponse": { "type": "object", "description": "Generic error response object.", "properties": { "error_code": { "type": "string" }, "message": { "type": "string" } } }, "ErrorResponse": { "type": "object", "required": [ "error_code", "message" ], "properties": { "error_code": { "type": "string", "description": "The error code returned with the response." }, "message": { "type": "string", "description": "The error message returned with the response." }, "messageId": { "type": "string", "description": "The error message ID returned with the response." } } }, "TemplateDescribeRequest": { "type": "object", "required": [ "source" ], "properties": { "type": { "type": "string", "enum": [ "MOGRT", "AEP" ], "description": "Template type. Supported values: MOGRT (Motion Graphics Template) or AEP (After Effects Project)." }, "source": { "type": "object", "required": [ "url" ], "properties": { "url": { "type": "string", "format": "uri", "description": "A pre-signed URL pointing to the input template file." }, "projectFileName": { "type": "string", "description": "Optional. Name of the After Effects project file (.aep). Required when type is AEP." }, "compName": { "type": "string", "description": "Optional. Name of the After Effects composition to describe. Used when type is AEP." } }, "description": "Contains metadata about the source of the input template." } } }, "TemplateDescribeResponse": { "type": "object", "required": [ "jobId", "statusUrl" ], "properties": { "jobId": { "type": "string", "description": "Unique identifier for the describe job." }, "statusUrl": { "type": "string", "format": "uri", "description": "URL to poll for the status of the describe job." } } }, "PresetItem": { "type": "object", "properties": { "presetId": { "type": "string", "description": "Unique identifier for the preset." }, "label": { "type": "string", "description": "Human-readable label for the preset." }, "mediaType": { "type": "string", "description": "MIME type of the output media (e.g., video/mp4)." }, "codec": { "type": "string", "description": "Video codec used (e.g., H.264)." }, "profile": { "type": "string", "description": "Codec profile (e.g., high)." }, "maxFps": { "type": "object", "required": [ "numerator", "denominator" ], "properties": { "numerator": { "type": "integer", "description": "Frames-per-second numerator." }, "denominator": { "type": "integer", "description": "Frames-per-second denominator." } }, "description": "Maximum frames per second as a fraction." }, "bitrateMode": { "type": "string", "description": "Bitrate mode (e.g., vbr, cbr)." }, "targetBitrateInKbps": { "type": "integer", "description": "Target bitrate in kilobits per second." }, "maxBitrateInKbps": { "type": "integer", "description": "Maximum bitrate in kilobits per second." }, "alpha": { "type": "boolean", "description": "Whether the preset supports alpha channel." }, "primaryUsage": { "type": "string", "description": "Primary use case for this preset." } }, "required": [ "presetId", "label", "mediaType", "codec", "maxFps", "bitrateMode", "alpha", "primaryUsage" ] }, "PresetsResponse": { "type": "object", "properties": { "items": { "type": "array", "items": { "$ref": "#/components/schemas/PresetItem" } } }, "required": [ "items" ] }, "TemplateRenderRequest": { "type": "object", "required": [ "source", "variations" ], "properties": { "type": { "type": "string", "enum": [ "MOGRT", "AEP" ], "description": "Template type. Supported values: MOGRT (Motion Graphics Template) or AEP (After Effects Project)." }, "source": { "type": "object", "required": [ "url" ], "properties": { "url": { "type": "string", "format": "uri", "description": "A pre-signed URL pointing to the input template file." }, "projectFileName": { "type": "string", "description": "Optional. Name of the After Effects project file (.aep). Required when type is AEP." }, "compName": { "type": "string", "description": "Optional. Name of the After Effects composition to render. Used when type is AEP." } }, "description": "Contains metadata about the source of the input template." }, "fonts": { "type": "array", "description": "List of fonts required to process provided variations. Font name must be the PostScript name.", "items": { "type": "object", "required": [ "name", "source" ], "properties": { "name": { "type": "string", "description": "PostScript name of the font." }, "source": { "type": "object", "required": [ "url" ], "properties": { "url": { "type": "string", "format": "uri", "description": "Pre-signed URL for the font file (.ttf or .otf)." } } } } } }, "config": { "type": "object", "description": "Global configuration options for the render request.", "properties": { "handleMissingFonts": { "type": "string", "enum": [ "fail", "use_default" ], "default": "use_default", "description": "How to handle missing fonts. 'fail' causes the render to fail; 'use_default' falls back to Adobe apps default font behavior." } } }, "assets": { "type": "array", "description": "Consolidated list of image, video, or audio assets. Referenced in variations by zero-based assetIndex.", "items": { "type": "object", "required": [ "source" ], "properties": { "source": { "type": "object", "required": [ "url" ], "properties": { "url": { "type": "string", "format": "uri", "description": "Pre-signed URL for the image, video, or audio asset." } } } } } }, "presets": { "type": "array", "description": "Export presets for rendering variations. Each item is a built-in preset (by presetId) or a custom preset (by URL). Referenced in outputs by zero-based presetIndex.", "items": { "type": "object", "required": [ "source" ], "properties": { "source": { "type": "object", "properties": { "presetId": { "type": "string", "description": "ID of a built-in preset from the GET /v1/presets endpoint." }, "url": { "type": "string", "format": "uri", "description": "Pre-signed URL for a custom Encoder preset file." } } } } } }, "variations": { "type": "array", "description": "List of variations. Each variation specifies variable overrides and optional layer operations to apply on the template.", "minItems": 1, "items": { "type": "object", "required": [ "variables" ], "properties": { "variables": { "type": "array", "description": "Variable overrides for this variation. Each item targets one template variable by variableId.", "items": { "type": "object", "required": [ "variableId" ], "properties": { "variableId": { "type": "string", "description": "Unique identifier for the template variable, obtained from the Describe API response." }, "text": { "type": "string", "description": "Override value for text controls." }, "fontName": { "type": "string", "description": "PostScript font name to use for text controls." }, "selectedCheckboxValue": { "type": "boolean", "description": "Override value for checkbox controls." }, "selectedDropdownValue": { "type": "string", "description": "Override value for dropdown controls. Must match one of the option keys from the Describe API response." }, "selectedSliderValue": { "type": "number", "description": "Override value for slider controls. Must be within the range specified in the Describe API response." }, "assetIndex": { "type": "integer", "description": "Zero-based index into the assets array. Used for media and audio controls." }, "scale": { "type": "string", "enum": [ "no_scale", "fit_to_frame", "stretch_to_fill", "fill_frame" ], "description": "Scaling behavior for media controls. Must be one of the possibleScaleValues from the Describe API response." }, "matchSourceDuration": { "type": "boolean", "description": "If true, trims or extends the duration of the affected layer to match the duration of its source footage. Applicable for media controls." }, "audioPreference": { "type": "string", "enum": [ "replace", "mix" ], "default": "replace", "description": "Audio handling preference for audio controls. 'replace' replaces the existing audio track; 'mix' mixes with the existing audio." } } } }, "layerOperations": { "type": "array", "description": "List of layer-level operations to apply on the template. Applicable only for AEP template type.", "items": { "type": "object", "required": [ "operation" ], "properties": { "operation": { "type": "string", "enum": [ "SET_LAYER_DURATION", "SHIFT_INPOINT", "TRIM_COMP_TO_LAYER" ], "description": "The layer operation to perform. SET_LAYER_DURATION sets the duration of a layer. SHIFT_INPOINT shifts the in-point of a layer relative to another. TRIM_COMP_TO_LAYER trims the composition duration to span specific layers." }, "layerIndex": { "type": "integer", "description": "Zero-based index of the target layer. Used by SET_LAYER_DURATION and SHIFT_INPOINT." }, "targetLayerIndex": { "type": "integer", "description": "Zero-based index of the reference layer. Used by SHIFT_INPOINT to define the layer whose position is used as reference." }, "startLayerIndex": { "type": "integer", "description": "Zero-based index of the first layer defining the start boundary. Used by TRIM_COMP_TO_LAYER." }, "endLayerIndex": { "type": "integer", "description": "Zero-based index of the last layer defining the end boundary. Used by TRIM_COMP_TO_LAYER." }, "offsetFrames": { "type": "integer", "description": "Frame offset for the operation. Used by SHIFT_INPOINT." }, "offsetSeconds": { "type": "number", "description": "Time offset in seconds for the operation. Used by SHIFT_INPOINT." }, "durationFrames": { "type": "integer", "description": "Duration in frames. Used by SET_LAYER_DURATION." }, "durationSeconds": { "type": "number", "description": "Duration in seconds. Used by SET_LAYER_DURATION." } } } } } } }, "outputs": { "type": "array", "description": "Defines which variation and preset combinations to render, with optional output file name and upload destination.", "items": { "type": "object", "required": [ "variationIndex", "presetIndex" ], "properties": { "variationIndex": { "type": "integer", "description": "Zero-based index of the variation from the variations array." }, "presetIndex": { "type": "integer", "description": "Zero-based index of the preset from the presets array." }, "fileName": { "type": "string", "description": "Optional preferred output file name (without extension)." }, "destination": { "type": "object", "description": "Optional. Pre-signed URL destination where the rendered output should be uploaded.", "properties": { "url": { "type": "string", "format": "uri", "description": "Pre-signed URL where the output file will be uploaded." } }, "required": [ "url" ] } } } } } }, "TemplateRenderResponse": { "type": "object", "required": [ "jobId", "statusUrl" ], "properties": { "jobId": { "type": "string", "description": "Unique identifier for the render job." }, "statusUrl": { "type": "string", "format": "uri", "description": "URL to poll for the status of the rendering job." }, "cancelUrl": { "type": "string", "format": "uri", "description": "URL to cancel this render job. Equivalent to PUT /v1/cancel/{jobId}." } } }, "JobStatus": { "type": "object", "required": [ "jobId", "status" ], "properties": { "jobId": { "type": "string", "description": "ID of the render job." }, "status": { "type": "string", "enum": [ "not_started", "running", "succeeded", "failed", "partially_succeeded", "canceled" ], "description": "Current status of the job." }, "message": { "type": "string", "description": "Error message when job status is failed." }, "percentCompleted": { "type": "string", "description": "Percentage of job completed, as a string." }, "outputs": { "type": "array", "description": "Array of output files with destination URLs, keyed by variation and preset indices.", "items": { "type": "object", "required": [ "variationIndex", "presetIndex", "destination" ], "properties": { "variationIndex": { "type": "integer", "description": "Zero-based index of the variation that was rendered." }, "presetIndex": { "type": "integer", "description": "Zero-based index of the preset that was used for rendering." }, "destination": { "type": "object", "required": [ "url" ], "properties": { "url": { "type": "string", "format": "uri", "description": "URL from which the rendered video can be downloaded." } } } } } }, "errors": { "type": "array", "description": "Array of errors for failed variations (only present when status is partially_succeeded).", "items": { "type": "object", "required": [ "variationIndex", "presetIndex", "error" ], "properties": { "variationIndex": { "type": "integer", "description": "Zero-based index of the variation that failed." }, "presetIndex": { "type": "integer", "description": "Zero-based index of the preset that was used for the failed variation." }, "error": { "type": "object", "required": [ "error_code", "message" ], "properties": { "error_code": { "type": "string", "description": "Error code for the failure." }, "message": { "type": "string", "description": "Error message describing the failure." } } } } } }, "output": { "type": "object", "description": "Output for describe API jobs.", "properties": { "fonts": { "type": "array", "description": "Array of fonts from the template.", "items": { "type": "object", "properties": { "name": { "type": "string", "description": "PostScript name of the font." }, "uploadRequired": { "type": "boolean", "description": "Whether the font needs to be uploaded in the render request." } }, "required": [ "name" ] } }, "elements": { "type": "array", "description": "Array of elements from the template.", "items": { "type": "object", "required": [ "type", "controls" ], "properties": { "id": { "type": "string", "description": "Unique identifier for the element." }, "type": { "type": "string", "enum": [ "MOGRT", "AEP" ], "description": "Type of the element: MOGRT (Motion Graphics Template) or AEP (After Effects Project)." }, "controls": { "type": "array", "description": "Array of controls from the template.", "items": { "type": "object", "properties": { "variableId": { "type": "string", "description": "Unique identifier for the template variable." }, "id": { "type": "string", "description": "Unique identifier for the control." }, "label": { "type": "string", "description": "Human-readable label for the control." }, "type": { "type": "string", "enum": [ "text", "media", "dropdown", "checkbox", "slider", "audio", "comment" ], "description": "Type of the control." }, "defaultData": { "type": "object", "description": "Default or current values for the control (e.g., text, fontName, selectedCheckboxValue, selectedDropdownValue, selectedSliderValue, scale)." }, "data": { "type": "object", "description": "Data associated with the control." }, "options": { "description": "Available options (object for dropdown; array for checkbox)." }, "range": { "type": "object", "description": "Minimum and maximum values for slider controls.", "properties": { "minimum": { "type": "number" }, "maximum": { "type": "number" } } }, "size": { "type": "object", "description": "Dimensions for media controls.", "properties": { "width": { "type": "integer" }, "height": { "type": "integer" } } }, "possibleScaleValues": { "type": "array", "items": { "type": "string" }, "description": "Possible scale values for media controls." }, "durationInSeconds": { "type": "number", "description": "Duration in seconds for audio controls." }, "possibleAudioPreferences": { "type": "array", "items": { "type": "string" }, "description": "Possible audio preferences (e.g., replace, mix) for audio controls." }, "text": { "type": "string", "description": "Comment text for comment controls." }, "ref": { "type": "object", "description": "Hierarchical reference for the control within the composition/layer structure. Present only for AEP template type.", "properties": { "compName": { "type": "string", "description": "Name of the composition containing the control." }, "layerIndex": { "type": "integer", "description": "Index of the layer within the composition." }, "epIndex": { "type": "integer", "description": "Index of the Essential Graphics property within the layer." }, "effectIndex": { "type": "integer", "description": "Index of the effect within the layer (for effect-based controls)." }, "layerPath": { "type": "string", "description": "Full hierarchical path of the layer (e.g., 'CompA > CompB > LayerName')." }, "matchName": { "type": "string", "description": "After Effects internal match name for the property." }, "sourceName": { "type": "string", "description": "Original source file name of the layer (for footage/media layers)." } } } } } } } } } } } } }, "Overlay": { "type": "object", "properties": { "mediaType": { "type": "string", "enum": [ "image/gif", "image/png", "image/jpeg" ], "description": "The media type of the overlay." }, "source": { "type": "object", "properties": { "url": { "type": "string", "format": "uri", "description": "The pre-signed URL pointing to the overlay source." } }, "required": [ "url" ], "description": "Details of the source including a pre-signed URL. See the [list of allowed domains for storage](https://developer.adobe.com/audio-video-firefly-services/getting-started/storage-solutions/)." }, "startTime": { "type": "string", "format": "timecode", "description": "The start time of the overlay in the video." }, "duration": { "type": "string", "format": "timecode", "description": "The duration of the overlay in the video." }, "scale": { "type": "object", "properties": { "width": { "type": "integer", "description": "The width of the overlay." }, "height": { "type": "integer", "description": "The height of the overlay." } }, "required": [ "width", "height" ], "description": "The scale of the overlay." }, "position": { "type": "object", "properties": { "anchorPoint": { "type": "string", "enum": [ "top_left", "top_right", "bottom_left", "bottom_right", "center" ], "description": "The anchor point of the overlay." }, "offsetX": { "type": "integer", "description": "The X offset of the overlay from the anchor point." }, "offsetY": { "type": "integer", "description": "The Y offset of the overlay from the anchor point." } }, "required": [ "anchorPoint", "offsetX", "offsetY" ], "description": "The position of the overlay." }, "repeat": { "type": "string", "enum": [ "loop", "once" ], "description": "The repeat behavior of the overlay." } }, "required": [ "mediaType", "source", "startTime", "duration", "scale", "position" ], "description": "Configuration for an overlay in the reframed video." }, "GenerateReframedVideoJobErrorBody": { "type": "object", "properties": { "error_code": { "type": "string", "description": "A code representing the specific error type." }, "message": { "type": "string", "description": "A description of the error that occurred." } }, "required": [ "error_code", "message" ], "description": "Error response for the reframed video job." }, "TranscribeRequest": { "type": "object", "oneOf": [ { "$ref": "#/components/schemas/TranscribeAudioInput" }, { "$ref": "#/components/schemas/TranscribeVideoInput" } ], "properties": { "targetLocaleCodes": { "type": "array", "description": "This determines the language used in the processed output. See the usage notes for more about [the supported languages](https://developer.adobe.com/audio-video-firefly-services/getting-started/usage/#language-support).", "items": { "$ref": "#/components/schemas/TargetLocaleCodes" } }, "captions": { "$ref": "#/components/schemas/Captions", "description": "Details to generate captions." } }, "description": "Transcribe request body." }, "TranscribeAudioInput": { "type": "object", "properties": { "audio": { "$ref": "#/components/schemas/AudioInput" } }, "required": [ "audio" ], "description": "The request body for transcribing audio." }, "TranscribeVideoInput": { "type": "object", "properties": { "video": { "$ref": "#/components/schemas/VideoInput" } }, "required": [ "video" ], "description": "The request body for transcribing video." }, "Captions": { "type": "object", "properties": { "targetFormats": { "type": "array", "items": { "$ref": "#/components/schemas/TargetCaptionFormats" }, "description": "Accepted values: ['SRT']" } } }, "Source": { "type": "object", "properties": { "url": { "type": "string", "format": "uri", "description": "The pre-signed URL pointing to the input source." } }, "required": [ "url" ], "description": "Source details including a pre-signed URL for accessing the input media. See the [list of allowed domains for storage](https://developer.adobe.com/audio-video-firefly-services/getting-started/storage-solutions/)." }, "Destination": { "type": "object", "properties": { "url": { "type": "string", "format": "uri", "description": "The pre-signed URL pointing to the output destination." } }, "required": [ "url" ], "description": "Destination details including a pre-signed URL for the output media." }, "DubRequest": { "type": "object", "oneOf": [ { "$ref": "#/components/schemas/DubAudioRequest" }, { "$ref": "#/components/schemas/DubVideoRequest" } ], "description": "The dub request body." }, "DubAudioRequest": { "type": "object", "title": "Audio dub request", "properties": { "targetLocaleCodes": { "type": "array", "items": { "$ref": "#/components/schemas/TargetLocaleCodes" }, "description": "This determines the language used in the processed output. See the usage notes for more about [the supported languages](https://developer.adobe.com/audio-video-firefly-services/getting-started/usage/#language-support)." }, "transcripts": { "type": "array", "items": { "$ref": "#/components/schemas/TranscriptInput" } }, "audio": { "$ref": "#/components/schemas/AudioInput" } }, "required": [ "audio" ], "description": "The audio dub request body." }, "DubVideoRequest": { "type": "object", "title": "Video dub request", "properties": { "targetLocaleCodes": { "type": "array", "items": { "$ref": "#/components/schemas/TargetLocaleCodes" }, "description": "This determines the language used in the processed output. See the usage notes for more about [the supported languages](https://developer.adobe.com/audio-video-firefly-services/getting-started/usage/#language-support)." }, "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." }, "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." }, "FireflyJobApiResponseStatus": { "type": "string", "enum": [ "pending", "running", "failed", "succeeded" ], "description": "Status of the job." }, "FireflyJobResponse": { "type": "object", "description": "Firefly job response.", "oneOf": [ { "$ref": "#/components/schemas/FireflyJobApiResponse" }, { "$ref": "#/components/schemas/FireflyJobErrorResponse" } ] }, "FireflyJobApiResponse": { "type": "object", "description": "Firefly job success response.", "properties": { "status": { "$ref": "#/components/schemas/FireflyJobApiResponseStatus" }, "jobId": { "type": "string", "description": "Associated job ID." }, "outputs": { "description": "Job response details.", "type": "array", "items": { "oneOf": [ { "$ref": "#/components/schemas/DubJobResponse" }, { "$ref": "#/components/schemas/TranscribeOutput" } ] } } }, "required": [ "jobId", "status" ] }, "FireflyJobErrorResponse": { "type": "object", "description": "Firefly job error response.", "properties": { "status": { "$ref": "#/components/schemas/FireflyJobApiResponseStatus" }, "jobId": { "type": "string", "description": "Associated job ID." }, "message": { "type": "string", "description": "The error message." }, "error_code": { "type": "string", "description": "Associated error code." } }, "required": [ "jobId", "status" ] }, "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" ] }, "TranscribeOutput": { "type": "array", "description": "Transcribe success response", "items": { "type": "object", "properties": { "destination": { "$ref": "#/components/schemas/Destination" }, "captions": { "$ref": "#/components/schemas/CaptionOutput" }, "localeCode": { "$ref": "#/components/schemas/TargetLocaleCodes" } } } }, "CaptionOutput": { "type": "array", "description": "Captions output", "items": { "type": "object", "properties": { "destination": { "$ref": "#/components/schemas/Destination" }, "format": { "type": "string", "$ref": "#/components/schemas/TargetCaptionFormats", "description": "Format of the caption" } } } }, "DubJobResponse": { "type": "object", "description": "Dubbing success response", "oneOf": [ { "$ref": "#/components/schemas/DubSuccess" }, { "$ref": "#/components/schemas/DubPartialFailure" } ] }, "DubSuccess": { "type": "object", "description": "Dubbing success", "properties": { "audioOutput": { "$ref": "#/components/schemas/AudioOutput" }, "videoOutput": { "$ref": "#/components/schemas/VideoOutput" }, "transcriptOutput": { "$ref": "#/components/schemas/TranscribeOutput" } } }, "AudioOutputMediaType": { "type": "string", "enum": [ "audio/wav" ], "description": "Media type of the audio output." }, "VideoOutputMediaType": { "type": "string", "enum": [ "video/mp4", "video/mov" ], "description": "Media type of the video output." }, "AudioOutput": { "type": "object", "description": "Audio output in dubbing response.", "properties": { "mediaType": { "$ref": "#/components/schemas/AudioOutputMediaType" }, "destination": { "$ref": "#/components/schemas/Destination" } } }, "VideoOutput": { "type": "object", "description": "Video output in dubbing response.", "properties": { "mediaType": { "$ref": "#/components/schemas/VideoOutputMediaType" }, "destination": { "$ref": "#/components/schemas/Destination" } } }, "DubPartialFailure": { "type": "object", "description": "Dubbing failure for specific language.", "properties": { "error": { "$ref": "#/components/schemas/ErrorBody" } } }, "TranscriptInput": { "type": "object", "properties": { "source": { "$ref": "#/components/schemas/Source", "description": "The pre-signed URL to download the translated/edited transcripts. See the [list of allowed domains for storage](https://developer.adobe.com/audio-video-firefly-services/getting-started/storage-solutions/)." } }, "required": [ "source" ], "description": "Transcript input details for a transcribe request." }, "TargetLocaleCodes": { "type": "string", "description": "Locale code for dubbing target.", "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" ] }, "TargetCaptionFormats": { "type": "string", "description": "Target caption format.", "enum": [ "SRT" ] }, "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." }, "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." }, "AudioInputMediaType": { "type": "string", "description": "Media type of the audio input.", "enum": [ "audio/mp3", "audio/wav", "audio/mpeg", "audio/x-m4a", "audio/aac" ] }, "VideoInputMediaType": { "type": "string", "description": "Media type of the video input.", "enum": [ "video/mp4", "video/mov", "video/quicktime", "video/x-msvideo", "video/x-matroska" ] }, "VideoInputV2": { "type": "object", "properties": { "source": { "type": "object", "properties": { "url": { "type": "string", "format": "uri", "description": "The pre-signed URL pointing to the input source." } }, "required": [ "url" ], "description": "Details of the source including a pre-signed URL. See the [list of allowed domains for storage](https://developer.adobe.com/audio-video-firefly-services/getting-started/storage-solutions/)." } }, "required": [ "source" ], "description": "Video input details for generate reframed video request." }, "AnalysisV2": { "type": "object", "properties": { "sceneEditDetection": { "type": "boolean", "default": true, "description": "Applies scene edit detection before reframing." }, "focalPoints": { "type": "array", "items": { "type": "string", "maxLength": 1000, "pattern": "^[a-zA-Z0-9\\s\\-_]+$", "description": "Focal point keyword to utilize Semantic Subject Lock. Must be alphanumeric characters, spaces, hyphens, or underscores only. Maximum 1000 characters per keyword." }, "maxItems": 10, "description": "Array of focal point keyword identifiers for reframing. Up to 10 keywords are allowed. Keywords must be alphanumeric characters, spaces, hyphens, or underscores only, with a maximum of 1000 characters per keyword.", "default": [], "externalDocs": { "description": "See documentation for Semantic Subject Lock.", "url": "https://developer.adobe.com/reframev2/getting-started/semantic-search/" } } }, "description": "Analysis configuration for the video processing." }, "OverlayV2": { "type": "object", "properties": { "source": { "$ref": "#/components/schemas/Source" }, "startTime": { "type": "string", "format": "HH:MM:SS:FRAME_NUMBER", "description": "Start time for the overlay in the format HH:MM:SS:FF." }, "duration": { "type": "string", "format": "HH:MM:SS:FRAME_NUMBER", "description": "Duration of the overlay in the format HH:MM:SS:FF." }, "scale": { "$ref": "#/components/schemas/ScaleV2" }, "position": { "$ref": "#/components/schemas/PositionV2" }, "repeat": { "oneOf": [ { "type": "null" }, { "$ref": "#/components/schemas/RepeatV2" } ], "description": "Repeat behavior for GIF overlay (optional)." } } }, "PositionV2": { "type": "object", "description": "Position configuration for overlay placement.", "properties": { "anchorPoint": { "type": "string", "enum": [ "top_left", "top_right", "bottom_left", "bottom_right", "center" ], "description": "Anchor point for taking the position reference." }, "offsetX": { "type": [ "integer", "null" ], "description": "Horizontal offset for the anchor point." }, "offsetY": { "type": [ "integer", "null" ], "description": "Vertical offset for the anchor point." } } }, "RepeatV2": { "type": "string", "enum": [ "stop_on_last_frame", "loop", "time_stretch" ], "description": "Defines the repeat behavior of the overlay." }, "ScaleV2": { "type": "object", "description": "Scale configuration for overlay dimensions.", "properties": { "width": { "type": "integer", "description": "The width of the scaled overlay." }, "height": { "type": "integer", "description": "The height of the scaled overlay." } } }, "AspectRatioV2": { "type": "object", "description": "Aspect ratio specification for video output.", "properties": { "x": { "type": "integer", "description": "AspectRatio x ratio." }, "y": { "type": "integer", "description": "AspectRatio y ratio." } }, "required": [ "x", "y" ] }, "OutputFormatV2": { "type": "object", "default": "source", "properties": { "media": { "type": "string", "enum": [ "none", "mp4", "mov", "source" ], "description": "Media format for the output video. If only the OTIO file is needed, set this as `none`." }, "sidecar": { "type": "string", "enum": [ "json", "otio" ], "description": "Sidecar format for additional metadata." } }, "description": "Output format configuration. A media property is mandatory when this format object is specified.", "required": [ "media", "sidecar" ] }, "CompositionV2": { "type": "object", "properties": { "overlays": { "type": "array", "items": { "$ref": "#/components/schemas/OverlayV2" }, "description": "List of overlays to be composed on the video." } }, "description": "Configuration for composing elements on the video." }, "CancelJobResponse": { "type": "object", "description": "Response body for a successful cancel request. May be empty per the Adobe Style Guide.", "properties": {} }, "PagingInfo": { "type": "object", "description": "Pagination metadata returned by list endpoints.", "properties": { "nextUrl": { "type": "string", "format": "uri", "description": "URL for the next page of results. Omitted on the last page; its absence signals the end of the result set." }, "totalRecords": { "type": "integer", "description": "Total number of records matching the query (may be approximate for large sets)." } } }, "JobListItem": { "type": "object", "required": [ "jobId", "status" ], "description": "Summary of a single render job in the list response.", "properties": { "jobId": { "type": "string", "format": "uuid", "description": "Unique identifier for the job." }, "status": { "type": "string", "enum": [ "not_started", "running", "succeeded", "partially_succeeded", "failed", "canceled" ], "description": "Current status of the job." }, "statusUrl": { "type": "string", "format": "uri", "description": "URL to query the full job status and result." }, "cancelUrl": { "type": "string", "format": "uri", "description": "URL to cancel this job. Only present for jobs in a non-terminal state." }, "createdAt": { "type": "string", "format": "date-time", "description": "ISO 8601 timestamp when the job was created." } } }, "ListJobsResponse": { "type": "object", "required": [ "jobs" ], "description": "Paginated list of render jobs owned by the caller.", "properties": { "jobs": { "type": "array", "description": "Array of job summaries for the current page.", "items": { "$ref": "#/components/schemas/JobListItem" } }, "paging": { "$ref": "#/components/schemas/PagingInfo" } } } }, "examples": { "TextInputForSpeechGeneration": { "summary": "Generate speech using plain text", "value": { "script": { "text": "", "mediaType": "text/plain", "localeCode": "en-US" }, "voiceId": "", "output": { "mediaType": "audio/wav" } } }, "URLInputForSpeechGeneration": { "summary": "Generate speech using text file", "value": { "script": { "source": { "url": "" }, "mediaType": "text/plain", "localeCode": "en-US" }, "voiceId": "", "output": { "mediaType": "audio/wav" } } }, "SuccessfulVoicesResponse": { "summary": "Successful response with voices details", "value": { "voices": [ { "voiceId": "v123", "displayName": "John Doe", "gender": "M", "style": "Professional", "voiceType": "Nurse", "status": "Active", "extendedPropertyMap": {}, "wordsPerMinute": "100", "rolePlayList": [], "sampleURL": "" } ] } }, "SuccessfulAvatarsResponse": { "summary": "Successful response with avatars details", "value": { "avatars": [ { "avatarId": "a321", "displayName": "Alice", "gender": "F", "clothingStyle": "Formal", "ageGroup": "Young Adult", "ethnicity": "Caucasian", "status": "Active", "style": "Doctor", "extendedPropertyMap": { "aspectRatio": { "x": 16, "y": 9 }, "resolution": { "width": 1920, "height": 1080 } }, "thumbnailUrls": { "hd": "", "lowRes": "" }, "voiceId": "v321", "sampleVideo": { "webm": "", "mp4": "" } } ] } }, "SubmitRequestResponse": { "summary": "Successful response with job details", "value": { "jobId": "string", "statusUrl": "string" } }, "BadRequestError": { "summary": "Bad Request", "value": { "error_code": "invalid_json", "message": "Invalid request. Please check the input data." } }, "ErrorBodyUnauthorized": { "summary": "Invalid Token", "value": { "error_code": "401013", "message": "Oauth token is not valid" } }, "ErrorBodyAccessDenied": { "summary": "Access Denied", "value": { "error_code": "unauthorized_forbidden", "message": "Access Denied: You do not have the necessary permissions to access this resource" } }, "ErrorBodyForbidden": { "summary": "Api Key is required", "value": { "error_code": "403000", "message": "Api Key is required" } }, "ErrorBodyAPIKeyInvalid": { "summary": "Api Key is invalid", "value": { "error_code": "403003", "message": "Api Key is invalid" } }, "UserNotEntitledError": { "summary": "User Not Entitled", "value": { "error_code": "user_not_entitled", "message": "User not entitled: You do not have the entitlement to perform this operation." } }, "QuotaExceededError": { "summary": "Quota Exceeded", "value": { "error_code": "quota_exhausted", "message": "Quota exceeded: You have reached the maximum allowed usage for this service." } }, "UserProfileDeniedError": { "summary": "User Profile Denied", "value": { "error_code": "user_profile_denied", "message": "User profile denied: Your profile does not meet the requirements for this action." } }, "UserBlockedError": { "summary": "User Blocked By Admin", "value": { "error_code": "user_blocked_by_admin", "message": "Access blocked: Your account has been blocked by an administrator." } }, "InvalidSubscriptionError": { "summary": "Invalid Subscription", "value": { "error_code": "invalid_subscription", "message": "Invalid subscription: Your subscription does not cover this service or feature." } }, "ViolationError": { "summary": "User Blocked Due To Violation", "value": { "error_code": "user_blocked_due_to_violation", "message": "Account blocked: Your account has been blocked due to a violation of terms." } }, "TasteExhaustedError": { "summary": "Taste Exhausted", "value": { "error_code": "taste_exhausted", "message": "Unauthorized: Limited taste for user is exhausted." } }, "AccessError": { "summary": "Access Error", "value": { "error_code": "access_error", "message": "Token not allowed in the current context" } }, "ErrorBodyResourceNotFound": { "summary": "Not Found", "value": { "error_code": "unknown_job_id", "message": "The requested resource was not found." } }, "InvalidInputErrorExample": { "summary": "Invalid Input", "value": { "error_code": "validation_error", "message": "The request could not be processed due to invalid input" } }, "MissingInputFileUrlErrorExample": { "summary": "Missing Input URL", "value": { "error_code": "validation_error", "message": "Missing input file URL" } }, "InvalidInputUrlErrorExample": { "summary": "Invalid Input URL", "value": { "error_code": "validation_error", "message": "Invalid input 'url' specified" } }, "InputFileFormatValidationErrorExample": { "summary": "Invalid Input Format", "value": { "error_code": "validation_error", "message": "Input file format is not supported" } }, "MissingScriptErrorExample": { "summary": "Missing Input Script", "value": { "error_code": "validation_error", "message": "Script missing in the payload" } }, "EmptyTextForScriptErrorExample": { "summary": "Empty Input Text", "value": { "error_code": "validation_error", "message": "The provided 'text' is empty" } }, "TextLengthExceededForScriptErrorExample": { "summary": "Input Text Too Long", "value": { "error_code": "validation_error", "message": "Input text has more than 20000 characters" } }, "TextLengthTooShortForScriptErrorExample": { "summary": "Input Text Too Short", "value": { "error_code": "validation_error", "message": "Input text has less than 15 characters" } }, "ScriptInvalidASCIIRange": { "summary": "Non-ASCII Input Text", "value": { "error_code": "validation_error", "message": "Input contains unsupported characters. Please use only ASCII or extended ASCII." } }, "ScriptInvalidTextSupportedRange": { "summary": "Invalid Input Text", "value": { "error_code": "validation_error", "message": "Input contains unsupported characters. Please remove any Emojis or Symbols" } }, "InvalidOrMissingLocaleCodeForScriptErrorExample": { "summary": "Invalid Source Locale", "value": { "error_code": "validation_error", "message": "Invalid source locale code specified" } }, "MissingMediaTypeForScriptErrorExample": { "summary": "Missing Script Mediatype", "value": { "error_code": "validation_error", "message": "Missing script 'mediaType' in the payload" } }, "MediatypeIncompatibleForText": { "summary": "Invalid Script Mediatype", "value": { "error_code": "validation_error", "message": "Provided text format is not valid for input mediaType" } }, "MissingSourceLocaleErrorExample": { "summary": "Missing Source Locale", "value": { "error_code": "validation_error", "message": "Source locale missing in payload" } }, "SourceUrlSourceTextConflictErrorExample": { "summary": "Both URL and Text", "value": { "error_code": "validation_error", "message": "Both source url and source text is present in the request" } }, "UnsupportedVoiceIdErrorExample": { "summary": "Invalid Voice ID", "value": { "error_code": "validation_error", "message": "The requested 'voiceId' is not supported" } }, "MissingVoiceIdErrorExample": { "summary": "Missing Voice ID", "value": { "error_code": "validation_error", "message": "Missing 'voiceId' in the payload" } }, "MissingOutputErrorExample": { "summary": "Missing Output Config", "value": { "error_code": "validation_error", "message": "Missing 'output' field in the payload" } }, "MissingMediaTypeForOutputErrorExample": { "summary": "Missing Output Mediatype", "value": { "error_code": "validation_error", "message": "Missing output 'mediaType' in payload" } }, "InvalidOutputFileFormatErrorExample": { "summary": "Invalid Output Format", "value": { "error_code": "validation_error", "message": "Output file format is not valid" } }, "InvalidRequestPayloadErrorExample": { "summary": "Invalid TTS Request", "value": { "error_code": "validation_error", "message": "Text to speech service marked this request as invalid" } }, "InputScriptAudioConflictErrorExample": { "summary": "Both Script and Audio", "value": { "error_code": "validation_error", "message": "Must specify either script or audio, not both" } }, "InputScriptAudioMissingErrorExample": { "summary": "None of Script or Audio", "value": { "error_code": "validation_error", "message": "Must specify either script or audio, both cannot be empty" } }, "InputScriptAudioMissingOrInvalidErrorExample": { "summary": "None of Text or URL", "value": { "error_code": "validation_error", "message": "Provide non-empty text in 'script' or a valid URL in 'source'" } }, "InvalidOrMissingAudioUrlErrorExample": { "summary": "Invalid Audio URL", "value": { "error_code": "validation_error", "message": "Invalid or missing 'url' specified in audio" } }, "MissingAudioSourceErrorExample": { "summary": "Missing Audio Source", "value": { "error_code": "validation_error", "message": "Audio source missing in payload" } }, "MissingAvatarIdErrorExample": { "summary": "Missing Avatar ID", "value": { "error_code": "validation_error", "message": "The 'avatarId' property is required" } }, "UnsupportedAvatarIdErrorExample": { "summary": "Invalid Avatar ID", "value": { "error_code": "validation_error", "message": "The requested 'avatarId' is not supported" } }, "MissingBackgroundUrlErrorExample": { "summary": "Missing Background URL", "value": { "error_code": "validation_error", "message": "Background URL must be specified for type 'video' or 'image'" } }, "MissingBackgroundTypeErrorExample": { "summary": "Missing Background Type", "value": { "error_code": "validation_error", "message": "Background type must be set to one of the following: 'image', 'video', 'color', or 'transparent'." } }, "InvalidBackgroundUrlErrorExample": { "summary": "Invalid Background URL", "value": { "error_code": "validation_error", "message": "Invalid 'url' specified in background" } }, "BackgroundSourceColorConflictErrorExample": { "summary": "Both Background Source and Color", "value": { "error_code": "validation_error", "message": "Must specify either background source or color, not both" } }, "BackgroundSourceColorMissingErrorExample": { "summary": "None of Background Source or Color", "value": { "error_code": "validation_error", "message": "Must specify either background source or color, both cannot be empty" } }, "InvalidBackgroundColorErrorExample": { "summary": "Invalid Background Color", "value": { "error_code": "validation_error", "message": "Invalid 'color' specified in background" } }, "MissingBackgroundColorErrorExample": { "summary": "Missing Background Color", "value": { "error_code": "validation_error", "message": "Background color must be specified for type 'color'" } }, "BackgroundInvalidFormat": { "summary": "Invalid Background Type", "value": { "error_code": "validation_error", "message": "Transparent background is not supported" } }, "BackgroundIncompatibleWithFormat": { "summary": "Incompatible Background Type", "value": { "error_code": "validation_error", "message": "Transparent background is only supported for 'video/webm' output file format" } }, "FormatIncompatibleWithBackground": { "summary": "Incompatible Output Format", "value": { "error_code": "validation_error", "message": "The 'video/webm' output format can only be used when the background type is 'transparent'" } }, "UnsupportedOutputResolution": { "summary": "Invalid Output Resolution", "value": { "error_code": "validation_error", "message": "Unsupported resolution specified in output. Accepted values are [1920x1080, 3840x2160]" } }, "UnsupportedShotTypeErrorExample": { "summary": "Invalid Shot Type", "value": { "error_code": "validation_error", "message": "Shot Type is not supported." } }, "InvalidSourceUrlErrorExample": { "summary": "Invalid Source URL", "value": { "error_code": "validation_error", "message": "Invalid source url specified" } }, "IncorrectVoiceNameErrorExample": { "summary": "Invalid Voice Name", "value": { "error_code": "validation_error", "message": "The provided `voice name` is incorrect in the script text" } }, "ErrorBodyTooManyRequests": { "summary": "Too many requests", "value": { "error_code": "429050", "message": "Too many requests" } }, "ErrorBodyRateLimited": { "summary": "Rate Limited", "value": { "error_code": "rate_limited", "message": "Too many requests received" } }, "ErrorBodyLegalReasons": { "summary": "Legal Restrictions", "value": { "error_code": "unauthorized_legal_reasons", "message": "Unauthorized access: Legal restrictions prevent you from accessing this resource." } }, "RunTimeError": { "summary": "Internal Server Error", "value": { "error_code": "runtime_error", "message": "Internal Server Error" } }, "TEXT_TO_SPEECH_ENTITY_CREATION_ERROR": { "summary": "Internal Server Error during Entity Creation", "value": { "error_code": "runtime_error", "message": "Internal Server Error while creating text to speech request" } }, "TEXT_TO_SPEECH_SERVICE_SUBMIT_ERROR": { "summary": "Internal Server Error during Submit", "value": { "error_code": "runtime_error", "message": "Internal Server Error while submitting text to speech request" } }, "TTSRuntimeError": { "summary": "Error Handling Response", "value": { "error_code": "runtime_error", "message": "Internal Server Error while receiving or handling response" } }, "TTSEntityCreationError": { "summary": "Error Processing Request", "value": { "error_code": "runtime_error", "message": "Internal Server Error while creating text to speech request" } }, "TTSServiceSubmitError": { "summary": "Error Submitting Request", "value": { "error_code": "runtime_error", "message": "Internal Server Error while submitting text to speech request" } }, "PlainTextInputForAvatarGeneration": { "summary": "Generate avatar using plain text", "value": { "script": { "text": "", "mediaType": "text/plain", "localeCode": "en-US" }, "voiceId": "", "avatarId": "", "output": { "mediaType": "video/mp4" } } }, "PlainTextInputForAvatarGenerationUsingVideoBackground": { "summary": "Generate avatar using plain text and video background", "value": { "script": { "text": "", "mediaType": "text/plain", "localeCode": "en-US" }, "voiceId": "", "avatarId": "", "output": { "mediaType": "video/mp4", "background": { "type": "video", "source": { "url": "" } } } } }, "PlainTextInputForAvatarGenerationUsingImageBackground": { "summary": "Generate avatar using plain text and image background", "value": { "script": { "text": "", "mediaType": "text/plain", "localeCode": "en-US" }, "voiceId": "", "avatarId": "", "output": { "mediaType": "video/mp4", "background": { "type": "image", "source": { "url": "" } } } } }, "PlainTextInputForAvatarGenerationUsingColorBackground": { "summary": "Generate avatar using plain text and color background", "value": { "script": { "text": "", "mediaType": "text/plain", "localeCode": "en-US" }, "voiceId": "", "avatarId": "", "output": { "mediaType": "video/mp4", "background": { "type": "color", "color": "#FFF000" } } } }, "URLTextInputForAvatarGeneration": { "summary": "Generate avatar using text file", "value": { "script": { "source": { "url": "" }, "mediaType": "text/plain", "localeCode": "en-US" }, "voiceId": "", "avatarId": "", "output": { "mediaType": "video/mp4" } } }, "URLInputForAvatarGeneration": { "summary": "Generate avatar using audio file", "value": { "audio": { "source": { "url": "" }, "mediaType": "audio/wav", "localeCode": "en-US" }, "avatarId": "", "output": { "mediaType": "video/mp4" } } }, "StatusApiInProgressRequestResponse": { "summary": "Inprogress response with job details", "value": { "jobId": "string", "status": "running" } }, "StatusApiSuccessRequestResponse": { "summary": "Success response with job details", "value": { "jobId": "string", "status": "succeeded", "output": { "destination": { "url": "string" } } } }, "StatusAPIFailedInputFileDownloadResponse": { "summary": "Failed Input Download", "value": { "jobId": "string", "status": "failed", "error_code": "resource_not_found", "message": "Failed to download input file" } }, "StatusAPIFailedUnsafeScriptResponse": { "summary": "Unsafe Script", "value": { "jobId": "string", "status": "failed", "error_code": "validation_error", "message": "The provided prompt is considered unsafe and it cannot be used to generate content" } }, "StatusAPIFailedBackgroundFileResponse": { "summary": "Failed Background File Download", "value": { "error_code": "validation_error", "message": "Error while downloading file from Background URL" } }, "DentroCheckFailedResponse": { "summary": "Error Processing Unsafe Prompt", "value": { "jobId": "string", "status": "failed", "error_code": "validation_error", "message": "The provided prompt is considered unsafe and it cannot be used to generate content." } }, "MISSING_PARAMS_IN_CROP_AREA": { "summary": "Missing params in crop area", "value": { "error_code": "validation_error", "message": "Missing params in crop area" } }, "INVALID_CROP_AREA_PARAMS": { "summary": "Invalid value in crop area", "value": { "error_code": "validation_error", "message": "Invalid value in crop area params" } }, "CROP_AREA_ASPECT_RATIO_NOT_SUPPORTED": { "summary": "Aspect ratio in Crop", "value": { "error_code": "validation_error", "message": " Aspect ratio 16:9 is not maintained in crop width*height" } }, "CROP_AREA_UNSUPPORTED_FOR_NON_IMAGE_VIDEO_BACKGROUND": { "summary": "Crop area support", "value": { "error_code": "validation_error", "message": "Crop area supported only for image and video background" } }, "StatusAPIFailedBackgroundResolutionErrorResponse": { "summary": "Error in Background Resolution", "value": { "jobId": "string", "status": "failed", "error_code": "validation_error", "message": "Background asset resolution should be greater than 640x360" } }, "StatusAPIFailedCropAreaErrorResponse": { "summary": "Error in Crop Area", "value": { "jobId": "string", "status": "failed", "error_code": "validation_error", "message": "Crop Area is going out of bounds" } }, "StatusAPIFailedBackgroundCropErrorResponse": { "summary": "Error in Background Aspect Ratio", "value": { "jobId": "string", "status": "failed", "error_code": "validation_error", "message": " Image background asset should be 16:9 aspect ratio, please provide crop the media and then send" } }, "StatusAPIFailedMediatypeMismatchResponse": { "summary": "Invalid Input Mediatype", "value": { "jobId": "string", "status": "failed", "error_code": "validation_error", "message": "Provided input mediaType should match the type of source media" } }, "StatusAPIFailedUnsupportedBackgroundResponse": { "summary": "Unsupported Background File Type", "value": { "jobId": "string", "status": "failed", "error_code": "validation_error", "message": "Unsupported file type for background" } }, "StatusAPIFailedBackgroundResolutionMismatchResponse": { "summary": "Unsupported Background Resolution", "value": { "jobId": "string", "status": "failed", "error_code": "validation_error", "message": "Background asset resolution should match output background resolution (with default value 1920x1080)" } }, "StatusAPIFailedDurationTooLongResponse": { "summary": "Unsupported Audio Duration", "value": { "jobId": "string", "status": "failed", "error_code": "validation_error", "message": "Audio duration should be less than 30 mins" } }, "StatusAPIFailedCAISigningResponse": { "summary": "CAI Signing Failed", "value": { "jobId": "string", "status": "failed", "error_code": "runtime_error", "message": "CAI Signing Failed" } }, "StatusAPIFailedUploadErrorResponse": { "summary": "Failed Output Upload", "value": { "jobId": "string", "status": "failed", "error_code": "runtime_error", "message": "Unable to upload the output" } }, "StatusAPIFailedDownloadErrorResponse": { "summary": "Failed Stock Media Download", "value": { "jobId": "string", "status": "failed", "error_code": "runtime_error", "message": "Unable to download stock media" } }, "StatusAPIFailedTTSErrorResponse": { "summary": "Error in TTS", "value": { "jobId": "string", "status": "failed", "error_code": "runtime_error", "message": "Run time error in tts" } }, "StatusAPIFailedAvatarErrorResponse": { "summary": "Error in Avatar", "value": { "jobId": "string", "status": "failed", "error_code": "runtime_error", "message": "Run time error in avatar" } }, "StatusAPIFailedLipsyncErrorResponse": { "summary": "Error in lip sync", "value": { "jobId": "string", "status": "failed", "error_code": "runtime_error", "message": "Validation failure in Lipsync Pipeline" } }, "StatusAPIFailedFFMpegErrorResponse": { "summary": "Error in FFMpeg", "value": { "jobId": "string", "status": "failed", "error_code": "runtime_error", "message": "Failed in FFmpeg worker" } }, "StatusAPIFailedLipsyncPollingErrorResponse": { "summary": "Error polling for lip sync", "value": { "jobId": "string", "status": "failed", "error_code": "runtime_error", "message": "Failed while polling for Lipsync" } }, "StatusAPIFailedMediaTrimErrorResponse": { "summary": "Error Processing Avatar Video", "value": { "jobId": "string", "status": "failed", "error_code": "runtime_error", "message": "Error while triming avatar video" } }, "StatusAPIFailedMediaTrimAlphaErrorResponse": { "summary": "Error Processing Avatar Alpha Video", "value": { "jobId": "string", "status": "failed", "error_code": "runtime_error", "message": "Error while triming avatar alpha video" } }, "StatusAPIFailedConfigDownloadResponse": { "summary": "Error Processing Avatar Config", "value": { "jobId": "string", "status": "failed", "error_code": "runtime_error", "message": "Error while downloading actor config file" } }, "StatusAPIFailedInternalErrorResponse": { "summary": "Error Processing Response", "value": { "jobId": "string", "status": "failed", "error_code": "runtime_error", "message": "Internal Server Error while receiving or handling response" } }, "StatusAPIFailedTTSInternalErrorResponse": { "summary": "Error Getting Status", "value": { "jobId": "string", "status": "failed", "error_code": "runtime_error", "message": "Internal Server Error while getting text to speech request status" } }, "StudioAPIFailedEntitiesErrorResponse": { "summary": "Error Fetching Entities", "value": { "error_code": "runtime_error", "message": "Error while fetching available entities" } }, "ErrorBodyBadRequest": { "summary": "Bad Request", "value": { "error_code": "bad_request", "message": "The request was invalid or cannot be served." } }, "ErrorBodyMethodNotAllowed": { "summary": "Method Not Allowed", "value": { "error_code": "method_not_allowed", "message": "The HTTP method is not supported for this endpoint." } }, "ErrorBodyInternalServerError": { "summary": "Internal Server Error", "value": { "error_code": "internal_server_error", "message": "An unexpected error occurred while processing the request." } }, "AudioInputToGenerateTranscriptFromSourceAudio": { "summary": "Generate transcript from source audio", "value": { "audio": { "source": { "url": "" }, "mediaType": "audio/wav" } } }, "AudioInputToGenerateTranscriptFromTargetLanguageAudio": { "summary": "Generate transcript from audio in target language (Spanish)", "value": { "audio": { "source": { "url": "" }, "mediaType": "audio/wav" }, "targetLocaleCodes": [ "es-ES" ] } }, "VideoInputToGenerateTranscriptFromSourceVideo": { "summary": "Generate transcript from source video", "value": { "video": { "source": { "url": "" }, "mediaType": "video/mp4" } } }, "VideoInputToGenerateTranscriptFromTargetLanguageVideo": { "summary": "Generate transcript from video in target language (Spanish)", "value": { "video": { "source": { "url": "" }, "mediaType": "video/mp4" }, "targetLocaleCodes": [ "es-ES" ] } }, "AudioInputToGenerateTranscriptAndCaptionsFromTargetFormatsFromSourceAudio": { "summary": "Generate transcript and captions from source audio", "value": { "audio": { "source": { "url": "" }, "mediaType": "audio/wav" }, "targetLocaleCodes": [ "en-US" ], "captions": { "targetFormats": [ "SRT" ] } } }, "VideoInputToGenerateTranscriptAndCaptionsFromTargetFormatsFromSourceVideo": { "summary": "Generate transcript and captions from source video", "value": { "video": { "source": { "url": "" }, "mediaType": "video/mp4" }, "targetLocaleCodes": [ "en-US" ], "captions": { "targetFormats": [ "SRT" ] } } }, "JobStatusLinkResponse": { "summary": "Job status link response", "value": { "jobId": "", "statusUrl": "https:///v1/status/" } }, "ValidationErrorVideoSourceBlank": { "summary": "Video source blank error", "value": { "error_code": "validation_error", "message": "Video source URL cannot be blank" } }, "ValidationErrorAudioSourceBlank": { "summary": "Audio source blank error", "value": { "error_code": "validation_error", "message": "Audio source URL cannot be blank" } }, "ValidationErrorInputSourceBlank": { "summary": "Input source blank error", "value": { "error_code": "validation_error", "message": "Input source URL cannot be blank" } }, "ValidationErrorVideoAndAudioSimultaneous": { "summary": "Video and audio simultaneous error", "value": { "error_code": "validation_error", "message": "Cannot provide both video and audio input simultaneously" } }, "ValidationErrorVideoInputMediaTypeMissing": { "summary": "Video input media type missing error", "value": { "error_code": "validation_error", "message": "Video input media type is required" } }, "ValidationErrorAudioInputMediaTypeMissing": { "summary": "Audio input media type missing error", "value": { "error_code": "validation_error", "message": "Audio input media type is required" } }, "ValidationErrorSourceUrlEmpty": { "summary": "Source URL empty error", "value": { "error_code": "validation_error", "message": "Source URL cannot be empty" } }, "ValidationErrorInvalidVideoAudioSourceUrl": { "summary": "Invalid video/audio source URL error", "value": { "error_code": "validation_error", "message": "Invalid video/audio source URL format" } }, "ValidationErrorBlankTranscriptSourceField": { "summary": "Blank transcript source field error", "value": { "error_code": "validation_error", "message": "Transcript source field cannot be blank" } }, "ValidationErrorInvalidTranscriptUrl": { "summary": "Invalid transcript URL error", "value": { "error_code": "validation_error", "message": "Invalid transcript URL format" } }, "ValidationErrorUnsupportedVideoMediaType": { "summary": "Unsupported video media type error", "value": { "error_code": "validation_error", "message": "Unsupported video media type" } }, "ValidationErrorUnsupportedAudioMediaType": { "summary": "Unsupported audio media type error", "value": { "error_code": "validation_error", "message": "Unsupported audio media type" } }, "ValidationErrorUnsupportedTargetLocaleCode": { "summary": "Unsupported target locale code error", "value": { "error_code": "validation_error", "message": "Unsupported target locale code" } }, "ValidationErrorBlankTargetLocaleCode": { "summary": "Blank target locale code error", "value": { "error_code": "validation_error", "message": "Target locale code cannot be blank" } }, "ValidationErrorMissingTargetLocaleCode": { "summary": "Missing target locale code error", "value": { "error_code": "validation_error", "message": "Target locale code is required" } }, "ValidationErrorLocaleCodeNotRequiredForEditedTranscript": { "summary": "Locale code not required for edited transcript error", "value": { "error_code": "validation_error", "message": "Locale code is not required for edited transcript" } }, "ValidationErrorEitherTargetLocaleCodesOrTranscriptionRequired": { "summary": "Either target locale codes or transcription required error", "value": { "error_code": "validation_error", "message": "Either target locale codes or transcription is required" } }, "ValidationErrorCaptionGenerationNotSupportedWithTranslation": { "summary": "Caption generation not supported with translation error", "value": { "error_code": "validation_error", "message": "Caption generation is not supported with translation" } }, "DubRequestUsingAutoTranslatedTranscripts": { "summary": "Dub request using auto-translated transcripts", "value": { "video": { "source": { "url": "" }, "mediaType": "video/mp4" }, "targetLocaleCodes": [ "es-ES" ], "lipSync": true } }, "DubRequestUsingAudioAutoTranslatedTranscripts": { "summary": "Dub request using audio auto-translated transcripts", "value": { "audio": { "source": { "url": "" }, "mediaType": "audio/wav" }, "targetLocaleCodes": [ "es-ES" ] } }, "DubRequestUsingEditedSourceTranscript": { "summary": "Dub request using edited source transcript", "value": { "video": { "source": { "url": "" }, "mediaType": "video/mp4" }, "transcripts": [ { "source": { "url": "" } } ], "targetLocaleCodes": [ "es-ES" ], "lipSync": true } }, "DubRequestUsingAudioEditedSourceTranscript": { "summary": "Dub request using audio edited source transcript", "value": { "audio": { "source": { "url": "" }, "mediaType": "audio/wav" }, "transcripts": [ { "source": { "url": "" } } ], "targetLocaleCodes": [ "es-ES" ] } }, "DubRequestUsingEditedTranslatedTranscript": { "summary": "Dub request using edited translated transcript", "value": { "video": { "source": { "url": "" }, "mediaType": "video/mp4" }, "transcripts": [ { "source": { "url": "" } } ], "lipSync": true } }, "DubRequestUsingAudioEditedTranslatedTranscript": { "summary": "Dub request using audio edited translated transcript", "value": { "audio": { "source": { "url": "" }, "mediaType": "audio/wav" }, "transcripts": [ { "source": { "url": "" } } ] } }, "PresetsResponse": { "summary": "List of supported presets", "value": { "items": [ { "presetId": "ffs_video_api_land_1080p_hq", "label": "Landscape 1920\u00d71080 \u2013 HQ", "mediaType": "video/mp4", "codec": "H.264", "maxFps": { "numerator": 30, "denominator": 1 }, "bitrateMode": "vbr", "targetBitrateInKbps": 8000, "maxBitrateInKbps": 12000, "alpha": false, "primaryUsage": "Youtube, Web Promos" }, { "presetId": "ffs_video_api_land_1080p_lq", "label": "Landscape 1920\u00d71080 \u2013 LQ", "mediaType": "video/mp4", "codec": "H.264", "maxFps": { "numerator": 30, "denominator": 1 }, "bitrateMode": "vbr", "targetBitrateInKbps": 6000, "maxBitrateInKbps": 8000, "alpha": false, "primaryUsage": "Previews" }, { "presetId": "ffs_video_api_square_1080p_hq", "label": "Square 1080\u00d71080 \u2013 HQ", "mediaType": "video/mp4", "codec": "H.264", "maxFps": { "numerator": 30, "denominator": 1 }, "bitrateMode": "vbr", "targetBitrateInKbps": 6000, "maxBitrateInKbps": 8000, "alpha": false, "primaryUsage": "IG / FB feed ads, LinkedIn videos, X" }, { "presetId": "ffs_video_api_square_1080p_lq", "label": "Square 1080\u00d71080 \u2013 LQ", "mediaType": "video/mp4", "codec": "H.264", "maxFps": { "numerator": 30, "denominator": 1 }, "bitrateMode": "vbr", "targetBitrateInKbps": 3000, "maxBitrateInKbps": 4000, "alpha": false, "primaryUsage": "Previews" }, { "presetId": "ffs_video_api_vert_1920p_hq", "label": "Vertical 1080\u00d71920 \u2013 HQ", "mediaType": "video/mp4", "codec": "H.264", "profile": "high", "maxFps": { "numerator": 30, "denominator": 1 }, "bitrateMode": "vbr", "targetBitrateInKbps": 6000, "maxBitrateInKbps": 8000, "alpha": false, "primaryUsage": "Reels, TikTok, Snapchat Paid Ads" }, { "presetId": "ffs_video_api_vert_1920p_lq", "label": "Vertical 1080\u00d71920 \u2013 LQ", "mediaType": "video/mp4", "codec": "H.264", "profile": "high", "maxFps": { "numerator": 30, "denominator": 1 }, "bitrateMode": "vbr", "targetBitrateInKbps": 3000, "maxBitrateInKbps": 4000, "alpha": false, "primaryUsage": "Previews" }, { "presetId": "ffs_video_api_prores", "label": "ProRes export preset supporting Alpha channel", "mediaType": "video/quicktime", "codec": "Apple ProRes 4444", "profile": "high", "maxFps": { "numerator": 30, "denominator": 1 }, "bitrateMode": "vbr", "alpha": true, "primaryUsage": "Logo stings, overlay plates, compositing" } ] } }, "DGRJobStatusNotStarted": { "summary": "DGR job not started", "value": { "status": "not_started", "jobId": "" } }, "DGRJobStatusRunning": { "summary": "DGR job running", "value": { "status": "running", "percentCompleted": "55", "jobId": "" } }, "DGRDescribeSuccess": { "summary": "DGR describe template succeeded", "value": { "jobId": "", "status": "succeeded", "output": { "fonts": [ { "name": "FranklinGothicURW-Boo", "uploadRequired": false }, { "name": "", "uploadRequired": true } ], "elements": [ { "type": "mogrt", "controls": [ { "variableId": "", "label": "Headline", "type": "text", "defaultData": { "text": "This is your headline.", "fontName": "FranklinGothicURW-Boo" } }, { "variableId": "", "label": "Show Extra?", "type": "checkbox", "defaultData": { "selectedCheckboxValue": true }, "options": [ true, false ] }, { "variableId": "", "label": "Choices Dropdown", "type": "dropdown", "defaultData": { "selectedDropdownValue": "2" }, "options": { "0": "AAA", "1": "BBB", "2": "CCC", "3": "DDD", "4": "EEE" } }, { "variableId": "", "label": "Size selector", "type": "slider", "defaultData": { "selectedSliderValue": 1 }, "range": { "minimum": 1, "maximum": 5 } }, { "variableId": "", "label": "Logo", "type": "media", "size": { "width": 1344, "height": 768 }, "defaultData": { "scale": "no_scale" }, "possibleScaleValues": [ "no_scale", "fit_to_frame", "stretch_to_fill", "fill_frame" ] }, { "variableId": "", "label": "Mogrt Audio", "type": "audio", "durationInSeconds": 22.3, "possibleAudioPreferences": [ "replace", "mix" ] }, { "label": "Logo comment", "type": "comment", "text": "Add your company logo here." } ] } ] } } }, "DGRRenderSuccessSingle": { "summary": "DGR render succeeded (single output)", "value": { "jobId": "", "status": "succeeded", "outputs": [ { "variationIndex": 0, "presetIndex": 0, "destination": { "url": "https://.mp4" } } ] } }, "DGRRenderSuccessMultiple": { "summary": "DGR render succeeded (multiple outputs)", "value": { "jobId": "", "status": "succeeded", "outputs": [ { "variationIndex": 0, "presetIndex": 0, "destination": { "url": "https://.mp4" } }, { "variationIndex": 0, "presetIndex": 1, "destination": { "url": "https://.mp4" } } ] } }, "DGRRenderPartialSuccess": { "summary": "DGR render partially succeeded", "value": { "jobId": "", "status": "partially_succeeded", "outputs": [ { "variationIndex": 1, "presetIndex": 0, "destination": { "url": "https://.mp4" } } ], "errors": [ { "variationIndex": 0, "presetIndex": 0, "error": { "error_code": "validation_error", "message": "You have exceeded the limit for..." } } ] } }, "DGRRenderSuccessTwoVariations": { "summary": "DGR render succeeded (two variations)", "value": { "jobId": "", "status": "succeeded", "outputs": [ { "variationIndex": 0, "presetIndex": 0, "destination": { "url": "https://.mp4" } }, { "variationIndex": 1, "presetIndex": 0, "destination": { "url": "https://.mp4" } } ] } }, "DGRJobFailed": { "summary": "DGR job failed", "value": { "jobId": "6b77c479-b599-46d3-a6bc-307b5389c105", "status": "failed", "message": "Error extracting definition.json: [Errno 2] No such file or directory: '6b77c479-b599-46d3-a6bc-307b5389c105/template.zip'" } }, "DGRDescribeAEPSuccess": { "summary": "Describe AEP template - succeeded", "value": { "jobId": "", "status": "succeeded", "output": { "fonts": [ { "name": "", "uploadRequired": false }, { "name": "", "uploadRequired": true } ], "elements": [ { "type": "AEP", "controls": [ { "variableId": "", "label": "Subtitle Text", "type": "text", "defaultData": { "text": "Shop for your essential gear", "fontName": "SourceSansPro-Bold" }, "ref": { "compName": "WKND_ProductShowcase_1-1_DGRDemo_Beginner", "layerIndex": 1, "epIndex": 1, "layerPath": "WKND_ProductShowcase_1-1_DGRDemo_Beginner > Outro 1-1 Beginner", "matchName": "ADBE EP Text Document" } }, { "variableId": "", "label": "Border Width", "type": "slider", "defaultData": { "selectedSliderValue": 50 }, "range": { "minimum": 0, "maximum": 100 }, "ref": { "compName": "Outro 1-1 Beginner", "layerIndex": 1, "effectIndex": 1, "layerPath": "WKND_ProductShowcase_1-1_DGRDemo_Beginner > Outro 1-1 Beginner > CONTROLS", "matchName": "ADBE Slider Control" } }, { "variableId": "", "label": "Logo", "type": "media", "size": { "width": 240, "height": 90 }, "possibleScaleValues": [ "no_scale", "fit_to_frame", "stretch_to_fill", "fill_frame" ], "ref": { "compName": "Logo Box", "layerIndex": 2, "layerPath": "WKND_ProductShowcase_1-1_DGRDemo_Beginner > Outro 1-1 Beginner > Logo Box > Logo", "sourceName": "WKND Logo.eps", "matchName": "footage_source" } } ] } ] } } }, "DGRRenderPartialSuccessWithDestination": { "summary": "Render with partial success and custom output destination", "value": { "jobId": "", "status": "partially_succeeded", "outputs": [ { "destination": { "url": "https://mogrt-outputs-prod.s3.amazonaws.com/27776956-d405-4754-97e9-7e9cfd3809af/some_custom_file_name.mp4" }, "variationIndex": 0, "presetIndex": 0 } ], "errors": [ { "variationIndex": 1, "presetIndex": 0, "error": { "error_code": "validation_error", "message": "You have exceeded the limit for the number of variations." } } ] } } } } }