Skip to content

Issues API

Issues are the core work items in kendo. Each issue belongs to a project and has a unique key (e.g., KD-42).

Endpoints

MethodEndpointDescription
GET/api/projects/{projectId}/issuesList all issues
POST/api/projects/{projectId}/issuesCreate an issue
GET/api/projects/{projectId}/issues/{issueId}Get an issue
PUT/api/projects/{projectId}/issues/{issueId}Update an issue
DELETE/api/projects/{projectId}/issues/{issueId}Delete an issue
GET/api/projects/{projectId}/issues/search?q=Search issues

Create Issue

POST /api/projects/{projectId}/issues

Request Fields

FieldTypeRequiredDescription
titlestringYesIssue title, max 255 characters
descriptionstringYesMarkdown description, max 65,535 characters
lane_idintegerYesBoard lane ID (must belong to the project)
priorityintegerYes0 Highest, 1 High, 2 Medium, 3 Low, 4 Lowest
typeintegerYes0 Feature, 1 Bug
orderintegerYesPosition within the lane
assignee_idintegerNoUser ID (must be a project member)
sprint_idintegerNoSprint ID (must belong to the project)
epic_idintegerNoEpic ID (must belong to the project)
estimated_minutesintegerNoTime estimate in minutes, min 0
blocked_by_idsinteger[]NoIssue IDs that block this issue
blocks_idsinteger[]NoIssue IDs that this issue blocks
promptstringNoAI prompt context, max 10,000 characters
bash
curl -X POST https://{tenant}.kendo.dev/api/projects/1/issues \
  -H "Authorization: Bearer your-token" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Add pagination to issues list",
    "description": "The issues overview needs cursor-based pagination for large projects.",
    "lane_id": 1,
    "priority": 2,
    "type": 0,
    "order": 0,
    "assignee_id": 3,
    "estimated_minutes": 240
  }'
json
{
  "id": 42,
  "key": "KD-42",
  "title": "Add pagination to issues list",
  "description": "The issues overview needs cursor-based pagination for large projects.",
  "prompt": null,
  "user_id": 1,
  "assignee_id": 3,
  "project_id": 1,
  "lane_id": 1,
  "sprint_id": null,
  "epic_id": null,
  "comment_ids": [],
  "priority": 2,
  "type": 0,
  "order": 0,
  "estimated_minutes": 240,
  "blocked_by_ids": [],
  "blocks_ids": [],
  "branch_link_statuses": [],
  "created_at": "2026-03-13T10:30:00.000000Z"
}

Update Issue

PUT /api/projects/{projectId}/issues/{issueId}

Accepts the same fields as create. All required fields must be included in every update.

bash
curl -X PUT https://{tenant}.kendo.dev/api/projects/1/issues/42 \
  -H "Authorization: Bearer your-token" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Add pagination to issues list",
    "description": "The issues overview needs cursor-based pagination for large projects.",
    "lane_id": 2,
    "priority": 1,
    "type": 0,
    "order": 0,
    "sprint_id": 5,
    "blocked_by_ids": [38, 40]
  }'
json
{
  "id": 42,
  "key": "KD-42",
  "title": "Add pagination to issues list",
  "description": "The issues overview needs cursor-based pagination for large projects.",
  "prompt": null,
  "user_id": 1,
  "assignee_id": 3,
  "project_id": 1,
  "lane_id": 2,
  "sprint_id": 5,
  "epic_id": null,
  "comment_ids": [],
  "priority": 1,
  "type": 0,
  "order": 0,
  "estimated_minutes": 240,
  "blocked_by_ids": [38, 40],
  "blocks_ids": [],
  "branch_link_statuses": [],
  "created_at": "2026-03-13T10:30:00.000000Z"
}

Get Issue

GET /api/projects/{projectId}/issues/{issueId}

bash
curl https://{tenant}.kendo.dev/api/projects/1/issues/42 \
  -H "Authorization: Bearer your-token"
json
{
  "id": 42,
  "key": "KD-42",
  "title": "Add pagination to issues list",
  "description": "The issues overview needs cursor-based pagination for large projects.",
  "prompt": null,
  "user_id": 1,
  "assignee_id": 3,
  "project_id": 1,
  "lane_id": 2,
  "sprint_id": 5,
  "epic_id": null,
  "comment_ids": [10, 11],
  "priority": 1,
  "type": 0,
  "order": 0,
  "estimated_minutes": 240,
  "blocked_by_ids": [38, 40],
  "blocks_ids": [],
  "branch_link_statuses": [1],
  "created_at": "2026-03-13T10:30:00.000000Z"
}

Delete Issue

DELETE /api/projects/{projectId}/issues/{issueId}

Returns 204 No Content on success.

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

List Issues

GET /api/projects/{projectId}/issues

Returns an array of all issues in the project.

bash
curl https://{tenant}.kendo.dev/api/projects/1/issues \
  -H "Authorization: Bearer your-token"
json
[
  {
    "id": 42,
    "key": "KD-42",
    "title": "Add pagination to issues list",
    "priority": 1,
    "type": 0,
    "lane_id": 2,
    "assignee_id": 3,
    "sprint_id": 5,
    "...": "..."
  },
  {
    "id": 43,
    "key": "KD-43",
    "title": "Fix email validation on login form",
    "priority": 0,
    "type": 1,
    "lane_id": 1,
    "assignee_id": null,
    "sprint_id": null,
    "...": "..."
  }
]

Enums

Priority

ValueLabel
0Highest
1High
2Medium
3Low
4Lowest

Type

ValueLabel
0Feature
1Bug

See Also