---
title: "Create ProcedureRunPlan"
method: POST
path: "/api/v3/procedure-run-plan"
tags: ["Procedure Run Plan"]
---

# Create ProcedureRunPlan

`POST /api/v3/procedure-run-plan`

## Request

- Base URL: `https://{tenant_name}.benchling.com`
- URL: `https://{tenant_name}.benchling.com/api/v3/procedure-run-plan`
- Auth: HTTP bearer

Create a draft recipe or assay run plan (procedure run plan) within a study.
## Required fields
| Field | Description |
| --- | --- |
| `description` | Human-readable description of the plan |
| `studyId` | ID of the parent study (`stdy_XXXXXXXX`). Use `GET /benchling/study/items` to list studies. |
## Optional fields
| Field | Default | Description |
| --- | --- | --- |
| `dataEntryMode` | `INDIVIDUAL_CONDITION_REPLICATES` | Controls worksheet creation upon promotion |
| `workflowFlowchartConfigVersionId` | `null` | Optional ID of the workflow flowchart config version (`wffccv_XXXXXXXX`) defining the procedure structure |
| `confirmationMethodByParamVersionId` | Confirmation method overrides per parameter (omit or pass `[]` for no overrides) |
## Notes
- The **creator** is automatically set to the authenticated user.
- `description` must not exceed 255 characters.
- The study must be of a type that supports run plans (e.g., recipe or assay run studies). Assay development studies reject `ALL_CONDITION_REPLICATES_TOGETHER` mode.
- After creating the plan, add conditions using the Create ProcedureRunPlanCondition endpoint.
- When the plan is ready, promote it to an active run using the Promote endpoint.

## Headers

- `EARLY-ACCESS` string

## Request body

- CreateProcedureRunPlanInput
  - `confirmationMethodByParamVersionId` ConfirmationMethodByParamVersionIdInput[]: Override the default confirmation method for specific procedure parameters. Each entry maps a parameter version ID to a confirmation method (TABLE or PLATE_MAP). Omit or pass an empty array to use the default confirmation methods.
    - `confirmationMethod` 'TABLE' | 'PLATE_MAP', required
    - `paramVersionId` string, required
  - `dataEntryMode` 'INDIVIDUAL_CONDITION_REPLICATES' | 'ALL_CONDITION_REPLICATES_TOGETHER': Controls how data entry worksheets are created upon promotion. `INDIVIDUAL_CONDITION_REPLICATES` creates one worksheet per condition-replicate. `ALL_CONDITION_REPLICATES_TOGETHER` creates a single shared worksheet (not supported for assay run plans). Defaults to `INDIVIDUAL_CONDITION_REPLICATES` if omitted.
  - `description` string, required: A human-readable description of the run plan. Must not exceed 255 characters.
  - `studyId` string, required: The ID of the study this run plan belongs to. Format: `stdy_XXXXXXXX`.
  - `workflowFlowchartConfigVersionId` string, nullable: The ID of the workflow flowchart config version that defines the procedure template for this run plan. Format: `wffccv_XXXXXXXX`. Omit or set to null to create a run plan with no linked procedure.

## Response `201`

Created

- ProcedureRunPlan: A draft experiment plan that can be promoted to a `ProcedureRun` for execution. Scientists use run plans to configure experimental conditions, parameter values, and replicates before starting an actual experiment. Belongs to a `Study` and exposes its Workflows-backed procedure template through `procedureFlowchartConfigVersion`. Contains `ProcedureRunPlanCondition` objects that define the different experimental configurations to test. The `dataEntryMode` (see `ProcedureRunDataEntryMode`) specifies whether each condition-replicate will have its own data entry worksheet or share a single worksheet. The `confirmationMethodByParamVersionId` allows overriding default confirmation methods for specific parameters. Upon promotion, the run plan becomes a `ProcedureRun` with corresponding `ProcedureRunCondition` and `ProcedureRunConditionReplicate` objects. Also known as a "draft experiment" in the Benchling UI. ## Product mapping - `ProcedureRunPlan` is the API model for the **draft procedure run** setup object in the UI. - Promoting a run plan creates the executable `ProcedureRun` and carries forward its condition/replicate setup.
  - `__typename` string
  - `confirmationMethodByParamVersionId` ConfirmationMethodByParamVersionId[]
    - `__typename` string
    - `confirmationMethod` 'TABLE' | 'PLATE_MAP'
    - `paramVersionId` string
  - `createdAt` string, datetime
  - `creator` PrincipalRef
    - `__typename` string
    - `id` string, api_id
  - `dataEntryMode` 'INDIVIDUAL_CONDITION_REPLICATES' | 'ALL_CONDITION_REPLICATES_TOGETHER'
  - `description` string
  - `id` string
  - `modifiedAt` string, datetime
  - `procedureFlowchartConfigVersion` ProcedureFlowchartConfigVersionRef
    - `__typename` string
    - `id` string, api_id
  - `procedureRun` ProcedureRunRef
    - `__typename` string
    - `id` string, api_id
  - `procedureRunPlanConditions` string, uri
  - `study` StudyRef
    - `__typename` string
    - `id` string, api_id

## Other responses

- `400`: Bad Request
- `403`: Forbidden
- `404`: Not Found
- `409`: Conflict
- `429`: Too Many Requests
- `500`: Internal Server Error

---

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