Skip to content
ClockLap Developers
API reference clocklap.com Get an API key

API reference

Time entries

10 endpoints. Click one to see its parameters, fields and an example. Code samples use the region you pick.

POST/v1/break-premiums/{id}/unwaiveRestore a waived break premium

Restore a waived break premium

Undo a waiver: the premium counts again in timesheets, pay and exports. Emits break_premium.unwaived.

Path parameters

NameTypeDescription
idrequiredstring

Body (JSON)

NameTypeDescription
reasonstring

Example

curl -X POST "https://ca-api.clocklap.com/v1/break-premiums/{id}/unwaive" \
  -H "Authorization: Bearer $CLOCKLAP_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"reason":"string"}'

Responses

200

POST/v1/break-premiums/{id}/waiveWaive a break premium

Waive a break premium

For a missed, short or late break that was really the person’s choice (or otherwise not owed). Needs time.approve at the site. The premium stays on record with who waived it and why, but no longer counts in timesheets, pay or exports. Closes the matching open break exception. Refused (409 entry_locked) for a locked pay period. Waiving again is a no-op. Emits break_premium.waived.

Path parameters

NameTypeDescription
idrequiredstring

Body (JSON)

NameTypeDescription
reasonrequiredstring

Example

curl -X POST "https://ca-api.clocklap.com/v1/break-premiums/{id}/waive" \
  -H "Authorization: Bearer $CLOCKLAP_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"reason":"string"}'

Responses

200

GET/v1/time-entriesList time entries

List time entries

Query parameters

NameTypeDescription
user_idstring
location_idstring
fromstring (date-time)
tostring (date-time)
status"open" | "closed" | "flagged" | "approved" | "locked"
openboolean
limitinteger Default 100
cursorstring
project_idstringOnly entries on this project ("none" for entries without one)
activity_idstringOnly entries for this activity ("none" for entries without one)
expandstringComma-separated: punches, exceptions, location, user. Adds those records to each entry.

Example

curl "https://ca-api.clocklap.com/v1/time-entries" \
  -H "Authorization: Bearer $CLOCKLAP_API_KEY"

Responses

200

POST/v1/time-entriesAdd an entry for someone (admin)

Add an entry for someone (admin)

Body (JSON)

NameTypeDescription
user_idrequiredstring
location_idrequiredstring
clock_in_atrequiredstring (date-time)
clock_out_atstring (date-time) or null
notestring
reasonrequiredstring
project_idstring or null
activity_idstring or null
billableboolean or null

Example

curl -X POST "https://ca-api.clocklap.com/v1/time-entries" \
  -H "Authorization: Bearer $CLOCKLAP_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"user_id":"use_01J…","location_id":"loc_01J…","clock_in_at":"2026-10-26T13:00:00Z","clock_out_at":"2026-10-26T13:00:00Z","reason":"string"}'

Responses

200

GET/v1/time-entries/{id}Entry with raw punches, map evidence, exceptions and edit history

Entry with raw punches, map evidence, exceptions and edit history

Path parameters

NameTypeDescription
idrequiredstring

Example

curl "https://ca-api.clocklap.com/v1/time-entries/{id}" \
  -H "Authorization: Bearer $CLOCKLAP_API_KEY"

Responses

200

PATCH/v1/time-entries/{id}Edit times, location, project, activity or billable (reason required, audited)

Edit times, location, project, activity or billable (reason required, audited)

Path parameters

NameTypeDescription
idrequiredstring

Body (JSON)

NameTypeDescription
clock_in_atstring (date-time)
clock_out_atstring (date-time) or null
location_idstring
notestring or null
project_idstring or null
activity_idstring or null
billableboolean or null
reasonrequiredstring

Example

curl -X PATCH "https://ca-api.clocklap.com/v1/time-entries/{id}" \
  -H "Authorization: Bearer $CLOCKLAP_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"reason":"string"}'

Responses

200

DELETE/v1/time-entries/{id}Delete one time entry

Delete one time entry

Path parameters

NameTypeDescription
idrequiredstring

Body (JSON)

NameTypeDescription
reasonrequiredstring

Example

curl -X DELETE "https://ca-api.clocklap.com/v1/time-entries/{id}" \
  -H "Authorization: Bearer $CLOCKLAP_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"reason":"string"}'

Responses

200

POST/v1/time-entries/{id}/attestationAnswer the clock-out questions for a closed shift

Answer the clock-out questions for a closed shift

For phones that clocked out offline or without the questions, kiosks (within 30 minutes of a clock-out made there) and managers recording a paper answer. You can also send attestation with the clock-out punch itself. A "No" raises an attestation_flag exception. Sending the same answers again is a no-op; different answers are refused (409 already_answered).

Path parameters

NameTypeDescription
idrequiredstring

Body (JSON)

NameTypeDescription
answersrequiredarray of object
answers[].idrequiredstring
answers[].answerrequired"yes" | "no"
notestring

Example

curl -X POST "https://ca-api.clocklap.com/v1/time-entries/{id}/attestation" \
  -H "Authorization: Bearer $CLOCKLAP_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"answers":[{"id":"id_01J…","answer":"yes"}],"note":"string"}'

Responses

200

POST/v1/time-entries/approveCreate a approve

Create a approve

Body (JSON)

NameTypeDescription
idsrequiredarray of string

Example

curl -X POST "https://ca-api.clocklap.com/v1/time-entries/approve" \
  -H "Authorization: Bearer $CLOCKLAP_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"ids":["string"]}'

Responses

200

POST/v1/time-entries/current/switchSwitch project/activity while on shift

Switch project/activity while on shift

Ends your open entry at at (default now) and starts a new one at the same instant and location on the new project/activity; a break in progress ends first. Returns { closed, opened, undo_punch_id }. Within a minute of clocking in it just relabels the open entry (closed is null); choosing what you already have changes nothing.

Body (JSON)

NameTypeDescription
project_idstring or null
activity_idstring or null
notestring
atstring (date-time)
device_nowstring (date-time)The device's current time when sending. When it differs from the server's by more than 2 minutes, punch times are corrected by that difference (and flagged for review beyond 10 minutes).

Example

curl -X POST "https://ca-api.clocklap.com/v1/time-entries/current/switch" \
  -H "Authorization: Bearer $CLOCKLAP_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'

Responses

200