---
title: "Update task recurrence"
method: PUT
path: "/task/recurrence/{id}"
tags: ["Tasks"]
---

# Update task recurrence

`PUT /task/recurrence/{id}`

## Request

- Base URL: `https://cloud.kaneo.app/api`
- URL: `https://cloud.kaneo.app/api/task/recurrence/{id}`
- Auth: HTTP bearer

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.

## Path parameters

- `id` string, required

## Request body

- object
  - `recurrence` TaskRecurrence, required: 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.
    - `frequency` 'daily' | 'weekly' | 'monthly' | 'yearly', required
    - `interval` integer, required: Repeat every this many days, weeks, months, or years.
    - `weekdays` integer[]: Weekly rules only: the days to repeat on, 0 for Sunday to 6 for Saturday. Without them, a weekly rule repeats on the due date's weekday.
    - `timeZone` string, required: IANA time zone used to keep the next due date on the same local day and time.

## Response `200`

The updated task

- Task
  - `id` string, required
  - `projectId` string, required
  - `position` number, nullable, required: Order within its column, ascending.
  - `number` number, nullable, required: Per-project counter shown as {projectSlug}-{number}.
  - `userId` string, nullable, required: The assignee, if any.
  - `title` string, required
  - `description` string, nullable, required
  - `descriptionDeferred` boolean: 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.
  - `status` string, required: The slug of the column the task sits in.
  - `priority` string, required: One of: no-priority, low, medium, high, urgent.
  - `startDate` string, date-time, nullable, required
  - `dueDate` string, date-time, nullable, required
  - `recurrence` TaskRecurrence: 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.
    - `frequency` 'daily' | 'weekly' | 'monthly' | 'yearly', required
    - `interval` integer, required: Repeat every this many days, weeks, months, or years.
    - `weekdays` integer[]: Weekly rules only: the days to repeat on, 0 for Sunday to 6 for Saturday. Without them, a weekly rule repeats on the due date's weekday.
    - `timeZone` string, required: IANA time zone used to keep the next due date on the same local day and time.
  - `createdAt` string, date-time, required
  - `customFields` object[]
    - `fieldId` string, required
    - `value` string, required

## Other responses

- `400`: Invalid recurrence rule
- `401`: Missing or invalid credentials
- `403`: No access to the project, missing task:update, or missing task:create when setting a rule
- `404`: Task not found
- `409`: The task is completed and no longer holds a rule; reopen it first
- `429`: The API key exceeded its rate limit or usage quota. Wait the number of seconds in Retry-After before retrying. The X-RateLimit headers are sent only when the rate limit was hit.

## Changes

- **2026-10-26** `a29fbb97c906`: 4 breaking, 2 warning, 2 info
  - the `recurrence` response's property type changed from `object, null` to no type for status `200`
  - removed the required property `recurrence/frequency` from the response with the `200` status
  - removed the required property `recurrence/interval` from the response with the `200` status
  - removed the required property `recurrence/timeZone` from the response with the `200` status
  - …4 more
- **2026-10-26** `d1d37e98039b`: 1 info
  - endpoint added
- **2026-10-25** `e5d8b29270df`: 1 breaking
  - api path removed without deprecation
- **2026-10-18** `f46457f9e217`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/usekaneo/apis/kaneo-api/changes/task/recurrence/:id/put.md)

---

[API](https://skmtc.dev/usekaneo/apis/kaneo-api.md) - [All operations](https://skmtc.dev/usekaneo/apis/kaneo-api/llms.txt) - [OpenAPI document](https://skmtc.dev/usekaneo/apis/kaneo-api/revisions/93f78789100c?raw)
