API reference
Timer
12 endpoints. Click one to see its parameters, fields and an example. Code samples use the region you pick.
GET/v1/timerThe running timer (if any) and the timer settings that apply to you
The running timer (if any) and the timer settings that apply to you
Example
curl "https://ca-api.clocklap.com/v1/timer" \
-H "Authorization: Bearer $CLOCKLAP_API_KEY"Responses
200
PATCH/v1/timerChange the running timer (description, project, tags, billable, start) without splitting it
Change the running timer (description, project, tags, billable, start) without splitting it
Body (JSON)
| Name | Type | Description |
|---|---|---|
project_id | string or null | |
activity_id | string or null | |
description | string | |
tags | array of string | |
billable | boolean or null | |
started_at | string (date-time) |
Example
curl -X PATCH "https://ca-api.clocklap.com/v1/timer" \
-H "Authorization: Bearer $CLOCKLAP_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'Responses
200
POST/v1/timer/entriesAdd a past entry to your own time (start and end, or a duration)
Add a past entry to your own time (start and end, or a duration)
Needs policy.timer.manual_entries and off_site. Source entry.
Body (JSON)
| Name | Type | Description |
|---|---|---|
project_id | string or null | |
activity_id | string or null | |
description | string | |
tags | array of string | |
billable | boolean or null | |
task_id | string or null | |
work_order_id | string or null | |
startrequired | string (date-time) | |
end | string (date-time) | |
duration_min | integer | |
location_id | string |
Example
curl -X POST "https://ca-api.clocklap.com/v1/timer/entries" \
-H "Authorization: Bearer $CLOCKLAP_API_KEY" \
-H "Content-Type: application/json" \
-d '{"start":"2026-10-26T13:00:00Z"}'Responses
200
PATCH/v1/timer/entries/{id}Fix one of your own timer or typed-in entries
Fix one of your own timer or typed-in entries
Path parameters
| Name | Type | Description |
|---|---|---|
idrequired | string |
Body (JSON)
| Name | Type | Description |
|---|---|---|
clock_in_at | string (date-time) | |
clock_out_at | string (date-time) or null | |
note | string or null | |
project_id | string or null | |
activity_id | string or null | |
task_id | string or null | |
work_order_id | string or null | |
billable | boolean or null | |
custom_fields | object | |
tags | array of string | |
reason | string |
Example
curl -X PATCH "https://ca-api.clocklap.com/v1/timer/entries/{id}" \
-H "Authorization: Bearer $CLOCKLAP_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'Responses
200
DELETE/v1/timer/entries/{id}Delete one of your own timer or typed-in entries
Delete one of your own timer or typed-in entries
Path parameters
| Name | Type | Description |
|---|---|---|
idrequired | string |
Example
curl -X DELETE "https://ca-api.clocklap.com/v1/timer/entries/{id}" \
-H "Authorization: Bearer $CLOCKLAP_API_KEY"Responses
200
POST/v1/timer/idleComing back after idle time
Coming back after idle time
discard: the entry ends at since and the same work carries on from now. stop: the timer stops at since. (Keeping the time needs no call.)
Body (JSON)
| Name | Type | Description |
|---|---|---|
sincerequired | string (date-time) | |
actionrequired | "discard" | "stop" |
Example
curl -X POST "https://ca-api.clocklap.com/v1/timer/idle" \
-H "Authorization: Bearer $CLOCKLAP_API_KEY" \
-H "Content-Type: application/json" \
-d '{"since":"2026-10-26T13:00:00Z","action":"discard"}'Responses
200
GET/v1/timer/recentYour recent pieces of work to continue (project, activity, description, tags)
Your recent pieces of work to continue (project, activity, description, tags)
Query parameters
| Name | Type | Description |
|---|---|---|
limit | integer | Default 10 |
Example
curl "https://ca-api.clocklap.com/v1/timer/recent" \
-H "Authorization: Bearer $CLOCKLAP_API_KEY"Responses
200
POST/v1/timer/startStart a timer (stops a running one first)
Start a timer (stops a running one first)
Creates an ordinary time entry with source timer. If something is running it ends and the new entry starts at the same instant (a project switch). continue_entry_id repeats an earlier entry's project, activity, description, tags and billable. Where the workspace keeps timers on site (policy.timer.off_site false), send lat/lng from inside the site. Refused starts answer 422 with code and detail.
Body (JSON)
| Name | Type | Description |
|---|---|---|
project_id | string or null | |
activity_id | string or null | |
description | string | |
tags | array of string | |
billable | boolean or null | |
task_id | string or null | |
work_order_id | string or null | |
continue_entry_id | string | |
location_id | string | |
lat | number | |
lng | number | |
accuracy_m | number | |
local_id | string | |
at | string (date-time) | |
device_id | string | |
device_now | string (date-time) | The device's clock when sending; times are corrected when it is more than 2 minutes off the server's. |
Example
curl -X POST "https://ca-api.clocklap.com/v1/timer/start" \
-H "Authorization: Bearer $CLOCKLAP_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'Responses
200
POST/v1/timer/stopStop the running timer (now, or at `at`)
Stop the running timer (now, or at at)
Body (JSON)
| Name | Type | Description |
|---|---|---|
at | string (date-time) | |
local_id | string | |
device_id | string | |
custom_fields | object | |
device_now | string (date-time) | The device's clock when sending; times are corrected when it is more than 2 minutes off the server's. |
Example
curl -X POST "https://ca-api.clocklap.com/v1/timer/stop" \
-H "Authorization: Bearer $CLOCKLAP_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'Responses
200
GET/v1/timer/tagsTags in use in the workspace, most used first
Tags in use in the workspace, most used first
Example
curl "https://ca-api.clocklap.com/v1/timer/tags" \
-H "Authorization: Bearer $CLOCKLAP_API_KEY"Responses
200
GET/v1/timer/weekYour week as a grid: hours per project (and activity) per day
Your week as a grid: hours per project (and activity) per day
Query parameters
| Name | Type | Description |
|---|---|---|
date | string |
Example
curl "https://ca-api.clocklap.com/v1/timer/week" \
-H "Authorization: Bearer $CLOCKLAP_API_KEY"Responses
200
PUT/v1/timer/week/cellType the hours for a project on a day
Type the hours for a project on a day
More hours add a typed-in entry in a free gap of the day; fewer shorten typed-in entries. Tracked time is never cut.
Body (JSON)
| Name | Type | Description |
|---|---|---|
daterequired | string | |
project_id | string or null | |
activity_id | string or null | |
hoursrequired | number |
Example
curl -X PUT "https://ca-api.clocklap.com/v1/timer/week/cell" \
-H "Authorization: Bearer $CLOCKLAP_API_KEY" \
-H "Content-Type: application/json" \
-d '{"date":"2026-10-26","project_id":"pro_01J…","activity_id":"act_01J…","hours":0}'Responses
200