For the complete documentation index, see llms.txt. This page is also available as Markdown.

Get an employee

Returns a single employee by ID

Get employee by ID

get

Get employee by ID

Authorizations
AuthorizationstringRequired

Harmony access key, sent as Authorization: AccessKey <your-key>. Create keys in Settings > Access Keys. The tenant is resolved from the key.

Path parameters
employee_idstringRequired
Query parameters
include_custom_fields_configbooleanOptional

Include custom field config metadata

Default: false
Responses
200

Successful Response

application/json

API response schema for employee data with source information.

first_namestring · nullableOptional
last_namestring · nullableOptional
job_titlestring · nullableOptional
departmentstring · nullableOptional
locationstring · nullableOptional
timezonestring · nullableOptional
manager_namestring · nullableOptional
manager_idstring · nullableOptional
photo_urlstring · nullableOptional
employment_statusstring · enum · nullableOptional

Employment status of the employee.

Possible values:
employment_start_datestring · date · nullableOptional
employment_end_datestring · date · nullableOptional
employment_rolestring · nullableOptional
employment_typestring · enum · nullableOptional

Employment type classification.

Possible values:
levelstring · nullableOptional
idstringRequired
work_emailstring · emailRequired
sync_statusstring · enum · nullableOptional

Employee sync status.

Values: SYNCED: Employee data synchronized from external systems. This is the default and main use-case.

LOCAL: Employee created manually via API,
       not synced. This usually happens whenever
       a resource related employee was not found
       in the local system.
       'LOCAL' employees will usually have
       missing data, and may not refer to real
       employees in the organization.
       The status may change later to 'SYNCED'
       automatically.
Default: SYNCEDPossible values:
typestring · enumOptional

Employee type classification.

Default: personPossible values:
display_namestring · nullableOptional
last_loginstring · nullableOptional

Maximum last login time across all IdPs

deleted_atstring · date-time · nullableOptional

Employee deletion time from all external systems

get/api/v1/employees/{employee_id}
GET /employees/api/v1/employees/{employee_id} HTTP/1.1
Host: api.harmony.io
Authorization: YOUR_API_KEY
Accept: */*
{
  "first_name": "text",
  "last_name": "text",
  "job_title": "text",
  "department": "text",
  "location": "text",
  "location_details": {
    "name": "text",
    "city": "text",
    "state": "text",
    "country": "text",
    "country_code": "text"
  },
  "timezone": "text",
  "manager_name": "text",
  "manager_id": "text",
  "photo_url": "text",
  "phone_numbers": [
    {
      "type": "mobile",
      "number": "text"
    }
  ],
  "employment_status": "active",
  "employment_start_date": "2026-01-01",
  "employment_end_date": "2026-01-01",
  "employment_role": "text",
  "employment_type": "full_time",
  "level": "text",
  "id": "text",
  "work_email": "name@gmail.com",
  "sync_status": "SYNCED",
  "type": "person",
  "display_name": "text",
  "settings": {
    "is_vip": false
  },
  "custom_fields": {
    "ANY_ADDITIONAL_PROPERTY": {
      "ANY_ADDITIONAL_PROPERTY": "text"
    }
  },
  "custom_fields_with_config": {
    "ANY_ADDITIONAL_PROPERTY": {
      "ANY_ADDITIONAL_PROPERTY": {
        "value": "text",
        "label": "text",
        "type": "number",
        "required": false,
        "options": [
          "text"
        ]
      }
    }
  },
  "sources": [
    {
      "external_id": "123",
      "name": "okta"
    },
    {
      "external_id": "456",
      "name": "hibob"
    }
  ],
  "last_login": "text",
  "deleted_at": "2026-01-01T00:00:00.000Z"
}

Last updated

Was this helpful?