v1

latestOpenAPI 3.0.02026-07-14800227.2 KB
Attendance

Track an attendance entry.

Tracks time by sending an employee identifier and a dateTime (format YYYY-MM-DDThh:mm:ss). Use userId, email or externalId (one required). Each call creates or updates attendance entries so that pairs (start/end) stay ordered.

Example (same day): T1 2021-01-01T08:00:00, T2 2021-01-01T09:00:00, T3 2021-01-01T10:00:00 → entries 08:00/09:00 and 10:00/open. A later T4 2021-01-01T12:00:00 closes the second pair as 10:00/12:00.

Overnight shifts (single entry): To close an overnight shift with one entry (e.g. started 22:00 day 1, clock-out 06:00 day 2):

  1. First call: dateTime = start (e.g. 2026-02-03T22:00:00). This creates an open entry on that day.
  2. Second call: dateTime = clock-out on the next calendar day (e.g. 2026-02-04T06:00:00) and isOvernightShift = true. The API closes the previous day's open entry with end time 06:00 next day (one overnight entry). You must send the actual next calendar day in dateTime (e.g. 04, not 03) so the system finds the open entry on the previous day. The clock-out time can be from 00:00 up to 18:00 inclusive on the next day; within that range, the previous day's open entry is closed. If you send a time after 18:00 (e.g. 18:01 or 12:00 next day), the punch is treated as a new entry on the current day instead of closing the overnight.
post/attendances/track-time

Headers

Authorizationstring required
Example:Bearer eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2FwaS5rZW5qby5pbyIsInN1YiI6IjYwZjBhOTE2MjE0OTg3MjU2YmU5YzhmZiIsImF1ZCI6Imh0dHBzOi8vYXBpLmtlbmpvLmlvIiwiaWF0IjoxNjI2Mzg1MTE1LCJuYmYiOjE2MjYzODUxMTUsImV4cCI6MTYyNjU1NzkxNSwiYWNjZXNzVHlwZSI6IkFwaUFjY2VzcyIsInNfb3JnSWQiOiI2MGYwNGVhN2RmN2JhMjFlY2U0YmYzYzIifQ.cxG_7dIS-VbmDXdJuLkekoyuyCIzQG2fMcgc0nkfbWE8cihhcb5FnALbQkjU9b5-qVcEoMHZlSuUA-jMEBMMVQ

A valid bearer token.

Request body

userIdstring

The Kenjo employee _id.

emailstring

The Kenjo email for an employee.

externalIdstring

The external id for an employee for integrations.

dateTimestring required

Date and time in format YYYY-MM-DDThh:mm:ss. For overnight clock-out with isOvernightShift true, use the next calendar day with a time between 00:00 and 18:00 inclusive (e.g. 2026-02-04T06:00:00 to close a shift that started 2026-02-03T22:00:00).

isOvernightShiftboolean

Optional. When true and dateTime is between 00:00 and 18:00 (inclusive) on the next calendar day, this punch is treated as the clock-out of an overnight shift: the API looks for an open entry on the previous calendar day and closes it with that end time (single overnight entry). Times after 18:00 are treated as a new punch on the current day, not as closing the overnight. Important: Send dateTime with the actual next calendar day (e.g. 2026-02-04T06:00:00), not the same day as the start. Default false.

Example request

{
  "userId": "50a2db290da29e126a18789a",
  "email": "john@acme.io",
  "externalId": "00001",
  "dateTime": "2021-07-01T09:00:00"
}

Response

CREATED. The returned body matches the input body.

userIdstring

The Kenjo employee _id.

emailstring

The Kenjo email for an employee.

externalIdstring

The external id for an employee for integrations.

dateTimestring required

The date and the time of the Kenjo employee in format YYYY-MM-DDThh:mm:ss.

Example response

{
  "userId": "50a2db290da29e126a18789a",
  "email": "john@acme.io",
  "externalId": "00001",
  "dateTime": "2021-07-01T09:00:00"
}