---
title: "Create a new pipeline"
method: POST
path: "/pipelines"
tags: ["Pipeline"]
---

# Create a new pipeline

`POST /pipelines`

Creates a new pipeline definition with its associated steps.
This endpoint defines the sequence of jobs but does not start execution immediately.
Use the 'start' endpoint to begin the pipeline execution.

## Request body

- PipelineConfig
  - `project_id` string, required
  - `name` string, nullable
  - `description` string, nullable
  - `options` PipelineOptions — Options for pipeline execution behavior.
    - `live_progress_updates` boolean, nullable — If True, save checkpoint progress to database during job execution. If None, the worker picks a default based on job type.
  - `elements` object, required

## Response `201`

Successful Response

- PipelineDetail — Model for representing a pipeline with its elements in detail responses.
  - `id` string, required
  - `project_id` string, required
  - `user_id` string, nullable
  - `name` string, required
  - `description` string, nullable
  - `options` PipelineOptions — Options for pipeline execution behavior.
    - `live_progress_updates` boolean, nullable — If True, save checkpoint progress to database during job execution. If None, the worker picks a default based on job type.
  - `status` 'pending' | 'running' | 'completed' | 'failed' | 'canceled', required
  - `created_at` string, date-time, required
  - `updated_at` string, date-time, required
  - `error` string, nullable
  - `error_code` 'CONFIGURATION_ERROR' | 'MODEL_ERROR' | 'SOLVER_ERROR' | 'EXECUTION_TIMEOUT' | 'SUBMISSION_FAILED' | 'INTERNAL_ERROR' — Machine-readable error codes for jobs.
  - `created_by_email` string, nullable
  - `organization_id` string, required — Organization this pipeline belongs to.
  - `elements` PipelineElement[]
    - `id` string, required
    - `pipeline_id` string, required
    - `name` string, required
    - `element_order` integer, required — Order of execution within the pipeline (1-based)
    - `element_type` 'Direct Entry' | 'Data Fit' | 'Array Data Fit' | 'Calculation' | 'Validation', required
    - `job_config` object, required — Configuration parameters for the job
    - `job_id` string, nullable
    - `result` object, nullable
    - `status` 'pending' | 'running' | 'completed' | 'failed' | 'skipped' | 'canceled', required
    - `created_at` string, date-time, required
    - `updated_at` string, date-time, required
    - `error` string, nullable
    - `error_code` 'CONFIGURATION_ERROR' | 'MODEL_ERROR' | 'SOLVER_ERROR' | 'EXECUTION_TIMEOUT' | 'SUBMISSION_FAILED' | 'INTERNAL_ERROR' — Machine-readable error codes for jobs.
    - `error_detail` object, nullable
    - `job_status` string, nullable — Job status via job_id (from jobs.status).
    - `organization_id` string, required — Organization this pipeline element belongs to.

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/ionworks/apis/fastapi.md) · [All operations](https://skmtc.dev/ionworks/apis/fastapi/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/ionworks/fastapi/revisions/7337a3cbdaf2/schema)
