Time Tracking
Track time with timers and manual entries on tickets.
Time tracking lets your team record how long they spend on tickets. You can use live timers that run in real-time or create manual entries for past work. Time tracking must be enabled for your organization.
Timers
List Active Timers
GET /api/v1/time-tracking/timersPermission required: time-tracking:view
Returns all currently running timers for the authenticated user.
Example Response
[
{
"id": "tmr_abc123",
"ticketId": "tkt_def456",
"startedAt": "2025-03-20T09:00:00Z",
"ticket": {
"displayId": "WEB-42",
"title": "Fix login page styling"
}
}
]Start Timer
POST /api/v1/time-tracking/timersPermission required: time-tracking:manage
Start a new timer. Only one timer can run per ticket at a time.
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
| ticketId | string | Yes* | Ticket ID to track time for |
*Either ticketId or bookingItemId is required.
Example Request
{
"ticketId": "tkt_def456"
}Stop Timer
POST /api/v1/time-tracking/timers/{timerId}/stopPermission required: time-tracking:manage
Stops a running timer and creates a time entry.
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
| description | string | No | Description of work done |
Example Response
{
"id": "te_abc123",
"ticketId": "tkt_def456",
"durationMinutes": 45,
"description": "Fixed the CSS alignment issue",
"date": "2025-03-20",
"createdAt": "2025-03-20T09:45:00Z"
}Stop All Timers
POST /api/v1/time-tracking/timers/stop-allPermission required: time-tracking:manage
Stops all running timers for the authenticated user.
Time Entries
List My Entries
GET /api/v1/time-tracking/entriesPermission required: time-tracking:view
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| page | number | No | Page number (default: 1) |
| limit | number | No | Items per page (default: 20) |
| year | number | No | Filter by year |
| month | number | No | Filter by month (1-12) |
| boardId | string | No | Filter by board |
| search | string | No | Search in descriptions |
Create Manual Entry
POST /api/v1/time-tracking/entriesPermission required: time-tracking:manage
Create a time entry without using a timer.
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
| ticketId | string | Yes* | Ticket ID |
| durationMinutes | number | Yes | Duration in minutes (min. 1) |
| description | string | No | Description of work done (max 500 characters) |
| date | string | No | Date of work in ISO 8601 format (defaults to today) |
*Either ticketId or bookingItemId is required.
Example Request
{
"ticketId": "tkt_def456",
"durationMinutes": 120,
"description": "Code review and testing",
"date": "2025-03-19"
}Update Entry
PATCH /api/v1/time-tracking/entries/{entryId}Permission required: time-tracking:manage
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
| durationMinutes | number | No | Duration in minutes |
| description | string | No | Description |
| date | string | No | Date of work |
Delete Entry
DELETE /api/v1/time-tracking/entries/{entryId}Permission required: time-tracking:manage
Returns 204 No Content.
Board & Ticket Time Entries
List Board Time Entries
GET /api/v1/boards/{boardId}/time-entriesPermission required: time-tracking:view
Returns all time entries for a specific board.
Get Ticket Time Summary
GET /api/v1/boards/{boardId}/tickets/{ticketId}/time-entries/summaryReturns the total time tracked on a ticket.
List Ticket Time Entries
GET /api/v1/boards/{boardId}/tickets/{ticketId}/time-entriesPermission required: time-tracking:view
Returns all time entries for a specific ticket.