Add Employee

Add a new employee record with contact details, address, and employment information.

POST
/api/v1/employee/add

Description

Creates a new employee record in your company. Once added, the employee is available across your Unduit account for asset assignment, orders, and shipping.

Request

Headers

HeaderValueRequired
AuthorizationBearer <access_token>Yes
Content-Typeapplication/jsonYes

Basic Information

Fields

ParameterTypeRequiredDescription
firstnamestringYesEmployee's first name. Letters and spaces only.
lastnamestringYesEmployee's last name. Letters and spaces only.
work_emailstringYesEmployee's work email address.
work_phonestringYesWork phone number, digits only. Spaces and dashes are stripped automatically.
work_phone_countrystringYesWork phone country as an ISO 3166-1 alpha-2 code (e.g. US, GB).
personal_emailstringNoEmployee's personal email address.
personal_phonestringNoEmployee's personal phone number, digits only.
personal_contact_countrystringNoPersonal phone country as an ISO 3166-1 alpha-2 code. Also accepted as personal_phone_country.

Address Information

Fields

ParameterTypeRequiredDescription
address_1stringYesStreet address line 1.
address_2stringNoStreet address line 2.
citystringYesCity.
statestringNoState or province. Required for all countries except GB.
zipstringYesPostal or zip code.
countrystringYesCountry as an ISO 3166-1 alpha-2 code (e.g. US, DE).
location_typestringYesHow the employee is based. Must be one of: Warehouse, Corporate Office, Retail Store, Remote Employee.
location_namestringNoDisplay name for the employee's location. Defaults to "{firstname} {lastname}" when not provided.

Employment Information

These fields are optional and sent at the top level of the request body. They are returned nested under employment_information in the response.

Fields

ParameterTypeRequiredDescription
employee_idstringNoEmployee's ID on their location record.
departmentstringNoDepartment name. Must match an existing department in your company. Returns 422 if not found.
employment_statusstringNoEmployment status (e.g. Active, Terminated).
employment_typestringNoEmployment type (e.g. Full Time, Part Time, Contractor).
managerstringNoDirect manager's name or identifier.
employment_start_datestringNoStart date in YYYY-MM-DD format (e.g. 2024-01-15).
termination_datestringNoTermination date in YYYY-MM-DD format. Include when employment_status is Terminated.

Example Request Body

{
  "firstname": "Jane",
  "lastname": "Doe",
  "work_email": "jane.doe@company.com",
  "work_phone": "4155551234",
  "work_phone_country": "US",
  "personal_email": "jane.doe@gmail.com",
  "personal_phone": "4155559999",
  "personal_contact_country": "US",
  "address_1": "123 Market Street",
  "address_2": "Suite 400",
  "city": "San Francisco",
  "state": "CA",
  "zip": "94103",
  "country": "US",
  "location_type": "Remote Employee",
  "location_name": "Remote - San Francisco",
  "department": "IT",
  "employee_id": "EMP-501",
  "employment_status": "Active",
  "employment_type": "Full Time",
  "manager": "John Shah",
  "employment_start_date": "2024-01-15"
}

Response

Top-level Fields

FieldTypeDescription
successbooleanWhether the request was successful.
messagestringHuman-readable confirmation (e.g. "Employee added successfully").
addressobjectThe newly created employee address record. See fields below.

Address Fields

FieldTypeDescription
address.idstringUse the full value in detail and update routes.
address.firstnamestringEmployee's first name.
address.lastnamestringEmployee's last name.
address.location_namestringDisplay name for the employee's location.
address.work_emailstringEmployee's work email address.
address.work_phonestringWork phone number, digits only.
address.work_phone_countrystringWork phone country as an ISO 3166-1 alpha-2 code.
address.address_1stringAddress line 1.
address.address_2stringAddress line 2. Null if not provided.
address.citystringCity.
address.statestringState or province.
address.zipstringPostal or zip code.
address.countrystringCountry as an ISO 3166-1 alpha-2 code.
address.location_typestringHow the employee is based (e.g. Remote Employee, Corporate Office).
address.departmentstringDepartment name. Null if not provided.
address.configure_cost_center_idnumberID of the assigned cost center. Null if not configured.
address.employee_idstringEmployee ID on the location record. Null if not provided.
address.employment_informationobjectEmployment and personal contact fields submitted with the request. Null if no employment fields were provided. Only fields with values are included. See fields below.

employment_information Fields

FieldTypeDescription
address.employment_information.employment_statusstringEmployment status (e.g. Active, Terminated).
address.employment_information.employment_typestringEmployment type (e.g. Full Time, Part Time, Contractor).
address.employment_information.employment_start_datestringStart date in YYYY-MM-DD format.
address.employment_information.termination_datestringTermination date in YYYY-MM-DD format. Only present when employment_status is Terminated.
address.employment_information.managerstringDirect manager's name or identifier.
address.employment_information.personal_emailstringEmployee's personal email address.
address.employment_information.personal_phonestringEmployee's personal phone number, digits only.
address.employment_information.personal_contact_countrystringPersonal phone country as an ISO 3166-1 alpha-2 code.

Notes

  • Returns HTTP 201 on success.
  • address.id is returned as an opaque string (`{7-digit-prefix}-{numericId}`). Pass the full value to GET /api/v1/employees/{id} and update routes.
  • email and work_email are interchangeable — both refer to the work email address. Use work_email in new integrations.
  • personal_contact_country and personal_phone_country are interchangeable. Use personal_contact_country in new integrations.
  • state is required for all countries except GB.
  • location_name defaults to "{firstname} {lastname}" when not provided.
  • location_type must be one of: Warehouse, Corporate Office, Retail Store, Remote Employee.
  • department must match an existing department name for your company. Returns 422 if not found.
  • Employment fields are sent at the top level of the request body but returned nested under employment_information in the response.
  • employment_information only includes fields that were provided — empty or null fields are omitted.
  • contact_info and contact_country in the response are legacy aliases for work_phone and work_phone_country retained for backwards compatibility.

Related Endpoints

Did this page help you?