Create a new attendance.

This endpoint creates an attendance entry for one employee. A user identifier is required (userId, email or externalId).
date and startTime are required. The new entry has a unique _id returned in the response.

Overlapping: A day accepts many attendance entries per employee but they cannot overlap. Creating an entry whose start or end falls inside an existing entry for the same day and user returns BAD REQUEST.

Overnight shifts (single entry): To create one entry for a shift that ends the next calendar day (e.g. 22:00 on Jan 1 to 06:00 on Jan 2), send date = start day (e.g. 2026-01-01), startTime = 22:00:00, endTime = 06:00:00, and isOvernightShift = true. The API stores it as one entry on the start day with end time interpreted as 06:00 next day. For overnight shifts, endTime cannot be later than 18:00; otherwise the API returns 400 with message "For overnight shifts, end time cannot be later than 18:00." If you do not use isOvernightShift, then endTime is always the same day as date; for overnight you would need two separate entries (one per day).
Same-day rule: When isOvernightShift is not set or is false, endTime must be after startTime. Sending an end time earlier than or equal to start time (e.g. 22:00 start and 06:00 end) without isOvernightShift = true returns 400 with message "When isOvernightShift is not set, endTime must be after startTime. For shifts that end the next day, set isOvernightShift to true."

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…
Body Params
string

The Kenjo employee _id.

string

The Kenjo email for an employee.

string

The external id for an employee for integrations.

string
required

The date of the entry. The valid format is YYYY-MM-DD. Required field.

string
required

The start time of the entry. The valid format is hh:mm:ss. Required field.

string

The end time of the entry. Format hh:mm:ss. Not required, but when present cannot be less than or equal to startTime (unless isOvernightShift is used).
Overnight: If the shift ends the next calendar day (e.g. 22:00–06:00), set isOvernightShift to true and send endTime as the clock-out time (e.g. 06:00:00). The API will store it as one entry on the date day. When isOvernightShift is true, endTime cannot be later than 18:00 (returns 400 otherwise).

boolean

Optional. When true, endTime is interpreted as the time on the next calendar day after date.
Use this for overnight shifts (e.g. start 22:00 on date, end 06:00 next day). endTime cannot be later than 18:00. Default false; omit or set to false for normal same-day entries.

breaks
array of objects

Array that contains the breaks in detail. Rules:
- A maximum of 10 breaks can be loaded via API.
- Breaks cannot be overlapped in the same day.
- 'start' field is required.

breaks
string

Optional text to describe an attendance record (pair of startTime and endTime). The maximum number of characters is 150.

Headers
string
required

A valid bearer token.

Responses

401

UNAUTHORIZED. The Authorization header is incorrect, not provided or the token expired.

Language
URL
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json