Create a cycle
curl --request POST \
--url https://api.plane.so/api/v1/workspaces/{workspace_slug}/projects/{project_id}/cycles/ \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"name": "<string>",
"description": "<string>",
"start_date": "<string>",
"end_date": "<string>",
"owned_by": "<string>",
"external_source": "<string>",
"external_id": "<string>",
"timezone": "<string>",
"project_id": "<string>"
}
'import requests
url = "https://api.plane.so/api/v1/workspaces/{workspace_slug}/projects/{project_id}/cycles/"
payload = {
"name": "<string>",
"description": "<string>",
"start_date": "<string>",
"end_date": "<string>",
"owned_by": "<string>",
"external_source": "<string>",
"external_id": "<string>",
"timezone": "<string>",
"project_id": "<string>"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
description: '<string>',
start_date: '<string>',
end_date: '<string>',
owned_by: '<string>',
external_source: '<string>',
external_id: '<string>',
timezone: '<string>',
project_id: '<string>'
})
};
fetch('https://api.plane.so/api/v1/workspaces/{workspace_slug}/projects/{project_id}/cycles/', 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://api.plane.so/api/v1/workspaces/{workspace_slug}/projects/{project_id}/cycles/",
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([
'name' => '<string>',
'description' => '<string>',
'start_date' => '<string>',
'end_date' => '<string>',
'owned_by' => '<string>',
'external_source' => '<string>',
'external_id' => '<string>',
'timezone' => '<string>',
'project_id' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.plane.so/api/v1/workspaces/{workspace_slug}/projects/{project_id}/cycles/"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"start_date\": \"<string>\",\n \"end_date\": \"<string>\",\n \"owned_by\": \"<string>\",\n \"external_source\": \"<string>\",\n \"external_id\": \"<string>\",\n \"timezone\": \"<string>\",\n \"project_id\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<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://api.plane.so/api/v1/workspaces/{workspace_slug}/projects/{project_id}/cycles/")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"start_date\": \"<string>\",\n \"end_date\": \"<string>\",\n \"owned_by\": \"<string>\",\n \"external_source\": \"<string>\",\n \"external_id\": \"<string>\",\n \"timezone\": \"<string>\",\n \"project_id\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.plane.so/api/v1/workspaces/{workspace_slug}/projects/{project_id}/cycles/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"start_date\": \"<string>\",\n \"end_date\": \"<string>\",\n \"owned_by\": \"<string>\",\n \"external_source\": \"<string>\",\n \"external_id\": \"<string>\",\n \"timezone\": \"<string>\",\n \"project_id\": \"<string>\"\n}"
response = http.request(request)
puts response.read_bodyCycle
Create a cycle
Creates a new cycle in a project.
POST
/
api
/
v1
/
workspaces
/
{workspace_slug}
/
projects
/
{project_id}
/
cycles
/
Create a cycle
curl --request POST \
--url https://api.plane.so/api/v1/workspaces/{workspace_slug}/projects/{project_id}/cycles/ \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"name": "<string>",
"description": "<string>",
"start_date": "<string>",
"end_date": "<string>",
"owned_by": "<string>",
"external_source": "<string>",
"external_id": "<string>",
"timezone": "<string>",
"project_id": "<string>"
}
'import requests
url = "https://api.plane.so/api/v1/workspaces/{workspace_slug}/projects/{project_id}/cycles/"
payload = {
"name": "<string>",
"description": "<string>",
"start_date": "<string>",
"end_date": "<string>",
"owned_by": "<string>",
"external_source": "<string>",
"external_id": "<string>",
"timezone": "<string>",
"project_id": "<string>"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
description: '<string>',
start_date: '<string>',
end_date: '<string>',
owned_by: '<string>',
external_source: '<string>',
external_id: '<string>',
timezone: '<string>',
project_id: '<string>'
})
};
fetch('https://api.plane.so/api/v1/workspaces/{workspace_slug}/projects/{project_id}/cycles/', 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://api.plane.so/api/v1/workspaces/{workspace_slug}/projects/{project_id}/cycles/",
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([
'name' => '<string>',
'description' => '<string>',
'start_date' => '<string>',
'end_date' => '<string>',
'owned_by' => '<string>',
'external_source' => '<string>',
'external_id' => '<string>',
'timezone' => '<string>',
'project_id' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.plane.so/api/v1/workspaces/{workspace_slug}/projects/{project_id}/cycles/"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"start_date\": \"<string>\",\n \"end_date\": \"<string>\",\n \"owned_by\": \"<string>\",\n \"external_source\": \"<string>\",\n \"external_id\": \"<string>\",\n \"timezone\": \"<string>\",\n \"project_id\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<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://api.plane.so/api/v1/workspaces/{workspace_slug}/projects/{project_id}/cycles/")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"start_date\": \"<string>\",\n \"end_date\": \"<string>\",\n \"owned_by\": \"<string>\",\n \"external_source\": \"<string>\",\n \"external_id\": \"<string>\",\n \"timezone\": \"<string>\",\n \"project_id\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.plane.so/api/v1/workspaces/{workspace_slug}/projects/{project_id}/cycles/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"start_date\": \"<string>\",\n \"end_date\": \"<string>\",\n \"owned_by\": \"<string>\",\n \"external_source\": \"<string>\",\n \"external_id\": \"<string>\",\n \"timezone\": \"<string>\",\n \"project_id\": \"<string>\"\n}"
response = http.request(request)
puts response.read_bodyPath parameters
string
required
The workspace_slug represents the unique workspace identifier for a workspace in Plane. It can be found in the URL. For example, in the URL
https://app.plane.so/my-team/projects/, the workspace slug is my-team.string
required
The unique identifier of the project.
Body parameters
string
required
Name of the cycle.
string
Description of the cycle.
string
Start date of the cycle in YYYY-MM-DD format.
string
End date of the cycle in YYYY-MM-DD format.
string
required
ID of the user who owns the cycle.
string
External source identifier.
string
External ID from the external source.
string
Timezone for the cycle.
string
required
ID of the project for the cycle.

