Vyond · Arazzo Workflow

Generate a Vyond video and export it

Version 1.0.0

Read the parameter vocabulary, create a Vyond Go or AI-avatar content generation, poll the task to completion, export the resulting video, then retrieve the expiring download URL.

1 workflow 1 source API 1 provider
View Spec View on GitHub VideoAnimationVideo GenerationArtificial IntelligenceeLearningLearning and DevelopmentContent GenerationSCIMIdentity ProvisioningWebhooksEnterpriseMediaArazzoWorkflows

Provider

vyond

Workflows

generate-and-export-video
End-to-end video production against the Vyond REST API.
Every operationId below exists verbatim in the published Vyond OpenAPI at https://api.vyond.com/doc/openapi.json. Note that steps 2 and 4 each spend account credits and Vyond accepts no Idempotency-Key, so a fork of this workflow must not blind-retry them.
5 steps inputs: aiAvatarParams, exportCategory, exportResolution, feature, generationType, vyondGoParams outputs: downloadUrl, expireAt, videoId
1
read-parameters
ParameterController.getParameters
Read the enumerated vocabulary a generation request must draw from.
2
create-generation
ContentGenerationV2Controller.createGeneration
Create the content generation. SPENDS CREDITS — no idempotency key is accepted, so do not retry this step on a timeout.
3
poll-generation
ContentGenerationV2Controller.getGeneration
Poll until status resolves. Back off exponentially — 429 is declared with no published limit and no Retry-After header.
4
export-video
VideoController.exportVideo
Export the generated video. SPENDS CREDITS — returns 402 Payment Required when the account is exhausted, and no endpoint reads the credit balance. completionCriteria is required for SCORM categories.
5
get-download-url
VideoController.getVideoExportDownload
Retrieve the download URL. It expires at expireAt — fetch the bytes immediately rather than persisting the URL.

Source API Descriptions

Arazzo Workflow Specification

Raw ↑
arazzo: 1.0.1
info:
  title: Generate a Vyond video and export it
  version: 1.0.0
  summary: >-
    Read the parameter vocabulary, create a Vyond Go or AI-avatar content
    generation, poll the task to completion, export the resulting video, then
    retrieve the expiring download URL.
sourceDescriptions:
- name: vyond
  url: ../openapi/vyond-openapi-original.json
  type: openapi
workflows:
- workflowId: generate-and-export-video
  summary: End-to-end video production against the Vyond REST API.
  description: >-
    Every operationId below exists verbatim in the published Vyond OpenAPI at
    https://api.vyond.com/doc/openapi.json. Note that steps 2 and 4 each spend
    account credits and Vyond accepts no Idempotency-Key, so a fork of this
    workflow must not blind-retry them.
  inputs:
    type: object
    required: [feature, generationType]
    properties:
      feature:
        type: string
        description: Feature whose parameter vocabulary to read (see GetParametersReqQuery).
      generationType:
        type: string
        enum: [vyondGo, aiAvatar]
      vyondGoParams:
        type: object
        description: Required when generationType is vyondGo.
      aiAvatarParams:
        type: object
        description: Required when generationType is aiAvatar.
      exportCategory:
        type: string
        enum: [mp4, webm, gif, scorm_1_2, scorm_2004_v4]
        default: mp4
      exportResolution:
        type: string
        enum: ['240p', '360p', '480p', '600p', '720p', '1080p']
        default: '1080p'
  steps:
  - stepId: read-parameters
    description: Read the enumerated vocabulary a generation request must draw from.
    operationId: ParameterController.getParameters
    parameters:
    - name: feature
      in: query
      value: $inputs.feature
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      parameters: $response.body
  - stepId: create-generation
    description: >-
      Create the content generation. SPENDS CREDITS — no idempotency key is
      accepted, so do not retry this step on a timeout.
    operationId: ContentGenerationV2Controller.createGeneration
    requestBody:
      contentType: application/json
      payload:
        type: $inputs.generationType
        vyondGoParams: $inputs.vyondGoParams
        aiAvatarParams: $inputs.aiAvatarParams
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      generationId: $response.body#/id
  - stepId: poll-generation
    description: >-
      Poll until status resolves. Back off exponentially — 429 is declared with no
      published limit and no Retry-After header.
    operationId: ContentGenerationV2Controller.getGeneration
    parameters:
    - name: id
      in: path
      value: $steps.create-generation.outputs.generationId
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      videoId: $response.body#/videoId
      generationStatus: $response.body#/status
  - stepId: export-video
    description: >-
      Export the generated video. SPENDS CREDITS — returns 402 Payment Required
      when the account is exhausted, and no endpoint reads the credit balance.
      completionCriteria is required for SCORM categories.
    operationId: VideoController.exportVideo
    parameters:
    - name: videoId
      in: path
      value: $steps.poll-generation.outputs.videoId
    requestBody:
      contentType: application/json
      payload:
        category: $inputs.exportCategory
        resolution: $inputs.exportResolution
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      conversionId: $response.body#/id
  - stepId: get-download-url
    description: >-
      Retrieve the download URL. It expires at expireAt — fetch the bytes
      immediately rather than persisting the URL.
    operationId: VideoController.getVideoExportDownload
    parameters:
    - name: videoId
      in: path
      value: $steps.poll-generation.outputs.videoId
    - name: conversionId
      in: path
      value: $steps.export-video.outputs.conversionId
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      downloadUrl: $response.body#/downloadUrl
      expireAt: $response.body#/expireAt
  outputs:
    videoId: $steps.poll-generation.outputs.videoId
    downloadUrl: $steps.get-download-url.outputs.downloadUrl
    expireAt: $steps.get-download-url.outputs.expireAt