curl --request POST \
--url https://cloud.kaneo.app/api/task/{projectId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"title": "<string>",
"description": "<string>",
"status": "<string>",
"startDate": "<string>",
"dueDate": "<string>",
"userId": "<string>",
"draftAssetIds": [
"<string>"
],
"customFields": [
{
"fieldId": "<string>",
"value": "<string>"
}
]
}
'import requests
url = "https://cloud.kaneo.app/api/task/{projectId}"
payload = {
"title": "<string>",
"description": "<string>",
"status": "<string>",
"startDate": "<string>",
"dueDate": "<string>",
"userId": "<string>",
"draftAssetIds": ["<string>"],
"customFields": [
{
"fieldId": "<string>",
"value": "<string>"
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
title: '<string>',
description: '<string>',
status: '<string>',
startDate: '<string>',
dueDate: '<string>',
userId: '<string>',
draftAssetIds: ['<string>'],
customFields: [{fieldId: '<string>', value: '<string>'}]
})
};
fetch('https://cloud.kaneo.app/api/task/{projectId}', 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://cloud.kaneo.app/api/task/{projectId}",
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([
'title' => '<string>',
'description' => '<string>',
'status' => '<string>',
'startDate' => '<string>',
'dueDate' => '<string>',
'userId' => '<string>',
'draftAssetIds' => [
'<string>'
],
'customFields' => [
[
'fieldId' => '<string>',
'value' => '<string>'
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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://cloud.kaneo.app/api/task/{projectId}"
payload := strings.NewReader("{\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"status\": \"<string>\",\n \"startDate\": \"<string>\",\n \"dueDate\": \"<string>\",\n \"userId\": \"<string>\",\n \"draftAssetIds\": [\n \"<string>\"\n ],\n \"customFields\": [\n {\n \"fieldId\": \"<string>\",\n \"value\": \"<string>\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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://cloud.kaneo.app/api/task/{projectId}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"status\": \"<string>\",\n \"startDate\": \"<string>\",\n \"dueDate\": \"<string>\",\n \"userId\": \"<string>\",\n \"draftAssetIds\": [\n \"<string>\"\n ],\n \"customFields\": [\n {\n \"fieldId\": \"<string>\",\n \"value\": \"<string>\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://cloud.kaneo.app/api/task/{projectId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"status\": \"<string>\",\n \"startDate\": \"<string>\",\n \"dueDate\": \"<string>\",\n \"userId\": \"<string>\",\n \"draftAssetIds\": [\n \"<string>\"\n ],\n \"customFields\": [\n {\n \"fieldId\": \"<string>\",\n \"value\": \"<string>\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"projectId": "<string>",
"position": 123,
"number": 123,
"userId": "<string>",
"title": "<string>",
"description": "<string>",
"status": "<string>",
"priority": "<string>",
"startDate": "2023-11-07T05:31:56Z",
"dueDate": "2023-11-07T05:31:56Z",
"createdAt": "2023-11-07T05:31:56Z",
"descriptionDeferred": true,
"recurrence": {
"frequency": "daily",
"interval": 50,
"timeZone": "<string>",
"weekdays": [
3
]
},
"customFields": [
{
"fieldId": "<string>",
"value": "<string>"
}
]
}{
"message": "Task not found",
"code": "NOT_FOUND",
"issues": [
{
"path": "body.title",
"message": "Required"
}
],
"missingPermissions": [
"task:update"
]
}{
"message": "Task not found",
"code": "NOT_FOUND",
"issues": [
{
"path": "body.title",
"message": "Required"
}
],
"missingPermissions": [
"task:update"
]
}{
"message": "Task not found",
"code": "NOT_FOUND",
"issues": [
{
"path": "body.title",
"message": "Required"
}
],
"missingPermissions": [
"task:update"
]
}{
"message": "Task not found",
"code": "NOT_FOUND",
"issues": [
{
"path": "body.title",
"message": "Required"
}
],
"missingPermissions": [
"task:update"
]
}{
"message": "Task not found",
"code": "NOT_FOUND",
"issues": [
{
"path": "body.title",
"message": "Required"
}
],
"missingPermissions": [
"task:update"
]
}Create task
Add a task to a project. It is placed in the column named by status.
curl --request POST \
--url https://cloud.kaneo.app/api/task/{projectId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"title": "<string>",
"description": "<string>",
"status": "<string>",
"startDate": "<string>",
"dueDate": "<string>",
"userId": "<string>",
"draftAssetIds": [
"<string>"
],
"customFields": [
{
"fieldId": "<string>",
"value": "<string>"
}
]
}
'import requests
url = "https://cloud.kaneo.app/api/task/{projectId}"
payload = {
"title": "<string>",
"description": "<string>",
"status": "<string>",
"startDate": "<string>",
"dueDate": "<string>",
"userId": "<string>",
"draftAssetIds": ["<string>"],
"customFields": [
{
"fieldId": "<string>",
"value": "<string>"
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
title: '<string>',
description: '<string>',
status: '<string>',
startDate: '<string>',
dueDate: '<string>',
userId: '<string>',
draftAssetIds: ['<string>'],
customFields: [{fieldId: '<string>', value: '<string>'}]
})
};
fetch('https://cloud.kaneo.app/api/task/{projectId}', 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://cloud.kaneo.app/api/task/{projectId}",
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([
'title' => '<string>',
'description' => '<string>',
'status' => '<string>',
'startDate' => '<string>',
'dueDate' => '<string>',
'userId' => '<string>',
'draftAssetIds' => [
'<string>'
],
'customFields' => [
[
'fieldId' => '<string>',
'value' => '<string>'
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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://cloud.kaneo.app/api/task/{projectId}"
payload := strings.NewReader("{\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"status\": \"<string>\",\n \"startDate\": \"<string>\",\n \"dueDate\": \"<string>\",\n \"userId\": \"<string>\",\n \"draftAssetIds\": [\n \"<string>\"\n ],\n \"customFields\": [\n {\n \"fieldId\": \"<string>\",\n \"value\": \"<string>\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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://cloud.kaneo.app/api/task/{projectId}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"status\": \"<string>\",\n \"startDate\": \"<string>\",\n \"dueDate\": \"<string>\",\n \"userId\": \"<string>\",\n \"draftAssetIds\": [\n \"<string>\"\n ],\n \"customFields\": [\n {\n \"fieldId\": \"<string>\",\n \"value\": \"<string>\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://cloud.kaneo.app/api/task/{projectId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"title\": \"<string>\",\n \"description\": \"<string>\",\n \"status\": \"<string>\",\n \"startDate\": \"<string>\",\n \"dueDate\": \"<string>\",\n \"userId\": \"<string>\",\n \"draftAssetIds\": [\n \"<string>\"\n ],\n \"customFields\": [\n {\n \"fieldId\": \"<string>\",\n \"value\": \"<string>\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"projectId": "<string>",
"position": 123,
"number": 123,
"userId": "<string>",
"title": "<string>",
"description": "<string>",
"status": "<string>",
"priority": "<string>",
"startDate": "2023-11-07T05:31:56Z",
"dueDate": "2023-11-07T05:31:56Z",
"createdAt": "2023-11-07T05:31:56Z",
"descriptionDeferred": true,
"recurrence": {
"frequency": "daily",
"interval": 50,
"timeZone": "<string>",
"weekdays": [
3
]
},
"customFields": [
{
"fieldId": "<string>",
"value": "<string>"
}
]
}{
"message": "Task not found",
"code": "NOT_FOUND",
"issues": [
{
"path": "body.title",
"message": "Required"
}
],
"missingPermissions": [
"task:update"
]
}{
"message": "Task not found",
"code": "NOT_FOUND",
"issues": [
{
"path": "body.title",
"message": "Required"
}
],
"missingPermissions": [
"task:update"
]
}{
"message": "Task not found",
"code": "NOT_FOUND",
"issues": [
{
"path": "body.title",
"message": "Required"
}
],
"missingPermissions": [
"task:update"
]
}{
"message": "Task not found",
"code": "NOT_FOUND",
"issues": [
{
"path": "body.title",
"message": "Required"
}
],
"missingPermissions": [
"task:update"
]
}{
"message": "Task not found",
"code": "NOT_FOUND",
"issues": [
{
"path": "body.title",
"message": "Required"
}
],
"missingPermissions": [
"task:update"
]
}Authorizations
API key or session token (Bearer)
Path Parameters
Body
no-priority, low, medium, high, urgent The target column's slug.
Assignee, if any.
Omit to create a task that does not repeat.
Show child attributes
Show child attributes
100Show child attributes
Show child attributes
Response
The created task
Order within its column, ascending.
Per-project counter shown as {projectSlug}-{number}.
The assignee, if any.
The slug of the column the task sits in.
One of: no-priority, low, medium, high, urgent.
True when the list omits a large description; load the task detail or description pages to read it. Do not replace stored text with this null summary.
When a task with this rule moves into a final column, the next task is created with its dates moved forward by one interval from the completed task's due date.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Was this page helpful?