Skip to content

Epics API

Epics group related issues on a timeline. Each epic has a status, color, optional date range, and a set of assigned issues.

Endpoints

MethodEndpointDescription
GET/api/projects/{projectId}/epicsList epics
POST/api/projects/{projectId}/epicsCreate an epic
PUT/api/projects/{projectId}/epics/{epicId}Update an epic
DELETE/api/projects/{projectId}/epics/{epicId}Delete an epic

Create Epic

POST /api/projects/{projectId}/epics

Request Fields

FieldTypeRequiredDescription
titlestringYesEpic name, max 255 characters
colorintegerYes0 Grey, 1 Green, 2 Blue, 3 Red, 4 Purple, 5 Yellow
orderintegerYesPosition in the epic list, min 0
descriptionstringNoEpic description, max 10,000 characters
startdateNoStart date (YYYY-MM-DD), required if end is set
enddateNoEnd date, must be after start, required if start is set
issue_idsinteger[]NoIssue IDs to assign (must belong to the project)
bash
curl -X POST https://{tenant}.kendo.dev/api/projects/1/epics \
  -H "Authorization: Bearer your-token" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Authentication Overhaul",
    "description": "Replace legacy auth with 2FA support and improved session management.",
    "color": 2,
    "order": 0,
    "start": "2026-03-17",
    "end": "2026-04-11",
    "issue_ids": [42, 43, 44]
  }'
json
{
  "id": 5,
  "project_id": 1,
  "issue_ids": [42, 43, 44],
  "issues_count": 3,
  "title": "Authentication Overhaul",
  "description": "Replace legacy auth with 2FA support and improved session management.",
  "status": 0,
  "color": 2,
  "start": "2026-03-17",
  "end": "2026-04-11",
  "order": 0
}

Update Epic

PUT /api/projects/{projectId}/epics/{epicId}

Request Fields

FieldTypeRequiredDescription
titlestringYesEpic name, max 255 characters
colorintegerYes0 Grey, 1 Green, 2 Blue, 3 Red, 4 Purple, 5 Yellow
orderintegerYesPosition in the epic list, min 0
statusintegerYes0 Open, 1 In Progress, 2 Completed
descriptionstringNoMax 10,000 characters
startdateNoRequired if end is set
enddateNoMust be after start, required if start is set
issue_idsinteger[]NoIssue IDs to assign
bash
curl -X PUT https://{tenant}.kendo.dev/api/projects/1/epics/5 \
  -H "Authorization: Bearer your-token" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Authentication Overhaul",
    "description": "Replace legacy auth with 2FA support and improved session management.",
    "status": 1,
    "color": 2,
    "order": 0,
    "start": "2026-03-17",
    "end": "2026-04-18",
    "issue_ids": [42, 43, 44, 50]
  }'
json
{
  "id": 5,
  "project_id": 1,
  "issue_ids": [42, 43, 44, 50],
  "issues_count": 4,
  "title": "Authentication Overhaul",
  "description": "Replace legacy auth with 2FA support and improved session management.",
  "status": 1,
  "color": 2,
  "start": "2026-03-17",
  "end": "2026-04-18",
  "order": 0
}

Delete Epic

DELETE /api/projects/{projectId}/epics/{epicId}

Returns 204 No Content. Issues in the epic are unassigned from it (not deleted).

bash
curl -X DELETE https://{tenant}.kendo.dev/api/projects/1/epics/5 \
  -H "Authorization: Bearer your-token"

Enums

Status

ValueLabel
0Open
1In Progress
2Completed

Color

ValueLabel
0Grey
1Green
2Blue
3Red
4Purple
5Yellow

See Also