---
title: "Create a new Lifecycle."
method: POST
path: "/lifecycles"
tags: ["Lifecycles"]
---

# Create a new Lifecycle.

`POST /lifecycles`

## Request body

- CreateLifecycleCommand
  - `Description` string — A description of the Lifecycle
  - `Name` string, required — The name of the Lifecycle.
  - `Phases` PhaseResource[] — The promotion phases in order. Each phase lists environments deployed to automatically (AutomaticDeploymentTargets) or manually (OptionalDeploymentTargets); an environment may appear in only one phase, and at most one phase may list no environments, meaning all remaining environments. MinimumEnvironmentsBeforePromotion is how many of the phase's environments must be deployed before a release can progress (0 means all). IsOptionalPhase allows skipping the phase, but not every phase may be optional. Per-phase retention policies override the lifecycle-level ones. Leave each phase's Id blank; the server assigns it.
    - `AutomaticDeploymentTargets` string[]
    - `Id` string
    - `IsOptionalPhase` boolean
    - `IsPriorityPhase` boolean
    - `MinimumEnvironmentsBeforePromotion` integer
    - `Name` string
    - `OptionalDeploymentTargets` string[]
    - `ReleaseRetentionPolicy` RetentionPeriod
      - `QuantityToKeep` integer
      - `ShouldKeepForever` boolean
      - `Strategy` string
      - `Unit` 'Days' | 'Items'
    - `TentacleRetentionPolicy` RetentionPeriod
      - `QuantityToKeep` integer
      - `ShouldKeepForever` boolean
      - `Strategy` string
      - `Unit` 'Days' | 'Items'
  - `ReleaseRetentionPolicy` RetentionPeriod
    - `QuantityToKeep` integer
    - `ShouldKeepForever` boolean
    - `Strategy` string
    - `Unit` 'Days' | 'Items'
  - `Slug` string — A slug for the Lifecycle.
  - `SpaceId` string, required — The id of the Space for the Lifecycle.
  - `TentacleRetentionPolicy` RetentionPeriod
    - `QuantityToKeep` integer
    - `ShouldKeepForever` boolean
    - `Strategy` string
    - `Unit` 'Days' | 'Items'

## Response `201`

Created

- LifecycleResource
  - `Description` string
  - `Id` string — Gets or sets a unique identifier for this resource.
  - `LastModifiedBy` string — Gets or sets the username of the user who last modified this resource.
  - `LastModifiedOn` string, date-time — Gets or sets the date/time that this resource was last modified.
  - `Links` object — Gets or sets a dictionary of links to other related resources. These links can be used to navigate the resources on the server.
  - `Name` string
  - `Phases` PhaseResource[]
    - `AutomaticDeploymentTargets` string[]
    - `Id` string
    - `IsOptionalPhase` boolean
    - `IsPriorityPhase` boolean
    - `MinimumEnvironmentsBeforePromotion` integer
    - `Name` string
    - `OptionalDeploymentTargets` string[]
    - `ReleaseRetentionPolicy` RetentionPeriod
      - `QuantityToKeep` integer
      - `ShouldKeepForever` boolean
      - `Strategy` string
      - `Unit` 'Days' | 'Items'
    - `TentacleRetentionPolicy` RetentionPeriod
      - `QuantityToKeep` integer
      - `ShouldKeepForever` boolean
      - `Strategy` string
      - `Unit` 'Days' | 'Items'
  - `ReleaseRetentionPolicy` RetentionPeriod
    - `QuantityToKeep` integer
    - `ShouldKeepForever` boolean
    - `Strategy` string
    - `Unit` 'Days' | 'Items'
  - `Slug` string
  - `SpaceId` string
  - `TentacleRetentionPolicy` RetentionPeriod
    - `QuantityToKeep` integer
    - `ShouldKeepForever` boolean
    - `Strategy` string
    - `Unit` 'Days' | 'Items'

## Other responses

- `400` — Bad request. Either the payload was not structurally valid or business rules did not permit the operation.
- `404` — Not found. One or more of the entities involved in the operation was not found.

---

[API](https://skmtc.net/octopus/apis/octopus-server-api.md) · [All operations](https://skmtc.net/octopus/apis/octopus-server-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/octopus/octopus-server-api/revisions/b296c3a60aa5/schema)
