Skip to main content

Workflows API

The Workflows API allows you to create, retrieve, and delete workflows that orchestrate one or more pipelines as AWS Step Functions state machines. You can execute workflows against specific assets and track execution history.

Authorization

All endpoints require a valid JWT token in the Authorization header. Workflows are subject to two-tier Casbin authorization.


List all workflows

Retrieves all workflows across all databases.

GET /workflows

Query parameters

ParameterTypeRequiredDefaultDescription
maxItemsnumberNo30000Maximum number of items to return
pageSizenumberNo3000Number of items per page
startingTokenstringNonullPagination token from previous response
showDeletedstringNofalseInclude soft-deleted workflows

Response

{
"message": {
"Items": [
{
"workflowId": "convert-and-preview",
"databaseId": "my-database",
"description": "Convert 3D files and generate preview thumbnails",
"specifiedPipelines": {
"functions": [
{
"name": "3d-conversion-pipeline",
"databaseId": "GLOBAL",
"pipelineType": "standardFile",
"pipelineExecutionType": "Lambda",
"outputType": ".gltf",
"waitForCallback": "Disabled",
"userProvidedResource": "{\"resourceId\": \"vams-3dconversion\", \"resourceType\": \"Lambda\", \"isProvided\": false}"
}
]
},
"workflow_arn": "arn:aws:states:us-east-1:123456789012:stateMachine:vams-convert-and-preview",
"autoTriggerOnFileExtensionsUpload": ".fbx,.obj",
"dateCreated": "\"March 15 2026 - 10:30:00\"",
"dateModified": "\"March 16 2026 - 14:20:00\""
}
],
"NextToken": null
}
}

Error responses

StatusDescription
403Not authorized
500Internal server error

List workflows for a database

Retrieves all workflows for a specific database.

GET /database/{databaseId}/workflows

Path parameters

ParameterTypeRequiredDescription
databaseIdstringYesDatabase identifier

Query parameters

Same as List all workflows.

Response

Same structure as List all workflows.


Get a workflow

Retrieves a single workflow by its identifier.

GET /database/{databaseId}/workflows/{workflowId}

Path parameters

ParameterTypeRequiredDescription
databaseIdstringYesDatabase identifier
workflowIdstringYesWorkflow identifier

Response

Returns a single workflow object in the same format as the items in the list response.

Error responses

StatusDescription
400Invalid path parameters
403Not authorized
404Workflow not found
500Internal server error

Create or update a workflow

Creates a new workflow or updates an existing one. When updating, the underlying Step Functions state machine definition is updated in place, preserving execution history.

PUT /workflows

Request body

FieldTypeRequiredDescription
workflowIdstringYesUnique workflow identifier (4-64 chars, alphanumeric, hyphens, underscores)
databaseIdstringYesDatabase to associate with (or GLOBAL for cross-database workflows)
descriptionstringYesWorkflow description (4-256 chars)
specifiedPipelinesobjectYesObject containing a functions array of pipeline definitions
autoTriggerOnFileExtensionsUploadstringNoComma-delimited file extensions to auto-trigger on upload (e.g., jpg,png,pdf), or all for all extensions

Each entry in specifiedPipelines.functions must include:

FieldTypeRequiredDescription
namestringYesPipeline ID to reference
databaseIdstringYesDatabase ID of the pipeline
pipelineTypestringYesstandardFile or previewFile
pipelineExecutionTypestringYesLambda, SQS, or EventBridge
outputTypestringYesOutput file extension
waitForCallbackstringYesEnabled or Disabled
userProvidedResourcestringYesJSON string of the pipeline resource config
taskTimeoutstringNoTimeout in seconds (when callback is enabled)
taskHeartbeatTimeoutstringNoHeartbeat timeout in seconds
inputParametersstringNoJSON string of additional parameters
Pipeline scoping rules
  • Global workflows (databaseId: "GLOBAL") can only reference global pipelines.
  • Database-specific workflows can reference global pipelines or pipelines from the same database. :::

Request body example

{
"workflowId": "convert-and-preview",
"databaseId": "my-database",
"description": "Convert 3D files and generate preview thumbnails",
"specifiedPipelines": {
"functions": [
{
"name": "3d-conversion-pipeline",
"databaseId": "GLOBAL",
"pipelineType": "standardFile",
"pipelineExecutionType": "Lambda",
"outputType": ".gltf",
"waitForCallback": "Disabled",
"userProvidedResource": "{\"resourceId\": \"vams-3dconversion\", \"resourceType\": \"Lambda\", \"isProvided\": false}"
}
]
},
"autoTriggerOnFileExtensionsUpload": ".fbx,.obj"
}

Response

{
"message": "Succeeded"
}

Error responses

StatusDescription
400Validation error (missing fields, invalid pipeline references)
403Not authorized (API, workflow, or pipeline level)
500Internal server error

Delete a workflow

Soft-deletes a workflow and deletes the underlying Step Functions state machine.

DELETE /database/{databaseId}/workflows/{workflowId}

Path parameters

ParameterTypeRequiredDescription
databaseIdstringYesDatabase identifier
workflowIdstringYesWorkflow identifier

Response

{
"message": "Workflow deleted"
}

Error responses

StatusDescription
400Invalid path parameters
403Not authorized
404Workflow not found
500Internal server error

Execute a workflow

Executes a workflow against a specific asset. This starts a new Step Functions execution.

POST /database/{databaseId}/assets/{assetId}/workflows/{workflowId}

Path parameters

ParameterTypeRequiredDescription
databaseIdstringYesDatabase identifier of the asset
assetIdstringYesAsset identifier
workflowIdstringYesWorkflow identifier

Request body

FieldTypeRequiredDescription
workflowDatabaseIdstringYesDatabase ID of the workflow (use GLOBAL for global workflows)
fileKeystringNoSpecific file path within the asset to process. If omitted, uses the asset's base prefix.

Request body example

{
"workflowDatabaseId": "GLOBAL",
"fileKey": "models/building.fbx"
}
Execution constraints
  • A workflow cannot be executed on a file that already has a running execution of the same workflow.
  • The workflow's workflowDatabaseId must be GLOBAL or match the asset's databaseId.
  • All pipelines in the workflow must be enabled and accessible to the user. :::

Response

{
"message": "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
}

The response body contains the Step Functions execution ID.

Error responses

StatusDescription
400Validation error, asset/workflow not found, pipeline disabled, or execution already running
403Not authorized (API, asset, workflow, or pipeline level)
429Throttling -- too many requests
500Internal server error or execution limit exceeded

List workflow executions

Retrieves execution history for workflows on a specific asset.

GET /database/{databaseId}/assets/{assetId}/workflows/executions

To filter by a specific workflow:

GET /database/{databaseId}/assets/{assetId}/workflows/executions/{workflowId}

Path parameters

ParameterTypeRequiredDescription
databaseIdstringYesDatabase identifier
assetIdstringYesAsset identifier
workflowIdstringNoFilter by workflow ID

Response

{
"message": {
"Items": [
{
"workflowDatabaseId": "GLOBAL",
"workflowId": "convert-and-preview",
"executionId": "a1b2c3d4-e5f6-7890",
"executionStatus": "RUNNING",
"startDate": "03/15/2026, 10:30:00"
}
]
}
}
note

Only currently running executions (without a stop date) are returned. Completed executions are not included.

Error responses

StatusDescription
403Not authorized
500Internal server error