Skip to main content
The Projects API gives you programmatic access to Redmine projects and their configuration.
Requests must be authenticated. See REST API authentication for details.

Endpoints

MethodPathDescription
GET/projects.jsonList projects.
GET/projects/:id.jsonGet a single project.
POST/projects.jsonCreate a project.
PUT/projects/:id.jsonUpdate a project.
DELETE/projects/:id.jsonDelete a project.
PUT/projects/:id/archive.jsonArchive a project.
PUT/projects/:id/unarchive.jsonUnarchive a project.
PUT/projects/:id/close.jsonClose a project.
PUT/projects/:id/reopen.jsonReopen a project.

List projects

GET /projects.json Returns projects visible to the authenticated user.

Query parameters

status
number
Filter by project status. 1 = active, 5 = closed, 9 = archived.
include
string
Comma-separated list of associations to embed. Valid values: trackers, issue_categories, enabled_modules.
offset
number
default:"0"
Number of records to skip.
limit
number
default:"25"
Number of records per page (max 100).

Example

curl -H "X-Redmine-API-Key: YOUR_API_KEY" \
  "https://redmine.example.com/projects.json?status=1&include=trackers"

Response

{
  "projects": [
    {
      "id": 1,
      "name": "My Project",
      "identifier": "myproject",
      "description": "An example project.",
      "homepage": "https://example.com",
      "status": 1,
      "is_public": true,
      "inherit_members": false,
      "created_on": "2024-01-15T10:00:00Z",
      "updated_on": "2024-03-01T08:00:00Z"
    }
  ],
  "total_count": 1,
  "offset": 0,
  "limit": 25
}

Get project

GET /projects/:id.json Returns a single project. You can use the project’s numeric ID or its string identifier.

Path parameters

id
string
required
The project’s numeric ID or identifier string (e.g., myproject).

Query parameters

include
string
Comma-separated list of associations to embed. Valid values: trackers, issue_categories, enabled_modules.

Example

curl -H "X-Redmine-API-Key: YOUR_API_KEY" \
  "https://redmine.example.com/projects/myproject.json?include=trackers,issue_categories"

Response fields

project
object
required

Create project

POST /projects.json Creates a new project. The authenticated user must have the Create project global permission.

Request body

Wrap all fields inside a project object.
project.name
string
required
Project display name. Maximum 255 characters.
project.identifier
string
required
Unique project identifier. Lowercase letters, digits, dashes, and underscores only. Maximum 100 characters. Cannot start with a digit.
project.description
string
Project description.
project.homepage
string
Project homepage URL.
project.is_public
boolean
default:"true"
Whether the project is publicly visible.
project.parent_id
number
ID of the parent project.
project.inherit_members
boolean
default:"false"
Whether to inherit members from the parent project.
project.tracker_ids
number[]
Array of tracker IDs to enable for this project.
project.enabled_module_names
string[]
Array of module names to enable. Examples: issue_tracking, time_tracking, wiki, documents, files, forums, news, repository.
project.custom_fields
object[]
Array of custom field values: [{"id": 1, "value": "value"}].

Example

curl -X POST \
  -H "X-Redmine-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "project": {
      "name": "New Project",
      "identifier": "new-project",
      "description": "A newly created project.",
      "is_public": false,
      "tracker_ids": [1, 2],
      "enabled_module_names": ["issue_tracking", "time_tracking", "wiki"]
    }
  }' \
  https://redmine.example.com/projects.json
A successful response returns 201 Created with the new project in the body.

Update project

PUT /projects/:id.json Updates an existing project. Only include fields you want to change.

Path parameters

id
string
required
The project’s numeric ID or identifier string.

Example

curl -X PUT \
  -H "X-Redmine-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "project": {
      "description": "Updated description.",
      "is_public": false
    }
  }' \
  https://redmine.example.com/projects/myproject.json
A successful response returns 200 OK.

Delete project

DELETE /projects/:id.json Deletes a project and all of its data. This action is irreversible.
Deleting a project permanently removes all issues, time entries, wiki pages, forums, and files associated with it.

Path parameters

id
string
required
The project’s numeric ID or identifier string.

Example

curl -X DELETE \
  -H "X-Redmine-API-Key: YOUR_API_KEY" \
  https://redmine.example.com/projects/myproject.json
A successful response returns 200 OK.

Archive and unarchive

Archiving a project makes it read-only and hides it from regular navigation.
# Archive a project
curl -X PUT \
  -H "X-Redmine-API-Key: YOUR_API_KEY" \
  https://redmine.example.com/projects/myproject/archive.json

# Unarchive a project
curl -X PUT \
  -H "X-Redmine-API-Key: YOUR_API_KEY" \
  https://redmine.example.com/projects/myproject/unarchive.json
Only administrators can archive and unarchive projects.

Close and reopen

# Close a project
curl -X PUT \
  -H "X-Redmine-API-Key: YOUR_API_KEY" \
  https://redmine.example.com/projects/myproject/close.json

# Reopen a closed project
curl -X PUT \
  -H "X-Redmine-API-Key: YOUR_API_KEY" \
  https://redmine.example.com/projects/myproject/reopen.json