Create workflow template

Create a custom workflow template in the current workspace. Custom templates are only visible in the current workspace; built-in templates require administrator privileges.

POST https://moi.matrixorigin.cn/newmoi/workflow-templates

Preparation before calling

Prepare the workflow DSL with personal access token for target workspace access, target workspace ID, and template. Creating built-in templates also requires administrator rights.

Request body

namestringRequired
Template name. Custom templates cannot have the same name in the current workspace and current language.
descriptionstring
Template description.
dsl_yamlstringRequired
The YAML text of the workflow DSL.
runtime_fieldsstring
The JSON text of the runtime field definition; must be a valid JSON string when provided.
is_builtinboolean
Whether to create a built-in template, the default is false. Setting to true requires administrator privileges and cannot use the system-managed built-in template ID.
template_keystring
The identifier of the built-in template. The server ignores this field when creating a custom template and returns an empty string; it cannot be repeated in the same language.

Request example

curl -X POST "https://moi.matrixorigin.cn/newmoi/workflow-templates" \
  -H "X-API-Key: $AI_STUDIO_API_KEY" \
  -H "X-Workspace-ID: $WORKSPACE_ID" \
  -H 'Content-Type: application/json' \
  -d '{
    "name": "<TEMPLATE_NAME>",
    "description": "<DESCRIPTION>",
    "dsl_yaml": "<WORKFLOW_DSL_YAML>",
    "runtime_fields": "{\"fields\":[]}",
    "is_builtin": false
  }'

Successful response

Returns 200 on success. data is a newly created template. Save data.id, this value will be needed for subsequent query, update or deletion of templates.

The response fields are as follows.

codestring
OK when successful.
msgstring
OK when successful.
data.idinteger
Template ID.
data.workspace_idstring
The ID of the workspace to which it belongs; the built-in template is an empty string.
data.created_bystring
Creator ID.
data.updated_bystring
Last updater ID.
data.template_keystring
Built-in template identifier; custom template is an empty string.
data.namestring
Template name.
data.descriptionstring
Template description.
data.languagestring
Template language, such as zh-CN.
data.dsl_yamlstring
Saved workflow DSL YAML.
data.runtime_fieldsstring
JSON text of the saved runtime field; empty string if not configured.
data.is_builtinboolean
Whether it is a built-in template.
data.created_atstring
Creation time; may be omitted if not provided by the server.
data.updated_atstring
Last updated time; may be omitted if not provided by the server.

Successful response example

{
  "code": "OK",
  "msg": "OK",
  "data": {
    "id": 12,
    "workspace_id": "ws-001",
    "created_by": "user-001",
    "updated_by": "user-001",
    "template_key": "",
    "name": "daily-import-template",
    "description": "每日导入工作流模板",
    "language": "zh-CN",
    "dsl_yaml": "workflow: {}",
    "runtime_fields": "{\"fields\":[]}",
    "is_builtin": false,
    "created_at": "2026-08-18T10:00:00Z",
    "updated_at": "2026-08-18T10:00:00Z"
  }
}

Error response

codestring
Error code.
msgstring
Readable error message.
datanull
`null` in an error response.

Error response example

{
  "code": "ErrParamInvalid",
  "msg": "请求参数无效",
  "data": null
}

Follow-up operations

Use data.id query workflow template details.

Last updated on