curl --request POST \
--url https://app.launchdarkly.com/api/v2/projects/{projectKey}/release-pipelines \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"key": "standard-pipeline",
"name": "Standard Pipeline",
"phases": [
{
"audiences": [
{
"environmentKey": "<string>",
"name": "<string>",
"segmentKeys": [
"<string>"
]
}
],
"name": "Phase 1 - Testing",
"configuration": {}
}
],
"description": "Standard pipeline to roll out to production",
"tags": [
"example-tag"
],
"isProjectDefault": true,
"isLegacy": true
}
'import requests
url = "https://app.launchdarkly.com/api/v2/projects/{projectKey}/release-pipelines"
payload = {
"key": "standard-pipeline",
"name": "Standard Pipeline",
"phases": [
{
"audiences": [
{
"environmentKey": "<string>",
"name": "<string>",
"segmentKeys": ["<string>"]
}
],
"name": "Phase 1 - Testing",
"configuration": {}
}
],
"description": "Standard pipeline to roll out to production",
"tags": ["example-tag"],
"isProjectDefault": True,
"isLegacy": True
}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
key: 'standard-pipeline',
name: 'Standard Pipeline',
phases: [
{
audiences: [{environmentKey: '<string>', name: '<string>', segmentKeys: ['<string>']}],
name: 'Phase 1 - Testing',
configuration: {}
}
],
description: 'Standard pipeline to roll out to production',
tags: ['example-tag'],
isProjectDefault: true,
isLegacy: true
})
};
fetch('https://app.launchdarkly.com/api/v2/projects/{projectKey}/release-pipelines', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.launchdarkly.com/api/v2/projects/{projectKey}/release-pipelines",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'key' => 'standard-pipeline',
'name' => 'Standard Pipeline',
'phases' => [
[
'audiences' => [
[
'environmentKey' => '<string>',
'name' => '<string>',
'segmentKeys' => [
'<string>'
]
]
],
'name' => 'Phase 1 - Testing',
'configuration' => [
]
]
],
'description' => 'Standard pipeline to roll out to production',
'tags' => [
'example-tag'
],
'isProjectDefault' => true,
'isLegacy' => true
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.launchdarkly.com/api/v2/projects/{projectKey}/release-pipelines"
payload := strings.NewReader("{\n \"key\": \"standard-pipeline\",\n \"name\": \"Standard Pipeline\",\n \"phases\": [\n {\n \"audiences\": [\n {\n \"environmentKey\": \"<string>\",\n \"name\": \"<string>\",\n \"segmentKeys\": [\n \"<string>\"\n ]\n }\n ],\n \"name\": \"Phase 1 - Testing\",\n \"configuration\": {}\n }\n ],\n \"description\": \"Standard pipeline to roll out to production\",\n \"tags\": [\n \"example-tag\"\n ],\n \"isProjectDefault\": true,\n \"isLegacy\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://app.launchdarkly.com/api/v2/projects/{projectKey}/release-pipelines")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"key\": \"standard-pipeline\",\n \"name\": \"Standard Pipeline\",\n \"phases\": [\n {\n \"audiences\": [\n {\n \"environmentKey\": \"<string>\",\n \"name\": \"<string>\",\n \"segmentKeys\": [\n \"<string>\"\n ]\n }\n ],\n \"name\": \"Phase 1 - Testing\",\n \"configuration\": {}\n }\n ],\n \"description\": \"Standard pipeline to roll out to production\",\n \"tags\": [\n \"example-tag\"\n ],\n \"isProjectDefault\": true,\n \"isLegacy\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.launchdarkly.com/api/v2/projects/{projectKey}/release-pipelines")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"key\": \"standard-pipeline\",\n \"name\": \"Standard Pipeline\",\n \"phases\": [\n {\n \"audiences\": [\n {\n \"environmentKey\": \"<string>\",\n \"name\": \"<string>\",\n \"segmentKeys\": [\n \"<string>\"\n ]\n }\n ],\n \"name\": \"Phase 1 - Testing\",\n \"configuration\": {}\n }\n ],\n \"description\": \"Standard pipeline to roll out to production\",\n \"tags\": [\n \"example-tag\"\n ],\n \"isProjectDefault\": true,\n \"isLegacy\": true\n}"
response = http.request(request)
puts response.read_body{
"createdAt": "1684262711507",
"key": "standard-pipeline",
"name": "Standard Pipeline",
"phases": [
{
"id": "1234a56b7c89d012345e678f",
"audiences": [
{
"name": "Phase 1 - Testing",
"environment": {
"_links": {
"self": {
"href": "/api/v2/projects/my-project/environments/my-environment",
"type": "application/json"
}
},
"key": "environment-key-123abc",
"name": "My Environment",
"color": "F5A623"
},
"configuration": {
"releaseStrategy": "monitoredRelease",
"requireApproval": true,
"notifyMemberIds": [
"1234a56b7c89d012345e678f"
],
"notifyTeamKeys": [
"example-reviewer-team"
],
"releaseGuardianConfiguration": {
"monitoringWindowMilliseconds": 60000,
"rolloutWeight": 50,
"rollbackOnRegression": true,
"randomizationUnit": "user"
}
},
"segmentKeys": [
"segment-key-123abc"
]
}
],
"name": "Phase 1 - Testing",
"configuration": {}
}
],
"description": "Standard pipeline to roll out to production",
"tags": [
"example-tag"
],
"_version": 1,
"_access": {
"denied": [
{
"action": "<string>",
"reason": {
"effect": "allow",
"resources": [
"proj/*:env/*;qa_*:/flag/*"
],
"notResources": [
"<string>"
],
"actions": [
"*"
],
"notActions": [
"<string>"
],
"role_name": "<string>"
}
}
],
"allowed": [
{
"action": "<string>",
"reason": {
"effect": "allow",
"resources": [
"proj/*:env/*;qa_*:/flag/*"
],
"notResources": [
"<string>"
],
"actions": [
"*"
],
"notActions": [
"<string>"
],
"role_name": "<string>"
}
}
]
},
"isProjectDefault": true,
"_isLegacy": true
}{
"code": "invalid_request",
"message": "Invalid request body"
}{
"code": "forbidden",
"message": "Forbidden. Access to the requested resource was denied."
}{
"code": "not_found",
"message": "Invalid resource identifier"
}{
"code": "optimistic_locking_error",
"message": "Conflict. Optimistic lock error. Try again later."
}Create a release pipeline
Creates a new release pipeline.
The first release pipeline you create is automatically set as the default release pipeline for your project. To change the default release pipeline, use the Update project API to set the defaultReleasePipelineKey.
You can create up to 20 release pipelines per project.
curl --request POST \
--url https://app.launchdarkly.com/api/v2/projects/{projectKey}/release-pipelines \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"key": "standard-pipeline",
"name": "Standard Pipeline",
"phases": [
{
"audiences": [
{
"environmentKey": "<string>",
"name": "<string>",
"segmentKeys": [
"<string>"
]
}
],
"name": "Phase 1 - Testing",
"configuration": {}
}
],
"description": "Standard pipeline to roll out to production",
"tags": [
"example-tag"
],
"isProjectDefault": true,
"isLegacy": true
}
'import requests
url = "https://app.launchdarkly.com/api/v2/projects/{projectKey}/release-pipelines"
payload = {
"key": "standard-pipeline",
"name": "Standard Pipeline",
"phases": [
{
"audiences": [
{
"environmentKey": "<string>",
"name": "<string>",
"segmentKeys": ["<string>"]
}
],
"name": "Phase 1 - Testing",
"configuration": {}
}
],
"description": "Standard pipeline to roll out to production",
"tags": ["example-tag"],
"isProjectDefault": True,
"isLegacy": True
}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
key: 'standard-pipeline',
name: 'Standard Pipeline',
phases: [
{
audiences: [{environmentKey: '<string>', name: '<string>', segmentKeys: ['<string>']}],
name: 'Phase 1 - Testing',
configuration: {}
}
],
description: 'Standard pipeline to roll out to production',
tags: ['example-tag'],
isProjectDefault: true,
isLegacy: true
})
};
fetch('https://app.launchdarkly.com/api/v2/projects/{projectKey}/release-pipelines', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.launchdarkly.com/api/v2/projects/{projectKey}/release-pipelines",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'key' => 'standard-pipeline',
'name' => 'Standard Pipeline',
'phases' => [
[
'audiences' => [
[
'environmentKey' => '<string>',
'name' => '<string>',
'segmentKeys' => [
'<string>'
]
]
],
'name' => 'Phase 1 - Testing',
'configuration' => [
]
]
],
'description' => 'Standard pipeline to roll out to production',
'tags' => [
'example-tag'
],
'isProjectDefault' => true,
'isLegacy' => true
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.launchdarkly.com/api/v2/projects/{projectKey}/release-pipelines"
payload := strings.NewReader("{\n \"key\": \"standard-pipeline\",\n \"name\": \"Standard Pipeline\",\n \"phases\": [\n {\n \"audiences\": [\n {\n \"environmentKey\": \"<string>\",\n \"name\": \"<string>\",\n \"segmentKeys\": [\n \"<string>\"\n ]\n }\n ],\n \"name\": \"Phase 1 - Testing\",\n \"configuration\": {}\n }\n ],\n \"description\": \"Standard pipeline to roll out to production\",\n \"tags\": [\n \"example-tag\"\n ],\n \"isProjectDefault\": true,\n \"isLegacy\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://app.launchdarkly.com/api/v2/projects/{projectKey}/release-pipelines")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"key\": \"standard-pipeline\",\n \"name\": \"Standard Pipeline\",\n \"phases\": [\n {\n \"audiences\": [\n {\n \"environmentKey\": \"<string>\",\n \"name\": \"<string>\",\n \"segmentKeys\": [\n \"<string>\"\n ]\n }\n ],\n \"name\": \"Phase 1 - Testing\",\n \"configuration\": {}\n }\n ],\n \"description\": \"Standard pipeline to roll out to production\",\n \"tags\": [\n \"example-tag\"\n ],\n \"isProjectDefault\": true,\n \"isLegacy\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.launchdarkly.com/api/v2/projects/{projectKey}/release-pipelines")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"key\": \"standard-pipeline\",\n \"name\": \"Standard Pipeline\",\n \"phases\": [\n {\n \"audiences\": [\n {\n \"environmentKey\": \"<string>\",\n \"name\": \"<string>\",\n \"segmentKeys\": [\n \"<string>\"\n ]\n }\n ],\n \"name\": \"Phase 1 - Testing\",\n \"configuration\": {}\n }\n ],\n \"description\": \"Standard pipeline to roll out to production\",\n \"tags\": [\n \"example-tag\"\n ],\n \"isProjectDefault\": true,\n \"isLegacy\": true\n}"
response = http.request(request)
puts response.read_body{
"createdAt": "1684262711507",
"key": "standard-pipeline",
"name": "Standard Pipeline",
"phases": [
{
"id": "1234a56b7c89d012345e678f",
"audiences": [
{
"name": "Phase 1 - Testing",
"environment": {
"_links": {
"self": {
"href": "/api/v2/projects/my-project/environments/my-environment",
"type": "application/json"
}
},
"key": "environment-key-123abc",
"name": "My Environment",
"color": "F5A623"
},
"configuration": {
"releaseStrategy": "monitoredRelease",
"requireApproval": true,
"notifyMemberIds": [
"1234a56b7c89d012345e678f"
],
"notifyTeamKeys": [
"example-reviewer-team"
],
"releaseGuardianConfiguration": {
"monitoringWindowMilliseconds": 60000,
"rolloutWeight": 50,
"rollbackOnRegression": true,
"randomizationUnit": "user"
}
},
"segmentKeys": [
"segment-key-123abc"
]
}
],
"name": "Phase 1 - Testing",
"configuration": {}
}
],
"description": "Standard pipeline to roll out to production",
"tags": [
"example-tag"
],
"_version": 1,
"_access": {
"denied": [
{
"action": "<string>",
"reason": {
"effect": "allow",
"resources": [
"proj/*:env/*;qa_*:/flag/*"
],
"notResources": [
"<string>"
],
"actions": [
"*"
],
"notActions": [
"<string>"
],
"role_name": "<string>"
}
}
],
"allowed": [
{
"action": "<string>",
"reason": {
"effect": "allow",
"resources": [
"proj/*:env/*;qa_*:/flag/*"
],
"notResources": [
"<string>"
],
"actions": [
"*"
],
"notActions": [
"<string>"
],
"role_name": "<string>"
}
}
]
},
"isProjectDefault": true,
"_isLegacy": true
}{
"code": "invalid_request",
"message": "Invalid request body"
}{
"code": "forbidden",
"message": "Forbidden. Access to the requested resource was denied."
}{
"code": "not_found",
"message": "Invalid resource identifier"
}{
"code": "optimistic_locking_error",
"message": "Conflict. Optimistic lock error. Try again later."
}Authorizations
Path Parameters
The project key
Body
The unique identifier of this release pipeline
"standard-pipeline"
The name of the release pipeline
"Standard Pipeline"
A logical grouping of one or more environments that share attributes for rolling out changes
Show child attributes
Show child attributes
The release pipeline description
"Standard pipeline to roll out to production"
A list of tags for this release pipeline
["example-tag"]
Whether or not the newly created pipeline should be set as the default pipeline for this project
Whether or not the pipeline is enabled for Release Automation.
Response
Release pipeline response
Timestamp of when the release pipeline was created
"1684262711507"
The release pipeline key
"standard-pipeline"
The release pipeline name
"Standard Pipeline"
An ordered list of the release pipeline phases. Each phase is a logical grouping of one or more environments that share attributes for rolling out changes.
Show child attributes
Show child attributes
The release pipeline description
"Standard pipeline to roll out to production"
A list of the release pipeline's tags
["example-tag"]
The release pipeline version
1
Details on the allowed and denied actions for this release pipeline
Show child attributes
Show child attributes
Whether this release pipeline is the default pipeline for the project
Whether this release pipeline is a legacy pipeline
true