---
title: "Create a Channel"
method: POST
path: "/projects/{projectId}/channels"
tags: ["Channels"]
---

# Create a Channel

`POST /projects/{projectId}/channels`

## Path parameters

- `projectId` string, required

## Request body

- CreateChannelCommand
  - `AutomaticEphemeralEnvironmentDeployments` boolean
  - `CustomFieldDefinitions` ChannelCustomFieldDefinitionResource[] — Custom fields (FieldName plus a human-facing Description) that become mandatory when creating a release in this channel.
    - `Description` string
    - `FieldName` string
  - `Description` string
  - `EphemeralEnvironmentNameTemplate` string
  - `GitReferenceRules` string[] — Git reference patterns (e.g. 'refs/heads/main', 'refs/heads/feature/*') restricting which branches or tags can create releases in this channel. Only valid for version-controlled (Config-as-Code) projects.
  - `GitResourceRules` ChannelGitResourceRuleResource[] — Rules restricting which Git refs may be used for external Git dependencies referenced by deployment steps. Each rule targets step Git dependencies via GitDependencyActions (DeploymentActionSlug plus GitDependencyName) and lists the allowed Git reference patterns in Rules.
    - `GitDependencyActions` DeploymentActionGitDependencyResource[]
      - `DeploymentActionSlug` string, required — The slug of the deployment action
      - `GitDependencyName` string, required — The name of the git dependency
    - `Id` string
    - `Rules` string[]
  - `IsDefault` boolean
  - `LifecycleId` string — The lifecycle for this channel. Must be null for ephemeral environment channels.
  - `Name` string, required
  - `ParentEnvironmentId` string — The parent environment for all ephemeral environments created in this channel. Required for ephemeral environment channels.
  - `ProjectId` string, required
  - `Rules` ChannelVersionRuleResource[] — Version rules restricting which package versions may be used when creating a release in this channel. Each rule targets step packages via ActionPackages (DeploymentAction is the step name or ID, PackageReference the package reference name or ID) and constrains versions with a NuGet-style VersionRange (e.g. '[1.0,2.0)') and/or a Tag regex matched against the package's pre-release tag (e.g. '^$' for stable versions only). Leave each rule's Id blank; the server assigns it.
    - `ActionPackages` DeploymentActionPackageResource[]
      - `DeploymentAction` string — The name or ID of the deployment action
      - `PackageReference` string — The name or ID of the package reference
    - `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.
    - `Tag` string
    - `VersioningStrategy` string
    - `VersionRange` string
    - `VersionTagRegex` string
  - `Slug` string
  - `SpaceId` string, required
  - `TenantTags` string[] — Canonical tenant tag names in 'TagSet/Tag' format restricting which tenants can deploy releases from this channel.
  - `Type` string

## Response `200`

The newly-created Channel

- ChannelResource
  - `AutomaticEphemeralEnvironmentDeployments` boolean
  - `CustomFieldDefinitions` ChannelCustomFieldDefinitionResource[]
    - `Description` string
    - `FieldName` string
  - `Description` string
  - `EphemeralEnvironmentNameTemplate` string
  - `GitReferenceRules` string[]
  - `GitResourceRules` ChannelGitResourceRuleResource[]
    - `GitDependencyActions` DeploymentActionGitDependencyResource[]
      - `DeploymentActionSlug` string, required — The slug of the deployment action
      - `GitDependencyName` string, required — The name of the git dependency
    - `Id` string
    - `Rules` string[]
  - `Id` string — Gets or sets a unique identifier for this resource.
  - `IsDefault` boolean
  - `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.
  - `LifecycleId` string
  - `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
  - `ParentEnvironmentId` string — The parent environment for all ephemeral environments created in this channel.
  - `ProjectId` string
  - `Rules` ChannelVersionRuleResource[]
    - `ActionPackages` DeploymentActionPackageResource[]
      - `DeploymentAction` string — The name or ID of the deployment action
      - `PackageReference` string — The name or ID of the package reference
    - `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.
    - `Tag` string
    - `VersioningStrategy` string
    - `VersionRange` string
    - `VersionTagRegex` string
  - `Slug` string
  - `SpaceId` string
  - `TenantTags` string[]
  - `Type` string

## 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)
