---
title: "Create Workflow"
method: POST
path: "/api/v1/workflows/"
tags: ["workflows"]
---

# Create Workflow

`POST /api/v1/workflows/`

## Request

- Base URL: `https://platform-api.transform.unstructured.io` (the document declares no server; this is the origin it was published from)
- URL: `https://platform-api.transform.unstructured.io/api/v1/workflows/`
- Auth: none declared
- TypeScript: <https://skmtc.dev/unstructured/apis/platform-api/docs/api/v1/workflows/post.ts> (a function with typed inputs; its response is checked against the schema)

Create a new workflow, either custom or auto, and configure its settings.

## Headers

- `unstructured-api-key` string, nullable

## Request body

- CreateWorkflow
  - `name` string, required
  - `source_id` union
    - string, uuid
    - string
  - `destination_id` union
    - string, uuid
    - string
  - `source_ids` union[], nullable: Source connectors to bind, for workflows reading from more than one source. Mutually exclusive with `source_id`.
    - union
      - string, uuid
      - string
  - `destination_ids` union[], nullable: Destination connectors to bind, for workflows writing to more than one destination. Mutually exclusive with `destination_id`.
    - union
      - string, uuid
      - string
  - `workflow_type` 'basic' | 'advanced' | 'platinum' | 'custom', required
  - `workflow_nodes` WorkflowNode[], nullable
    - `id` string, uuid, nullable
    - `name` string, required
    - `type` string, required
    - `subtype` string, required
    - `settings` object, nullable
  - `template_id` string, nullable
  - `schedule` 'every 15 minutes' | 'every hour' | 'every 2 hours' | 'every 4 hours' | 'every 6 hours' | 'every 8 hours' | 'every 10 hours' | 'every 12 hours' | 'daily' | 'weekly' | 'monthly', nullable
  - `reprocess_all` boolean, nullable
  - `skip_preflight` boolean, nullable: Skip the job preflight check for this workflow. Preflight runs by default.
  - `key` string, nullable: Stable workspace level identifier for the workflow. If omitted, derived from `name`. Immutable once set. 1-63 characters, lowercase alphanumeric and hyphens, no consecutive/leading/trailing hyphens.

## Response `200`

Successful Response

- WorkflowInformation
  - `id` string, uuid, required
  - `name` string, required
  - `key` string, nullable
  - `sources` string[], required
  - `destinations` string[], required
  - `workflow_type` 'basic' | 'advanced' | 'platinum' | 'custom'
  - `workflow_nodes` WorkflowNode[], required
    - `id` string, uuid, nullable
    - `name` string, required
    - `type` string, required
    - `subtype` string, required
    - `settings` object, nullable
  - `schedule` WorkflowSchedule
    - `crontab_entries` CronTabEntry[], required
      - `cron_expression` string, required
  - `status` 'active' | 'inactive', required
  - `created_at` string, date-time, required
  - `updated_at` string, date-time, nullable
  - `reprocess_all` boolean
  - `skip_preflight` boolean
  - `edit_lock` WorkflowEditLockResponse
    - `locked_by` string, nullable, required: Email of the user editing the workflow, when known.
    - `locked_at` string, date-time, required
    - `expires_at` string, date-time, required
    - `held_by_you` boolean, required

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/unstructured/apis/platform-api.md) - [All operations](https://skmtc.dev/unstructured/apis/platform-api/llms.txt) - [OpenAPI document](https://skmtc.dev/unstructured/apis/platform-api/revisions/16b4542093db?raw)
