---
title: "Create a workflow"
method: POST
path: "/v1/workflows"
tags: ["workflows"]
---

# Create a workflow

`POST /v1/workflows`

## Request

- Base URL: `https://api.typenode.ai`
- URL: `https://api.typenode.ai/v1/workflows`
- Auth: HTTP bearer

## Request body

- CreateWorkflow
  - `name` string: Workflow name; surrounding whitespace is trimmed and whitespace runs collapse to one space.

## Response `201`

The created workflow.

- Workflow
  - `created_at` string, date-time, required
  - `draft_revision` string, required
  - `has_changes` boolean, required
  - `id` string, uuid, required
  - `live_deployment_id` string, uuid, nullable, required
  - `live_sealed_release_id` string, nullable, required
  - `name` string, required
  - `nodes` Node[], required
    - `code` object
      - `javascript` string, required
    - `description` string
    - `fields` object
      - `human_approval_required` boolean
      - `input_json_schema` JsonSchema
      - `output_json_schema` JsonSchema
      - `timeout` string, nullable
    - `handles` object
    - `key` string, required
    - `mode` 'read' | 'write'
    - `type` 'action' | 'decision' | 'transformation' | 'merge' | 'wait_for_input' | 'loop' | 'input' | 'output', required
  - `triggers` Trigger[], required
    - union
      - WebhookTrigger
        - `config` object, required
          - `auth` union, required
            - object
              - …
            - object
              - …
            - object
              - …
            - object
              - …
          - `response_mode` 'sync' | 'async', required
        - `created_at` string, date-time, required
        - `definition_revision` string, required
        - `deployed` boolean, required
        - `deployed_environments` object[]
          - `environment_name` string, required
          - `installed_webhook` union
            - object
              - …
            - object
              - …
          - `webhook_url` string
        - `id` string, uuid, required
        - `trigger_type` 'webhook', required
        - `updated_at` string, date-time, required
        - `webhook_url` string
        - `workflow_id` string, uuid, required
      - EmailTrigger
        - `config` object, required
          - `allowed_senders` string[], required
        - `created_at` string, date-time, required
        - `definition_revision` string, required
        - `deployed` boolean, required
        - `deployed_environments` object[]
          - `email_address` string, email
          - `environment_name` string, required
        - `email_address` string, email
        - `id` string, uuid, required
        - `trigger_type` 'email', required
        - `updated_at` string, date-time, required
        - `workflow_id` string, uuid, required
      - ScheduleTrigger
        - `config` object, required
          - `cron_expression` string, required
          - `input` object, nullable
          - `last_run_at` string, date-time, nullable, required
          - `next_run_at` string, date-time, nullable, required
        - `created_at` string, date-time, required
        - `definition_revision` string, required
        - `deployed` boolean, required
        - `deployed_environments` object[]
          - `environment_name` string, required
        - `id` string, uuid, required
        - `trigger_type` 'schedule', required
        - `updated_at` string, date-time, required
        - `workflow_id` string, uuid, required
  - `updated_at` string, date-time, required

## Other responses

- `401`: Authentication required.
- `default`: An error occurred (RFC 9457 problem+json).

---

[API](https://skmtc.dev/typenode/apis/typenode-management-api.md) · [All operations](https://skmtc.dev/typenode/apis/typenode-management-api/llms.txt) · [OpenAPI document](https://skmtc.dev/typenode/apis/typenode-management-api/revisions/9b943024aa98?raw)
