---
title: "Create a workflow"
method: POST
path: "/v1/apps/{id}/workflows"
tags: ["Workspace API - Workflows"]
---

# Create a workflow

`POST /v1/apps/{id}/workflows`

Create a new workflow for the app. Provider keys in `providers` must exist in `app.providers`. Maximum 100 workflows per app. If `workflowId` is omitted, it is auto-generated from `name`.

## Path parameters

- `id` string, required

## Request body

- CreateWorkflowDto
  - `name` string, required
  - `entryNodeId` string, required
  - `nodes` FlowNodeDto[], required
    - `id` string, required
    - `type` 'request' | 'response' | 'verification' | 'check-min-loa' | 'check-claim' | 'evaluate' | 'if', required
    - `next` object — Next: string (single output) or NextRoute[] (IF branching)
    - `config` object — Type-specific configuration (max depth 5, max 50 keys per level)

## Response `201`

Workflow created

- WorkflowResponseDto
  - `workflowId` string, required
  - `name` string, required
  - `entryNodeId` string, required
  - `nodes` FlowNodeDto[], required
    - `id` string, required
    - `type` 'request' | 'response' | 'verification' | 'check-min-loa' | 'check-claim' | 'evaluate' | 'if', required
    - `next` object — Next: string (single output) or NextRoute[] (IF branching)
    - `config` object — Type-specific configuration (max depth 5, max 50 keys per level)
  - `createdAt` string, date-time
  - `updatedAt` string, date-time

## Other responses

- `400` — Validation error (invalid provider key, max limit reached)
- `404` — App not found
- `409` — Workflow ID already exists

---

[API](https://skmtc.net/hopae/apis/hconnect-api.md) · [All operations](https://skmtc.net/hopae/apis/hconnect-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/hopae/hconnect-api/versions/ed6e97ac6f2f/schema)
