curl --request PUT \
--url https://cloud.kaneo.app/api/task/recurrence/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"recurrence": {
"interval": 50,
"timeZone": "<string>",
"weekdays": [
3
]
}
}
'import requests
url = "https://cloud.kaneo.app/api/task/recurrence/{id}"
payload = { "recurrence": {
"interval": 50,
"timeZone": "<string>",
"weekdays": [3]
} }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({recurrence: {interval: 50, timeZone: '<string>', weekdays: [3]}})
};
fetch('https://cloud.kaneo.app/api/task/recurrence/{id}', 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/recurrence/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'recurrence' => [
'interval' => 50,
'timeZone' => '<string>',
'weekdays' => [
3
]
]
]),
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/recurrence/{id}"
payload := strings.NewReader("{\n \"recurrence\": {\n \"interval\": 50,\n \"timeZone\": \"<string>\",\n \"weekdays\": [\n 3\n ]\n }\n}")
req, _ := http.NewRequest("PUT", 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.put("https://cloud.kaneo.app/api/task/recurrence/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"recurrence\": {\n \"interval\": 50,\n \"timeZone\": \"<string>\",\n \"weekdays\": [\n 3\n ]\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://cloud.kaneo.app/api/task/recurrence/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"recurrence\": {\n \"interval\": 50,\n \"timeZone\": \"<string>\",\n \"weekdays\": [\n 3\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"
]
}{
"message": "Task not found",
"code": "NOT_FOUND",
"issues": [
{
"path": "body.title",
"message": "Required"
}
],
"missingPermissions": [
"task:update"
]
}Update task recurrence
Make a task repeat, or stop it repeating. Setting a rule requires task:update and task:create; clearing it requires task:update. When a repeating task moves into a final column, the next task is created in the project’s first open column with its dates moved forward one interval from the completed task’s due date, and the rule moves to that new task. A completed task cannot start repeating: reopen it, or set the rule on its next task.
curl --request PUT \
--url https://cloud.kaneo.app/api/task/recurrence/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"recurrence": {
"interval": 50,
"timeZone": "<string>",
"weekdays": [
3
]
}
}
'import requests
url = "https://cloud.kaneo.app/api/task/recurrence/{id}"
payload = { "recurrence": {
"interval": 50,
"timeZone": "<string>",
"weekdays": [3]
} }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({recurrence: {interval: 50, timeZone: '<string>', weekdays: [3]}})
};
fetch('https://cloud.kaneo.app/api/task/recurrence/{id}', 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/recurrence/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'recurrence' => [
'interval' => 50,
'timeZone' => '<string>',
'weekdays' => [
3
]
]
]),
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/recurrence/{id}"
payload := strings.NewReader("{\n \"recurrence\": {\n \"interval\": 50,\n \"timeZone\": \"<string>\",\n \"weekdays\": [\n 3\n ]\n }\n}")
req, _ := http.NewRequest("PUT", 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.put("https://cloud.kaneo.app/api/task/recurrence/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"recurrence\": {\n \"interval\": 50,\n \"timeZone\": \"<string>\",\n \"weekdays\": [\n 3\n ]\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://cloud.kaneo.app/api/task/recurrence/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"recurrence\": {\n \"interval\": 50,\n \"timeZone\": \"<string>\",\n \"weekdays\": [\n 3\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"
]
}{
"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
Null stops the task from repeating.
Show child attributes
Show child attributes
Response
The updated 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?