---
title: "Updates a project"
method: POST
path: "/projects/{id}"
tags: ["project"]
---

# Updates a project

`POST /projects/{id}`

Updates a project. This does not include adding a task (see below).

## Path parameters

- `id` integer, required

## Request body

- ModelsProject
  - `background_blur_hash` string — Contains a very small version of the project background to use as a blurry preview until the actual background is loaded. Check out https://blurha.sh/ to learn how it works.
  - `background_information` unknown
  - `created` string — A timestamp when this project was created. You cannot change this value.
  - `description` string — The description of the project.
  - `hex_color` string — The hex color of this project
  - `id` integer — The unique, numeric id of this project.
  - `identifier` string — The unique project short identifier. Used to build task identifiers.
  - `is_archived` boolean — Whether a project is archived.
  - `is_favorite` boolean — True if a project is a favorite. Favorite projects show up in a separate parent project. This value depends on the user making the call to the api.
  - `max_permission` 0 | 1 | 2
  - `owner` UserUser
    - `bot_owner_id` integer — BotOwnerID is the ID of the owning (human) user if this user is a bot. A non-zero value means this user is a bot and cannot authenticate via password.
    - `created` string — A timestamp when this task was created. You cannot change this value.
    - `email` string — The user's email address.
    - `id` integer — The unique, numeric id of this user.
    - `name` string — The full name of the user.
    - `updated` string — A timestamp when this task was last updated. You cannot change this value.
    - `username` string — The username of the user. Is always unique.
  - `parent_project_id` integer
  - `position` number — The position this project has when querying all projects. See the tasks.position property on how to use this.
  - `subscription` ModelsSubscription
    - `created` string — A timestamp when this subscription was created. You cannot change this value.
    - `entity` integer
    - `entity_id` integer — The id of the entity to subscribe to.
    - `id` integer — The numeric ID of the subscription
  - `title` string — The title of the project. You'll see this in the overview.
  - `updated` string — A timestamp when this project was last updated. You cannot change this value.
  - `views` ModelsProjectView[]
    - `bucket_configuration` ModelsProjectViewBucketConfiguration[] — When the bucket configuration mode is not `manual`, this field holds the options of that configuration.
      - `filter` ModelsTaskCollection
        - `filter` string — The filter query to match tasks by. Check out https://vikunja.io/docs/filters for a full explanation.
        - `filter_include_nulls` boolean — If set to true, the result will also include null values
        - `order_by` string[] — The query parameter to order the items by. This can be either asc or desc, with asc being the default.
        - `s` string
        - `sort_by` string[] — The query parameter to sort by. This is for ex. done, priority, etc.
      - `title` string
    - `bucket_configuration_mode` 'none' | 'manual' | 'filter' — The bucket configuration mode. Can be `none`, `manual` or `filter`. `manual` allows to move tasks between buckets as you normally would. `filter` creates buckets based on a filter for each bucket.
    - `created` string — A timestamp when this reaction was created. You cannot change this value.
    - `default_bucket_id` integer — The ID of the bucket where new tasks without a bucket are added to. By default, this is the leftmost bucket in a view.
    - `done_bucket_id` integer — If tasks are moved to the done bucket, they are marked as done. If they are marked as done individually, they are moved into the done bucket.
    - `filter` ModelsTaskCollection
      - `filter` string — The filter query to match tasks by. Check out https://vikunja.io/docs/filters for a full explanation.
      - `filter_include_nulls` boolean — If set to true, the result will also include null values
      - `order_by` string[] — The query parameter to order the items by. This can be either asc or desc, with asc being the default.
      - `s` string
      - `sort_by` string[] — The query parameter to sort by. This is for ex. done, priority, etc.
    - `id` integer — The unique numeric id of this view
    - `position` number — The position of this view in the list. The list of all views will be sorted by this parameter.
    - `project_id` integer — The project this view belongs to
    - `title` string — The title of this view
    - `updated` string — A timestamp when this view was updated. You cannot change this value.
    - `view_kind` 'list' | 'gantt' | 'table' | 'kanban' — The kind of this view. Can be `list`, `gantt`, `table` or `kanban`.

## Response `200`

The updated project.

- ModelsProject
  - `background_blur_hash` string — Contains a very small version of the project background to use as a blurry preview until the actual background is loaded. Check out https://blurha.sh/ to learn how it works.
  - `background_information` unknown
  - `created` string — A timestamp when this project was created. You cannot change this value.
  - `description` string — The description of the project.
  - `hex_color` string — The hex color of this project
  - `id` integer — The unique, numeric id of this project.
  - `identifier` string — The unique project short identifier. Used to build task identifiers.
  - `is_archived` boolean — Whether a project is archived.
  - `is_favorite` boolean — True if a project is a favorite. Favorite projects show up in a separate parent project. This value depends on the user making the call to the api.
  - `max_permission` 0 | 1 | 2
  - `owner` UserUser
    - `bot_owner_id` integer — BotOwnerID is the ID of the owning (human) user if this user is a bot. A non-zero value means this user is a bot and cannot authenticate via password.
    - `created` string — A timestamp when this task was created. You cannot change this value.
    - `email` string — The user's email address.
    - `id` integer — The unique, numeric id of this user.
    - `name` string — The full name of the user.
    - `updated` string — A timestamp when this task was last updated. You cannot change this value.
    - `username` string — The username of the user. Is always unique.
  - `parent_project_id` integer
  - `position` number — The position this project has when querying all projects. See the tasks.position property on how to use this.
  - `subscription` ModelsSubscription
    - `created` string — A timestamp when this subscription was created. You cannot change this value.
    - `entity` integer
    - `entity_id` integer — The id of the entity to subscribe to.
    - `id` integer — The numeric ID of the subscription
  - `title` string — The title of the project. You'll see this in the overview.
  - `updated` string — A timestamp when this project was last updated. You cannot change this value.
  - `views` ModelsProjectView[]
    - `bucket_configuration` ModelsProjectViewBucketConfiguration[] — When the bucket configuration mode is not `manual`, this field holds the options of that configuration.
      - `filter` ModelsTaskCollection
        - `filter` string — The filter query to match tasks by. Check out https://vikunja.io/docs/filters for a full explanation.
        - `filter_include_nulls` boolean — If set to true, the result will also include null values
        - `order_by` string[] — The query parameter to order the items by. This can be either asc or desc, with asc being the default.
        - `s` string
        - `sort_by` string[] — The query parameter to sort by. This is for ex. done, priority, etc.
      - `title` string
    - `bucket_configuration_mode` 'none' | 'manual' | 'filter' — The bucket configuration mode. Can be `none`, `manual` or `filter`. `manual` allows to move tasks between buckets as you normally would. `filter` creates buckets based on a filter for each bucket.
    - `created` string — A timestamp when this reaction was created. You cannot change this value.
    - `default_bucket_id` integer — The ID of the bucket where new tasks without a bucket are added to. By default, this is the leftmost bucket in a view.
    - `done_bucket_id` integer — If tasks are moved to the done bucket, they are marked as done. If they are marked as done individually, they are moved into the done bucket.
    - `filter` ModelsTaskCollection
      - `filter` string — The filter query to match tasks by. Check out https://vikunja.io/docs/filters for a full explanation.
      - `filter_include_nulls` boolean — If set to true, the result will also include null values
      - `order_by` string[] — The query parameter to order the items by. This can be either asc or desc, with asc being the default.
      - `s` string
      - `sort_by` string[] — The query parameter to sort by. This is for ex. done, priority, etc.
    - `id` integer — The unique numeric id of this view
    - `position` number — The position of this view in the list. The list of all views will be sorted by this parameter.
    - `project_id` integer — The project this view belongs to
    - `title` string — The title of this view
    - `updated` string — A timestamp when this view was updated. You cannot change this value.
    - `view_kind` 'list' | 'gantt' | 'table' | 'kanban' — The kind of this view. Can be `list`, `gantt`, `table` or `kanban`.

## Other responses

- `400` — Invalid project object provided.
- `403` — The user does not have access to the project
- `500` — Internal error

---

[API](https://skmtc.net/go-vikunja/apis/vikunja-api.md) · [All operations](https://skmtc.net/go-vikunja/apis/vikunja-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/go-vikunja/vikunja-api/versions/feb3f68bbdf1/schema)
