Skip to main content

Endpoint

PUT https://workflows.eachlabs.run/api/v1/workflows/{workflowID}/versions/{versionID}
This operation will:
  • Create or update the version
  • Generate or update the state machine
  • Set this version as the latest version
Once a version is locked, it cannot be modified.

Path Parameters

ParameterTypeRequiredDescription
workflowIDstringYesWorkflow UUID or slug
versionIDstringYesVersion identifier (e.g., v1, v2)

Request Body

FieldTypeRequiredDescription
version_idstringYesVersion identifier (must match path)
definitionobjectYesComplete workflow definition
lockedbooleanNoLock this version (default: false)
productionbooleanNoMark as production (default: false)
allowed_to_sharebooleanNoMake unlisted (true) or private (false)

Code Examples

curl -X PUT https://workflows.eachlabs.run/api/v1/workflows/WF_ID/versions/v2 \
  -H "Content-Type: application/json" \
  -H "X-API-Key: YOUR_API_KEY" \
  -d '{
    "version_id": "v2",
    "definition": {
      "version": "v2",
      "input_schema": {
        "type": "object",
        "required": ["prompt"],
        "properties": {
          "prompt": {"type": "string"}
        }
      },
      "steps": [
        {
          "step_id": "generate_text",
          "type": "model",
          "model": "openai-chatgpt-5",
          "params": {
            "user_prompt": "{{inputs.prompt}}"
          }
        },
        {
          "step_id": "generate_image",
          "type": "model",
          "model": "flux-dev",
          "params": {
            "prompt": "{{generate_text.output}}"
          },
          "fallback": {
            "enabled": true,
            "model": "flux-1-1-pro",
            "params": {
              "prompt": "{{generate_text.output}}"
            }
          }
        }
      ]
    },
    "production": true
  }'

Response

{
  "version_id": "v2",
  "slug": "text-to-image-generator",
  "locked": false,
  "production": true,
  "allowed_to_share": false,
  "trigger_count": 0,
  "status": "active",
  "created_at": "2025-12-05T14:20:00Z",
  "updated_at": "2025-12-05T14:20:00Z",
  "definition": { ... }
}

Error Responses

StatusBodyDescription
400{"error": "definition is required"}Missing definition
401{"error": "Invalid or missing API key"}Auth failure
403{"error": "version is locked"}Cannot modify a locked version
404{"error": "workflow not found"}Invalid workflow ID
Last modified on March 3, 2026