---
title: "Edit a project"
method: PATCH
path: "/repos/{owner}/{repo}/projects/{id}"
tags: ["repository"]
---

# Edit a project

`PATCH /repos/{owner}/{repo}/projects/{id}`

## Path parameters

- `owner` string, required
- `repo` string, required
- `id` integer, required

## Request body

- EditProjectOption — EditProjectOption represents options for editing a project
  - `card_type` string — Card type: "text_only" or "images_and_text"
  - `description` string
  - `state` 'open' | 'closed'
  - `title` string

## Response `200`

Project

- Project — Projects track issues and pull requests, standalone note cards are not supported.
  - `card_type` string — Card type: "text_only" or "images_and_text"
  - `closed_at` string, date-time
  - `created_at` string, date-time
  - `creator` User — User represents a user
    - `active` boolean — Is user active
    - `avatar_url` string — URL to the user's avatar
    - `created` string, date-time
    - `description` string — the user's description
    - `email` string, email
    - `followers_count` integer — user counts
    - `following_count` integer
    - `full_name` string — the user's full name
    - `html_url` string — URL to the user's gitea page
    - `id` integer — the user's id
    - `is_admin` boolean — Is the user an administrator
    - `language` string — User locale
    - `last_login` string, date-time
    - `location` string — the user's location
    - `login` string — login of the user, same as `username`
    - `login_name` string — identifier of the user, provided by the external authenticator (if configured)
    - `prohibit_login` boolean — Is user login prohibited
    - `restricted` boolean — Is user restricted
    - `source_id` integer — The ID of the user's Authentication Source
    - `starred_repos_count` integer
    - `type` 'User' | 'Organization' | 'Bot' — the user type
    - `visibility` 'public' | 'limited' | 'private' — User visibility level option: public, limited, private
    - `website` string — the user's website
  - `creator_id` integer — Deprecated: use Creator instead
  - `description` string
  - `html_url` string
  - `id` integer
  - `is_closed` boolean — Deprecated: use State instead
  - `num_closed_issues` integer
  - `num_issues` integer
  - `num_open_issues` integer
  - `owner_id` integer
  - `repo_id` integer
  - `state` 'open' | 'closed'
  - `template_type` string — Template type: "none", "basic_kanban" or "bug_triage"
  - `title` string
  - `type` string — Project type: "individual", "repository" or "organization"
  - `updated_at` string, date-time — null only for legacy rows that carry no update timestamp

## Other responses

- `404` — APINotFound is a not found empty response
- `422` — APIValidationError is error format response related to input validation
- `423` — APIRepoArchivedError is an error that is raised when an archived repo should be modified

## Changes

- **2026-10-07** `b0b1b4890863` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/gitea/apis/gitea-api/changes/repos/:owner/:repo/projects/:id/patch.md)

---

[API](https://skmtc.dev/gitea/apis/gitea-api.md) · [All operations](https://skmtc.dev/gitea/apis/gitea-api/llms.txt) · [OpenAPI document](https://skmtc.dev/gitea/apis/gitea-api/revisions/b0b1b4890863?raw)
