Every API here is available over the APIs.io API and to AI agents over MCP.
{
"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, job status, cancel a render job, and list render jobs. The Cancel (`PUT /v1/cancel/{jobId}`) and List Render Jobs (`GET /v1/templates/render-jobs`) endpoints, as well as the extended status fields (`createdDate`, `totalJobItems`, `retryPayloadUrl`, `startedDate`, `completedDate`, and the `canceling`/`canceled` statuses), apply **only to render jobs** submitted via `POST /v1/templates/render`."
},
{
"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"
},
"DGRDescribeAEPSuccess": {
"$ref": "#/components/examples/DGRDescribeAEPSuccess"
},
"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"
},
"DGRJobCanceled": {
"$ref": "#/components/examples/DGRJobCanceled"
},
"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"
}
}
}
}
},
"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": {
"SampleExample": {
"summary": "MOGRT template",
"value": {
"source": {
"url": "<pre-signed_URL_to_download_the_template>"
}
}
},
"AEPDescribeExample": {
"summary": "After Effects project (AEP)",
"value": {
"type": "aep",
"source": {
"url": "<pre-signed_URL_to_download_the_.zip>"
},
"compName": "A. Variable Duration"
}
}
}
}
}
},
"responses": {
"202": {
"description": "Accepted",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TemplateDescribeResponse"
},
"examples": {
"SuccessResponse": {
"value": {
"jobId": "<job_ID>",
"statusUrl": "https://audio-video-api.adobe.io/v1/status/<job_ID>"
}
}
}
}
},
"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": {
"RenderExample": {
"summary": "Sample render request",
"value": {
"source": {
"url": "<pre-signed mogrt url>"
},
"fonts": [
{
# --- truncated at 32 KB (291 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/adobe-suite/refs/heads/main/openapi/adobe-suite-firefly-audio-video-openapi.json