---
title: "Create a new employee."
method: POST
path: "/employees"
tags: ["Employees"]
---

# Create a new employee.

`POST /employees`

This endpoint creates a deactivated employee in Kenjo (*isActive* = false). To activate the employee use the put /activate method; an activation message will be sent to the employee email to complete the activation through the onboarding wizard.
<br><br>**Required body**
<br>You must send the objects *account*, *personal* and *work* with at least:
<br>• *account*: *email* (required, must be unique in the organization).
<br>• *personal*: *firstName* and *lastName* (required, non-empty strings).
<br>• *work*: *companyId* and *weeklyHours* (required).
<br>If any of these are missing or invalid (e.g. empty name, duplicate email), the API returns 400 Bad Request and no employee is created.
<br><br>**Optional fields and defaults**
<br>• *workSchedule* — Optional. If you omit it, the API uses the company's working days. If the company has no working days defined, it defaults to Monday–Friday.
<br>• *language* (inside *account*) — Optional. If omitted, the company's default language is assigned.
<br><br>**Custom fields**
<br>You can send custom fields for the **personal**, **work**, **address**, **financial** and **home** sections. Use each field's *API name* (prefix *c_* and the field name without spaces). The value must match the type defined for that custom field in Kenjo.
<br><br>
Example — custom field *Activity type* in *work* (List with values "1", "2", "3"):
<br>
  ```
...
{
  ...
    "work": {
      "c_Activitytype": "1",
      ...
    },
  ...
}
```
<br>If you send a value or type that does not match the field definition, the request returns 400.
<br><br>If the operation succeeds, an inactive employee is created and the response includes the provided information and the Kenjo *_id* for the new employee.

## Headers

- `Authorization` string, required

## Request body

- object
  - `account` object, required
    - `email` string, required — The employee email in Kenjo. This field is required and must be unique.
    - `language` string — The employee language. Only is valid one of the following values 'en' (english), 'es' (spanish) or 'de' (german).
    - `externalId` string — The employee external id for integration proposals. This value must be unique.
  - `personal` object, required — Required. Must be an object with non-empty firstName and lastName. If missing, not an object, or firstName/lastName are missing or empty strings, the request returns 400 Bad Request and no employee is created.
    - `firstName` string, required — The first name of the Kenjo employee. Required; must be a non-empty string.
    - `lastName` string, required — The last name of the Kenjo employee. Required; must be a non-empty string.
    - `displayName` string — The complete name of the Kenjo employee.
    - `gender` string — The employee gender. Only is valid one of the following values 'Male' (male), 'Female' (female) or 'Other' (other).
    - `birthdate` string — The employee birth date. Format YYYY-MM-DDThh:mm:ss.000Z.
    - `nationality` string — The employee nationality. The nationality must be the first letter in uppercase. Example "Spanish", "Brazilian"
  - `work` object, required
    - `companyId` string, required — The company id of the Kenjo employee. This field is required and must to match with Kenjo _id of an existing company.
    - `officeId` string — The office id of the Kenjo employee.
    - `departmentId` string — The department id of the Kenjo employee.
    - `startDate` string — The starting date of the employee. Format YYYY-MM-DDThh:mm:ss.000Z.
    - `jobTitle` string — The job title of the employee.
    - `workPhone` string — The work phone of the employee.
    - `workMobile` string — The work mobile of the employee.
    - `isAssistant` boolean — Allow to indicate if the employee has or not the assistant role.
    - `probationPeriodEnd` string — The probation period of the employee. Format YYYY-MM-DDThh:mm:ss.000Z.
    - `contractEnd` string — The contract end date of the employee. Format YYYY-MM-DDThh:mm:ss.000Z.
    - `reportsToId` string — The Kenjo employee id of the user to whom the employee reports. The employee id to assign can be an active or inactive user. Trying to assign the own employee id or the id of someone who is already reporting will arise an error.
    - `weeklyHours` number, required — The number of weekly hours that an employee works. Combined with the work schedule allows to determine the day hours. This field is required and must be equals or greater than 1.
    - `weeklyDays` integer — The number of contracted working days per week (0-7). **Auto-calculation behavior:** - If not provided, the system automatically counts TRUE values from the working day fields in `workSchedule` (mondayWorkingDay, ..., sundayWorkingDay). - If neither `weeklyDays` nor `workSchedule` booleans are provided, defaults to the company's `weeklyDays` setting. - If the company setting doesn't exist, defaults to 0. **Fallback priority:** 1. Explicit `weeklyDays` value (if provided) 2. Count from `workSchedule` working day booleans 3. Company default (`company.weeklyDays`) 4. 0 (final fallback)
  - `workSchedule` object
    - `mondayWorkingDay` boolean — Allow to indicate if mondays are working days for the employee.
    - `tuesdayWorkingDay` boolean — Allow to indicate if tuesdays are working days for the employee.
    - `wednesdayWorkingDay` boolean — Allow to indicate if wednesdays are working days for the employee.
    - `thursdayWorkingDay` boolean — Allow to indicate if thursdays are working days for the employee.
    - `fridayWorkingDay` boolean — Allow to indicate if fridays are working days for the employee.
    - `saturdayWorkingDay` boolean — Allow to indicate if saturdays are working days for the employee.
    - `sundayWorkingDay` boolean — Allow to indicate if sundays are working days for the employee.
    - `trackAttendance` boolean — Allow to activate or deactivate the attendance tracking for the employee.
  - `address` object
    - `street` string — The name of the street.
    - `postalCode` string — The postal code.
    - `city` string — The city.
    - `country` string — The country code in ISO 3166-1 alpha-2.
    - `houseNumber` string — The house number.
    - `additionalAddress` string — The additional address.
  - `financial` object
    - `accountHolderName` string — The accounts holder's name.
    - `bankName` string — The bank name.
    - `accountNumber` string — The account number.
    - `iban` string — The IBAN.
    - `swiftCode` string — The SWIFT code.
    - `nationalId` string — The national id document.
    - `passport` string — The passport number.
    - `nationalInsuranceNumber` string — The national insurance number
    - `taxCode` string — The tax number.
    - `taxIdentificationNumber` string — The tax identification number.
  - `home` object
    - `maritalStatus` string — The marital status. Only is valid one of the following values "Divorced", "Domestic Partnership", "Married", "Separated", "Single", "Widowed".
    - `spouseFirstName` string — The first name of the employee's spouse.
    - `spouseLastName` string — The last name of the employee's spouse.
    - `spouseBirthdate` string — The birth date of the employee's spouse. Format YYYY-MM-DDThh:mm:ss.000Z.
    - `spouseGender` string — The employee's spouse gender. Only is valid one of the following values 'Male' (male), 'Female' (female) or 'Other' (other).
    - `personalEmail` string — The employee personal email.
    - `personalPhone` string — The employee personal phone.
    - `personalMobile` string — The employee personal phone
    - `children` unknown[] — The employee children.
      - unknown
  - `emergency` object
    - `emergencyFirstName` string — The emergency first name.
    - `emergencyMiddleName` string — The emergency middle name.
    - `emergencyLastName` string — The emergency last name.
    - `relation` string — The emergency relation. Only is valid one of the following values "Mother", "Father", "Son", "Daughter", "Brother", "Sister", "Partner", "Other".
    - `emergencyPhoneNumber` string — The emergency phone number.
    - `emergencyMobileNumber` string — The emergency mobile number.

## Response `201`

CREATED

- object
  - `account` object
    - `_id` string — The employee Kenjo *_id*.
    - `email` string — The employee email in Kenjo.
    - `externalId` string — The employee external id for integration proposals.
    - `isActive` string — The activation status, once created is false.
    - `language` string — The employee language. Only is valid one of the following values 'en' (english), 'es' (spanish) or 'de' (german).
  - `personal` object
    - `firstName` string — The name of the Kenjo employee. This field is required.
    - `lastName` string — The surname of the Kenjo employee. This field is required.
    - `displayName` string — The complete name of the Kenjo employee.
    - `gender` string — The employee gender. Only is valid one of the following values 'Male' (male), 'Female' (female) or 'Other' (other).
    - `birthdate` string — The employee birth date. Format YYYY-MM-DDThh:00:00.000Z.
    - `nationality` string — The employee nationality. The nationality must be the first letter in uppercase. Example "Spanish", "Brazilian"
  - `work` object
    - `companyId` string — The company id of the Kenjo employee.
    - `officeId` string — The office id of the Kenjo employee.
    - `departmentId` string — The department id of the Kenjo employee.
    - `startDate` string — The starting date of the employee in ISO format.
    - `jobTitle` string — The job title of the employee.
    - `workPhone` string — The work phone of the employee.
    - `workMobile` string — The work mobile of the employee.
    - `isAssistant` boolean — Allow to indicate if the employee has or not the assistant role.
    - `probationPeriodEnd` string — The probation period of the employee. Format YYYY-MM-DDThh:mm:ss.000Z.
    - `contractEnd` string — The contract end date of the employee. Format YYYY-MM-DDThh:mm:ss.000Z.
    - `reportsToId` string — The Kenjo employee id of the user to whom the employee reports. The employee id to assign can be an active or inactive user. Trying to assign the own employee id or the id of someone who is already reporting will arise an error.
    - `weeklyHours` number — The number of weekly hours that an employee works. Combined with the work schedule allows to determine the day hours. This field is required and must be equals or greater than 1.
  - `workSchedule` object
    - `mondayWorkingDay` boolean — Allow to indicate if mondays are working days for the employee.
    - `tuesdayWorkingDay` boolean — Allow to indicate if tuesdays are working days for the employee.
    - `wednesdayWorkingDay` boolean — Allow to indicate if wednesdays are working days for the employee.
    - `thursdayWorkingDay` boolean — Allow to indicate if thursdays are working days for the employee.
    - `fridayWorkingDay` boolean — Allow to indicate if fridays are working days for the employee.
    - `saturdayWorkingDay` boolean — Allow to indicate if saturdays are working days for the employee.
    - `sundayWorkingDay` boolean — Allow to indicate if sundays are working days for the employee.
    - `trackAttendance` boolean — The activation status of attendance tracking for the employee.
  - `address` object
    - `street` string — The name of the street.
    - `postalCode` string — The postal code.
    - `city` string — The city.
    - `country` string — The country code in ISO 3166-1 alpha-2.
    - `houseNumber` string — The house number.
    - `additionalAddress` string — The additional address.
  - `financial` object
    - `accountHolderName` string — The accounts holder's name.
    - `bankName` string — The bank name.
    - `accountNumber` string — The account number.
    - `iban` string — The IBAN.
    - `swiftCode` string — The SWIFT code.
    - `nationalId` string — The national id document.
    - `passport` string — The passport number.
    - `nationalInsuranceNumber` string — The national insurance number
    - `taxCode` string — The tax number.
    - `taxIdentificationNumber` string — The tax identification number.
  - `home` object
    - `maritalStatus` string — The marital status. Only is valid one of the following values "Divorced", "Domestic Partnership", "Married", "Separated", "Single", "Widowed".
    - `spouseFirstName` string — The first name of the employee's spouse.
    - `spouseLastName` string — The last name of the employee's spouse.
    - `spouseBirthdate` string — The birth date of the employee's spouse. Format YYYY-MM-DDThh:mm:ss.000Z.
    - `spouseGender` string — The employee's spouse gender. Only is valid one of the following values 'Male' (male), 'Female' (female) or 'Other' (other).
    - `personalEmail` string — The employee personal email.
    - `personalPhone` string — The employee personal phone.
    - `personalMobile` string — The employee personal phone
    - `children` unknown[] — The employee children.
      - unknown
  - `emergency` object
    - `emergencyFirstName` string — The emergency first name.
    - `emergencyMiddleName` string — The emergency middle name.
    - `emergencyLastName` string — The emergency last name.
    - `relation` string — The emergency relation. Only is valid one of the following values "Mother", "Father", "Son", "Daughter", "Brother", "Sister", "Partner", "Other".
    - `emergencyPhoneNumber` string — The emergency phone number.
    - `emergencyMobileNumber` string — The emergency mobile number.

## Other responses

- `400` — BAD REQUEST. This is a wrong request in the client side due to invalid body or params.
- `401` — UNAUTHORIZED. The Authorization header is incorrect, not provided or the token expired.

---

[API](https://skmtc.net/kenjo/apis/kenjo-api.md) · [All operations](https://skmtc.net/kenjo/apis/kenjo-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/kenjo/kenjo-api/versions/58772b78268e/schema)
