Create a work item type
curl --request POST \
--url https://api.plane.so/api/v1/workspaces/{workspace_slug}/projects/{project_id}/work-item-types/ \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"name": "<string>",
"description": "<string>",
"logo_props": {},
"is_epic": true,
"is_default": true,
"is_active": true,
"level": 123
}
'import requests
url = "https://api.plane.so/api/v1/workspaces/{workspace_slug}/projects/{project_id}/work-item-types/"
payload = {
"name": "<string>",
"description": "<string>",
"logo_props": {},
"is_epic": True,
"is_default": True,
"is_active": True,
"level": 123
}
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>',
logo_props: {},
is_epic: true,
is_default: true,
is_active: true,
level: 123
})
};
fetch('https://api.plane.so/api/v1/workspaces/{workspace_slug}/projects/{project_id}/work-item-types/', 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}/work-item-types/",
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>',
'logo_props' => [
],
'is_epic' => true,
'is_default' => true,
'is_active' => true,
'level' => 123
]),
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}/work-item-types/"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"logo_props\": {},\n \"is_epic\": true,\n \"is_default\": true,\n \"is_active\": true,\n \"level\": 123\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}/work-item-types/")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"logo_props\": {},\n \"is_epic\": true,\n \"is_default\": true,\n \"is_active\": true,\n \"level\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.plane.so/api/v1/workspaces/{workspace_slug}/projects/{project_id}/work-item-types/")
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 \"logo_props\": {},\n \"is_epic\": true,\n \"is_default\": true,\n \"is_active\": true,\n \"level\": 123\n}"
response = http.request(request)
puts response.read_bodyWork Item Types
Create a work item type
Creates a new work item type in a project.
POST
/
api
/
v1
/
workspaces
/
{workspace_slug}
/
projects
/
{project_id}
/
work-item-types
/
Create a work item type
curl --request POST \
--url https://api.plane.so/api/v1/workspaces/{workspace_slug}/projects/{project_id}/work-item-types/ \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"name": "<string>",
"description": "<string>",
"logo_props": {},
"is_epic": true,
"is_default": true,
"is_active": true,
"level": 123
}
'import requests
url = "https://api.plane.so/api/v1/workspaces/{workspace_slug}/projects/{project_id}/work-item-types/"
payload = {
"name": "<string>",
"description": "<string>",
"logo_props": {},
"is_epic": True,
"is_default": True,
"is_active": True,
"level": 123
}
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>',
logo_props: {},
is_epic: true,
is_default: true,
is_active: true,
level: 123
})
};
fetch('https://api.plane.so/api/v1/workspaces/{workspace_slug}/projects/{project_id}/work-item-types/', 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}/work-item-types/",
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>',
'logo_props' => [
],
'is_epic' => true,
'is_default' => true,
'is_active' => true,
'level' => 123
]),
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}/work-item-types/"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"logo_props\": {},\n \"is_epic\": true,\n \"is_default\": true,\n \"is_active\": true,\n \"level\": 123\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}/work-item-types/")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"description\": \"<string>\",\n \"logo_props\": {},\n \"is_epic\": true,\n \"is_default\": true,\n \"is_active\": true,\n \"level\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.plane.so/api/v1/workspaces/{workspace_slug}/projects/{project_id}/work-item-types/")
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 \"logo_props\": {},\n \"is_epic\": true,\n \"is_default\": true,\n \"is_active\": true,\n \"level\": 123\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
Name of the work item type.
string
Description of the work item type.
object
Logo properties for the work item type.
boolean
Whether this work item type is an epic.
boolean
Whether this is the default work item type.
boolean
Whether this work item type is active.
number
Hierarchical level of the work item type.
⌘I

