Adobe Creative Suite · Arazzo Workflow

Adobe Firefly Text-to-Video Generation

Version 1.0.0

Submit a text-to-video Firefly job, poll until it finishes, and return the generated video URLs.

1 workflow 1 source API 1 provider
View Spec View on GitHub CreativeDesignGraphicsPhotographyVideoArazzoWorkflows

Provider

adobe-creative-suite

Workflows

firefly-text-to-video
Generate a video from a text prompt and poll the async job to completion.
Submits a text-to-video generation request to Adobe Firefly, polls the job status until it succeeds or fails, and returns the generated output URLs on success.
4 steps inputs: duration, height, negativePrompt, prompt, width outputs: errors, firstOutputUrl, jobId, outputs
1
submitVideo
generateVideoAsync
Submit the text-to-video generation request. The API accepts the job and returns a job id used for polling.
2
pollStatus
getGenerationStatus
Poll the video generation job status, repeating while it is pending or running and branching once it succeeds or fails. Video jobs may take several minutes, so polling uses a longer total budget.
3
reportSuccess
getGenerationStatus
Surface the generated video output URLs from the succeeded job.
4
reportFailure
getGenerationStatus
Surface the error details from the failed video generation job.

Source API Descriptions

Arazzo Workflow Specification

adobe-creative-suite-firefly-text-to-video-workflow.yml Raw ↑
arazzo: 1.0.1
info:
  title: Adobe Firefly Text-to-Video Generation
  summary: Submit a text-to-video Firefly job, poll until it finishes, and return the generated video URLs.
  description: >-
    Generates a short video clip from a natural-language prompt using the
    asynchronous Adobe Firefly video generation model. Because video generation
    can take several minutes, the workflow submits the request, takes the
    returned job id, and polls the status endpoint patiently until the job
    reaches a terminal state, branching on the result to return either the
    generated output URLs or the error details. Every step spells out its
    request inline so the flow can be read and executed without opening the
    underlying OpenAPI description.
  version: 1.0.0
sourceDescriptions:
- name: fireflyApi
  url: ../openapi/adobe-creative-suite-firefly-openapi.yml
  type: openapi
workflows:
- workflowId: firefly-text-to-video
  summary: Generate a video from a text prompt and poll the async job to completion.
  description: >-
    Submits a text-to-video generation request to Adobe Firefly, polls the job
    status until it succeeds or fails, and returns the generated output URLs on
    success.
  inputs:
    type: object
    required:
    - prompt
    properties:
      prompt:
        type: string
        description: Text description of the video to generate.
      negativePrompt:
        type: string
        description: Text describing what to avoid in the generated video.
      width:
        type: integer
        description: Output video width in pixels.
      height:
        type: integer
        description: Output video height in pixels.
      duration:
        type: number
        description: Requested video duration in seconds.
  steps:
  - stepId: submitVideo
    description: >-
      Submit the text-to-video generation request. The API accepts the job and
      returns a job id used for polling.
    operationId: generateVideoAsync
    requestBody:
      contentType: application/json
      payload:
        prompt: $inputs.prompt
        negativePrompt: $inputs.negativePrompt
        size:
          width: $inputs.width
          height: $inputs.height
        duration: $inputs.duration
    successCriteria:
    - condition: $statusCode == 202
    outputs:
      jobId: $response.body#/jobId
  - stepId: pollStatus
    description: >-
      Poll the video generation job status, repeating while it is pending or
      running and branching once it succeeds or fails. Video jobs may take
      several minutes, so polling uses a longer total budget.
    operationId: getGenerationStatus
    parameters:
    - name: jobId
      in: path
      value: $steps.submitVideo.outputs.jobId
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      status: $response.body#/status
    onSuccess:
    - name: jobSucceeded
      type: goto
      stepId: reportSuccess
      criteria:
      - context: $response.body
        condition: $.status == "succeeded"
        type: jsonpath
    - name: jobFailed
      type: goto
      stepId: reportFailure
      criteria:
      - context: $response.body
        condition: $.status == "failed"
        type: jsonpath
    - name: stillRunning
      type: retry
      stepId: pollStatus
      retryAfter: 15
      retryLimit: 40
      criteria:
      - context: $response.body
        condition: $.status == "pending" || $.status == "running"
        type: jsonpath
  - stepId: reportSuccess
    description: Surface the generated video output URLs from the succeeded job.
    operationId: getGenerationStatus
    parameters:
    - name: jobId
      in: path
      value: $steps.submitVideo.outputs.jobId
    successCriteria:
    - condition: $statusCode == 200
    - context: $response.body
      condition: $.status == "succeeded"
      type: jsonpath
    outputs:
      firstOutputUrl: $response.body#/outputs/0/image/url
      outputs: $response.body#/outputs
    onSuccess:
    - name: done
      type: end
  - stepId: reportFailure
    description: Surface the error details from the failed video generation job.
    operationId: getGenerationStatus
    parameters:
    - name: jobId
      in: path
      value: $steps.submitVideo.outputs.jobId
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      errors: $response.body#/errors
  outputs:
    jobId: $steps.submitVideo.outputs.jobId
    firstOutputUrl: $steps.reportSuccess.outputs.firstOutputUrl
    outputs: $steps.reportSuccess.outputs.outputs
    errors: $steps.reportFailure.outputs.errors