API reference
Tracking
8 endpoints. Click one to see its parameters, fields and an example. Code samples use the region you pick.
POST/v1/me/breadcrumbsUpload locations recorded during your shift (batched, idempotent)
Upload locations recorded during your shift (batched, idempotent)
Only stored where the workspace or site shares location during shifts (tracking.during_shift), while the shift was open and not on a break. Each point lands on the shift that was open at its time; sending the same point again changes nothing. Refused points come back counted by reason (tracking_off, not_clocked_in, on_break, future, too_old) and should not be sent again. tracking.active says whether to keep sharing.
Body (JSON)
| Name | Type | Description |
|---|---|---|
pointsrequired | array of object | |
points[].atrequired | string (date-time) | |
points[].latrequired | number | |
points[].lngrequired | number | |
points[].accuracy_m | number | |
points[].speed_mps | number | |
points[].heading | number | |
points[].mocked | boolean | |
device_now | string (date-time) |
Example
curl -X POST "https://ca-api.clocklap.com/v1/me/breadcrumbs" \
-H "Authorization: Bearer $CLOCKLAP_API_KEY" \
-H "Content-Type: application/json" \
-d '{"points":[{"at":"2026-10-26T13:00:00Z","lat":-90,"lng":-180}],"device_now":"2026-10-26T13:00:00Z"}'Responses
200
POST/v1/me/tracking/stateTell the server whether this phone can share its location during the shift
Tell the server whether this phone can share its location during the shift
denied (location permission refused) or unavailable (location services off) is shown to managers on the shift and sends location.tracking_paused. It never blocks clocking in.
Body (JSON)
| Name | Type | Description |
|---|---|---|
staterequired | "active" | "denied" | "unavailable" |
Example
curl -X POST "https://ca-api.clocklap.com/v1/me/tracking/state" \
-H "Authorization: Bearer $CLOCKLAP_API_KEY" \
-H "Content-Type: application/json" \
-d '{"state":"active"}'Responses
200
GET/v1/time-entries/{id}/routeA shift’s route: locations shared during it, distance, stops, sites visited and trips
A shift’s route: locations shared during it, distance, stops, sites visited and trips
Path parameters
| Name | Type | Description |
|---|---|---|
idrequired | string |
Example
curl "https://ca-api.clocklap.com/v1/time-entries/{id}/route" \
-H "Authorization: Bearer $CLOCKLAP_API_KEY"Responses
200
GET/v1/time-entries/{id}/sites-visitedSites whose geofence the shift’s shared locations fell in, with first and last time there
Sites whose geofence the shift’s shared locations fell in, with first and last time there
Path parameters
| Name | Type | Description |
|---|---|---|
idrequired | string |
Example
curl "https://ca-api.clocklap.com/v1/time-entries/{id}/sites-visited" \
-H "Authorization: Bearer $CLOCKLAP_API_KEY"Responses
200
GET/v1/tracking/liveLive map: latest position of each clocked-in person in your scope (managers)
Live map: latest position of each clocked-in person in your scope (managers)
Query parameters
| Name | Type | Description |
|---|---|---|
location_id | string |
Example
curl "https://ca-api.clocklap.com/v1/tracking/live" \
-H "Authorization: Bearer $CLOCKLAP_API_KEY"Responses
200
GET/v1/tripsDrives detected in shared locations, with distance and drive time (newest first)
Drives detected in shared locations, with distance and drive time (newest first)
Query parameters
| Name | Type | Description |
|---|---|---|
from | string (date-time) | |
to | string (date-time) | |
user_id | string | |
location_id | string | |
project_id | string | Only trips on this project ("none" for trips without one) |
mine | boolean | |
limit | integer | Default 100 |
cursor | string |
Example
curl "https://ca-api.clocklap.com/v1/trips" \
-H "Authorization: Bearer $CLOCKLAP_API_KEY"Responses
200
GET/v1/trips/{id}One trip
One trip
Path parameters
| Name | Type | Description |
|---|---|---|
idrequired | string |
Example
curl "https://ca-api.clocklap.com/v1/trips/{id}" \
-H "Authorization: Bearer $CLOCKLAP_API_KEY"Responses
200
POST/v1/trips/{id}/expenseClaim a trip as a mileage expense (its distance at the mileage rate; once per trip)
Claim a trip as a mileage expense (its distance at the mileage rate; once per trip)
Path parameters
| Name | Type | Description |
|---|---|---|
idrequired | string |
Example
curl -X POST "https://ca-api.clocklap.com/v1/trips/{id}/expense" \
-H "Authorization: Bearer $CLOCKLAP_API_KEY"Responses
200