The REST API must be enabled by an administrator before it can be used. Go to Administration → Settings → API and enable the Enable REST web service option.
Base URL
All API endpoints are relative to your Redmine installation’s root URL:.json or .xml to any resource path to request that format:
Response formats
Redmine supports two response formats.- JSON
- XML
Append
.json to the resource path or set the Accept: application/json header.Pagination
List endpoints return paginated results. Useoffset and limit to navigate pages.
Number of records to skip before returning results.
Maximum number of records to return. The server-side maximum is typically 100.
total_count, offset, and limit fields so you can calculate whether more pages exist.
Common query parameters
Most list endpoints accept these parameters in addition to their own resource-specific filters.| Parameter | Type | Description |
|---|---|---|
offset | integer | Number of records to skip. |
limit | integer | Number of records per page (max 100). |
sort | string | Column to sort by, optionally suffixed with :desc (e.g., created_on:desc). |
include | string | Comma-separated list of extra associations to embed in the response. |
Requesting extra associations
Some endpoints support aninclude parameter that embeds related objects directly in the response, avoiding additional requests.
include values per resource:
| Resource | Supported values |
|---|---|
| Issue | journals, relations, changesets, attachments, children, watchers, allowed_statuses |
| Project | trackers, issue_categories, enabled_modules |
| User | memberships, groups |
HTTP methods
| Method | Purpose |
|---|---|
GET | Retrieve a resource or list of resources. |
POST | Create a new resource. |
PUT | Update an existing resource. |
DELETE | Delete a resource. |
Content type for write requests
When sending a request body (POST or PUT), set theContent-Type header to match your payload format.
HTTP status codes
| Code | Meaning |
|---|---|
200 OK | Request succeeded. |
201 Created | Resource created successfully. |
204 No Content | Request succeeded with no response body (e.g., DELETE). |
401 Unauthorized | Authentication failed or missing. |
403 Forbidden | Authenticated user lacks permission. |
404 Not Found | Resource does not exist. |
409 Conflict | Conflict with the current state (e.g., stale update). |
422 Unprocessable Entity | Validation failed. Response body contains error details. |
500 Internal Server Error | Unexpected server error. |
Validation error response
When a422 is returned, the body contains the validation errors:
Rate limiting
Redmine does not enforce rate limiting by default. If you are running Redmine behind a reverse proxy (nginx, Apache), you can configure rate limiting at that layer.Quick reference
Authentication
API key, HTTP Basic Auth, and OAuth2.
Issues API
Create, read, update, and delete issues.
Projects API
Manage projects and their settings.
Users API
Manage user accounts (admin only).
Time entries API
Log and query time entries.
Wiki API
Read and write wiki pages.
