Workflows
Get workflows
For the complete documentation index, see llms.txt. For the full documentation snapshot, see llms-full.txt.
Display workflows associated with a feature flag.
GET
/
api
/
v2
/
projects
/
{projectKey}
/
flags
/
{featureFlagKey}
/
environments
/
{environmentKey}
/
workflows
Get workflows
curl --request GET \
--url https://app.launchdarkly.com/api/v2/projects/{projectKey}/flags/{featureFlagKey}/environments/{environmentKey}/workflows \
--header 'Authorization: <api-key>'import requests
url = "https://app.launchdarkly.com/api/v2/projects/{projectKey}/flags/{featureFlagKey}/environments/{environmentKey}/workflows"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://app.launchdarkly.com/api/v2/projects/{projectKey}/flags/{featureFlagKey}/environments/{environmentKey}/workflows', 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}/flags/{featureFlagKey}/environments/{environmentKey}/workflows",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://app.launchdarkly.com/api/v2/projects/{projectKey}/flags/{featureFlagKey}/environments/{environmentKey}/workflows"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.launchdarkly.com/api/v2/projects/{projectKey}/flags/{featureFlagKey}/environments/{environmentKey}/workflows")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.launchdarkly.com/api/v2/projects/{projectKey}/flags/{featureFlagKey}/environments/{environmentKey}/workflows")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"items": [
{
"_id": "12ab3c4d5ef1a2345bcde67f",
"_version": 1,
"_conflicts": [
{
"stageId": "12ab3c4d5ef1a2345bcde67f",
"message": "<string>"
}
],
"_creationDate": "1654104600000",
"_maintainerId": "12ab3c45de678910abc12345",
"_links": {},
"name": "Progressive rollout starting in two days",
"_execution": "{\"status\": \"completed\"}",
"description": "Turn flag on for 10% of customers each day",
"kind": "custom",
"stages": [
{
"_id": "12ab3c45de678910abc12345",
"conditions": [
{
"_execution": {
"status": "completed"
},
"id": "12ab3c45de678910abc12345",
"kind": "schedule",
"scheduleKind": "relative",
"waitDuration": 2,
"waitDurationUnit": "calendarDay"
}
],
"action": "{ \"kind\": \"patch\", \"instructions\": [{ \"kind\": \"turnFlagOn\"}] }",
"_execution": "{ \"status\": \"completed\" }",
"name": "10% rollout on day 1"
}
],
"meta": {
"parameters": [
{
"_id": "<string>",
"path": "<string>",
"default": {
"value": "<unknown>",
"booleanVariationValue": true,
"ruleClause": {
"attribute": "<string>",
"op": "in",
"negate": true
}
},
"valid": true
}
]
},
"templateKey": "example-workflow-template"
}
],
"totalCount": 1,
"_links": {}
}{
"code": "unauthorized",
"message": "Invalid access token"
}{
"code": "forbidden",
"message": "Forbidden. Access to the requested resource was denied."
}{
"code": "not_found",
"message": "Invalid resource identifier"
}{
"code": "rate_limited",
"message": "You've exceeded the API rate limit. Try again later."
}Authorizations
Path Parameters
The project key
The feature flag key
The environment key
Query Parameters
Filter results by workflow status. Valid status filters are active, completed, and failed.
A field to sort the items by. Prefix field by a dash ( - ) to sort in descending order. This endpoint supports sorting by creationDate or stopDate.
The maximum number of workflows to return. Defaults to 20.
Where to start in the list. Defaults to 0. Use this with pagination. For example, an offset of 10 skips the first ten items and then returns the next items in the list, up to the query limit.
⌘I
Get workflows
curl --request GET \
--url https://app.launchdarkly.com/api/v2/projects/{projectKey}/flags/{featureFlagKey}/environments/{environmentKey}/workflows \
--header 'Authorization: <api-key>'import requests
url = "https://app.launchdarkly.com/api/v2/projects/{projectKey}/flags/{featureFlagKey}/environments/{environmentKey}/workflows"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://app.launchdarkly.com/api/v2/projects/{projectKey}/flags/{featureFlagKey}/environments/{environmentKey}/workflows', 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}/flags/{featureFlagKey}/environments/{environmentKey}/workflows",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://app.launchdarkly.com/api/v2/projects/{projectKey}/flags/{featureFlagKey}/environments/{environmentKey}/workflows"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.launchdarkly.com/api/v2/projects/{projectKey}/flags/{featureFlagKey}/environments/{environmentKey}/workflows")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.launchdarkly.com/api/v2/projects/{projectKey}/flags/{featureFlagKey}/environments/{environmentKey}/workflows")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"items": [
{
"_id": "12ab3c4d5ef1a2345bcde67f",
"_version": 1,
"_conflicts": [
{
"stageId": "12ab3c4d5ef1a2345bcde67f",
"message": "<string>"
}
],
"_creationDate": "1654104600000",
"_maintainerId": "12ab3c45de678910abc12345",
"_links": {},
"name": "Progressive rollout starting in two days",
"_execution": "{\"status\": \"completed\"}",
"description": "Turn flag on for 10% of customers each day",
"kind": "custom",
"stages": [
{
"_id": "12ab3c45de678910abc12345",
"conditions": [
{
"_execution": {
"status": "completed"
},
"id": "12ab3c45de678910abc12345",
"kind": "schedule",
"scheduleKind": "relative",
"waitDuration": 2,
"waitDurationUnit": "calendarDay"
}
],
"action": "{ \"kind\": \"patch\", \"instructions\": [{ \"kind\": \"turnFlagOn\"}] }",
"_execution": "{ \"status\": \"completed\" }",
"name": "10% rollout on day 1"
}
],
"meta": {
"parameters": [
{
"_id": "<string>",
"path": "<string>",
"default": {
"value": "<unknown>",
"booleanVariationValue": true,
"ruleClause": {
"attribute": "<string>",
"op": "in",
"negate": true
}
},
"valid": true
}
]
},
"templateKey": "example-workflow-template"
}
],
"totalCount": 1,
"_links": {}
}{
"code": "unauthorized",
"message": "Invalid access token"
}{
"code": "forbidden",
"message": "Forbidden. Access to the requested resource was denied."
}{
"code": "not_found",
"message": "Invalid resource identifier"
}{
"code": "rate_limited",
"message": "You've exceeded the API rate limit. Try again later."
}