Skip to content

Time Entries API

Time entries record work done on an issue. Each entry is linked to a user and an issue.

Permissions

ActionMinimum RoleScope
Search / listMemberResults scoped to accessible projects (admins see all)
CreateMemberOn issues within accessible projects
UpdateMemberOwn entries only (admins can update any)
DeleteMemberOwn entries only (admins can delete any)

Viewers cannot access time entry endpoints. Non-admin users only see time entries from projects assigned to their teams — this is enforced server-side, not just filtered in the UI.

Endpoints

MethodEndpointDescription
GET/api/time-entriesSearch time entries across projects
GET/api/projects/{projectId}/issues/{issueId}/time-entriesList time entries for an issue
POST/api/projects/{projectId}/issues/{issueId}/time-entriesCreate a time entry
PUT/api/projects/{projectId}/issues/{issueId}/time-entries/{entryId}Update a time entry
DELETE/api/projects/{projectId}/issues/{issueId}/time-entries/{entryId}Delete a time entry

Search Time Entries

GET /api/time-entries

Query time entries across all projects within a date range, optionally filtered by project.

Query Parameters

ParameterTypeRequiredDescription
start_datedateYesStart of date range (ISO 8601)
end_datedateYesEnd of date range (must be on or after start_date)
project_idintegerNoFilter to a specific project
bash
curl "https://{tenant}.kendo.dev/api/time-entries?start_date=2026-03-01&end_date=2026-03-15&project_id=1" \
  -H "Authorization: Bearer your-token"
json
[
  {
    "id": 15,
    "user_id": 1,
    "issue_id": 42,
    "project_id": 1,
    "minutes_spent": 120,
    "started_at": "2026-03-13T09:00:00.000000Z",
    "note": "Implemented cursor-based pagination.",
    "created_at": "2026-03-13T11:00:00.000000Z",
    "issue_title": "Add pagination to issues list",
    "issue_key": "KD-42"
  }
]

Create Time Entry

POST /api/projects/{projectId}/issues/{issueId}/time-entries

Request Fields

FieldTypeRequiredDescription
minutes_spentintegerYesTime spent in minutes, min 1
started_atdatetimeNoWhen the work started (ISO 8601), cannot be in the future
notestringNoDescription of work done, max 10,000 characters
bash
curl -X POST https://{tenant}.kendo.dev/api/projects/1/issues/42/time-entries \
  -H "Authorization: Bearer your-token" \
  -H "Content-Type: application/json" \
  -d '{
    "minutes_spent": 120,
    "started_at": "2026-03-13T09:00:00Z",
    "note": "Implemented cursor-based pagination for the issues API endpoint."
  }'
json
{
  "id": 15,
  "user_id": 1,
  "issue_id": 42,
  "project_id": 1,
  "minutes_spent": 120,
  "started_at": "2026-03-13T09:00:00.000000Z",
  "note": "Implemented cursor-based pagination for the issues API endpoint.",
  "created_at": "2026-03-13T11:00:00.000000Z",
  "issue_title": "Add pagination to issues list",
  "issue_key": "KD-42"
}

Update Time Entry

PUT /api/projects/{projectId}/issues/{issueId}/time-entries/{entryId}

Accepts the same fields as create.

bash
curl -X PUT https://{tenant}.kendo.dev/api/projects/1/issues/42/time-entries/15 \
  -H "Authorization: Bearer your-token" \
  -H "Content-Type: application/json" \
  -d '{
    "minutes_spent": 150,
    "started_at": "2026-03-13T09:00:00Z",
    "note": "Implemented and tested cursor-based pagination."
  }'
json
{
  "id": 15,
  "user_id": 1,
  "issue_id": 42,
  "project_id": 1,
  "minutes_spent": 150,
  "started_at": "2026-03-13T09:00:00.000000Z",
  "note": "Implemented and tested cursor-based pagination.",
  "created_at": "2026-03-13T11:00:00.000000Z",
  "issue_title": "Add pagination to issues list",
  "issue_key": "KD-42"
}

Delete Time Entry

DELETE /api/projects/{projectId}/issues/{issueId}/time-entries/{entryId}

Returns 204 No Content on success.

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

See Also