Employee API Reference

Introduction

The PerformYard Employee API allows customers to programmatically retrieve and manage data related to users/employees defined in PerformYard. The API endpoints will let you:

  • Retrieve the list of employees with the ability to sort and paginate results.
  • Retrieve the definition of an employee
  • Create new employee
  • Update Employee details and fields
  • Delete (Deactivate) an Employee
  • Perform batch operations

Requirements

Calling these API endpoints requires an API Key and API ID. See Getting Started with PerformYard API for details on creating API keys and API Authentication for authentication flow.

Retrieve All Employees

GET https://api.talent.performyard.com/v1/employees

Returns a list employees.

Query Parameters

limit integer

The number of employees to be returned in a single API Request.

Default: 200

Minimum: 5

Maximum: 200
offset integer

Used to paginate through the list of employees. Can be combined with limit.

Default: 0

Increment the value by one to fetch subsequent pages (1 for the second page, 2 for the third, etc.).
sort string

Order in which to return the list of employees.

Allowed Values: asc(FIELD_NAME) desc(FIELD_NAME)

Allowed Field Names: _id name email manager
employeeStatus enum

Filter the returned employees by a specific status.

Allowed Values: activated deactivated

Accepts only a single string value.
permissionLevel enum

Filter the returned employees by a specific permission level.

Allowed Values: billing admin admin basic admin employee

Accepts only a single string value.
includeAllDataFields boolean

Used to determine whether all data fields should be returned for each employee in the list.

Allowed Values: true false

Accepts only a single boolean value.

CURL Example

curl --location 'https://api.talent.performyard.com/v1/employees?limit=200&offset=0&employeeStatus=deactivated&permissionLevel=employee&includeAllDataFields=true' \
--header 'Accept: application/json' \
--header 'x-api-id: {{X-API-ID}}' \
--header 'x-api-key: {{X-API-KEY}}'

Response (200)

{
  "employees": [
    {
      "_id": "<string>",
      "name": "<string>",
      "email": "<string>",
      "phone": "<string>",
      "job_title": "<string>",
      "manager": {
        "_id": "<string>",
        "name": "<string>",
        "email": "<string>"
      },
      "contributors": [
        {
          "_id": "<string>",
          "name": "<string>",
          "email": "<string>"
        },
        {
          "_id": "<string>",
          "name": "<string>",
          "email": "<string>"
        }
      ],
      "group": {
        "_id": "<string>",
        "name": "<string>"
      },
      "termination_date": "<string>",
      "permission_level": "employee",
      "employee_status": "deactivated",
      "custom_fields": [
        {
          "_id": "<string>",
          "field_value": "<string>",
          "field_name": "<string>"
        },
        {
          "_id": "<string>",
          "field_value": "<string>",
          "field_name": "<string>"
        }
      ],
      "hire_date": "<string>"
    }, 
    ...
  ]
}

Retrieve Employee By ID

GET https://api.talent.performyard.com/v1/employees/:employee_id

Returns an employee.

Path Parameters

employee_id string

The ID that uniquely identifies the employee to retrieve.

Query Parameters

includeAllDataFields boolean

Used to determine whether all data fields should be returned for each employee in the list.

Allowed Values: true false

Accepts only a single boolean value.

CURL Example

curl --location -X GET "https://api.talent.performyard.com/v1/employees/6734c08623dbbf142bb2f3de?includeAllDataFields=true" \
--header 'Accept: application/json' \
--header 'x-api-id: {{X-API-ID}}' \
--header 'x-api-key: {{X-API-KEY}}'

Response (200)

{
  "employee": {
    "_id": "<string>",
    "name": "<string>",
    "email": "<string>",
    "phone": "<string>",
    "job_title": "<string>",
    "manager": {
      "_id": "<string>",
      "name": "<string>",
      "email": "<string>"
    },
    "contributors": [
      {
        "_id": "<string>",
        "name": "<string>",
        "email": "<string>"
      },
      {
        "_id": "<string>",
        "name": "<string>",
        "email": "<string>"
      }
    ],
    "group": {
      "_id": "<string>",
      "name": "<string>"
    },
    "termination_date": "<string>",
    "permission_level": "basic admin",
    "employee_status": "deactivated",
    "custom_fields": [
      {
        "_id": "<string>",
        "field_value": "<string>",
        "field_name": "<string>"
      },
      {
        "_id": "<string>",
        "field_value": "<string>",
        "field_name": "<string>"
      }
    ],
    "hire_date": "<string>"
  }
}

Update Multiple Employees

PATCH https://api.talent.performyard.com/v1/employees

Update the details for one or more employees, optionally including their custom employee data fields.

Request Body Parameters

Request Body

The request for this endpoint takes in an array of employees to be updated (objects). The following table explains the possible parameters that can be passed in for each employee to update and which are required.

_id string required

The ID that uniquely identifies the employee to update.
first_name string

The employee's legal first name.
nickname string

The employee's preferred or commonly used name.

When an employee has nickname set, the name property on GET requests will follow the format "nickname last_name".
last_name string

The employee's legal last name.
email string

The employee's company or official email address.

Must be a valid email format.
phone string

The employee's primary phone number.

Dashes are optional.
job_title string

The employee's official job title or role within the company.
hire_date string

The date in which the employee was officially hired.

Allowed Formats: YYYY-MM-DD MM-DD-YYYY
termination_date string

The date in which the employee's employment ended.

Allowed Formats: YYYY-MM-DD MM-DD-YYYY
group string

The group in which the employee belongs to. Learn more about groups here.

The group must exist in PerformYard. An employee can exist in more than one group.
employee_status enum

The current employment status of the employee.

Allowed Values: activated deactivated
manager string

The email address of the employee's direct manager.
contributors array

The email address(es) of contributors to the employee.

Accepts an array of 0 to any number of employee email addresses (strings).
custom_fields array

Used to update the employee data fields created by the company. Learn more about employee data fields here.

Accepts an array of object where each object includes field_name and field_value, both of which accept a single string value. Both are required in this action.

Request Body Format

[
  {
    "_id": "<string>",
    "first_name": "<string>",
    "nickname": : "<string>",
    "last_name": "<string>",
    "email": "<string>",
    "phone": "<string>",
    "job_title": "<string>",
    "hire_date": "<string>",
    "termination_date": "<string>",
    "group": "<string>",
    "employee_status": "activated",
    "manager": "<string>",
    "contributors": [
      "<string>"
    ],
    "custom_fields": [
      {
        "field_name": "<string>",
        "field_value": "<string>"
      }
    ]
  },
  ...
]

CURL Example

curl --location --request PATCH 'https://api.talent.performyard.com/v1/employees' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'x-api-id: {{X-API-ID}}' \
--header 'x-api-key: {{X-API-KEY}}' \
--data '[
  {
    "_id": "6734c08623dbbf142bb2f3df",
    "first_name": "Jenny",
    "nickname": : "Jen",
    "last_name": "Sherman",
    "job_title": "Sales, VP",
    "employee_status": "deactivated",
    "manager": "manager@company.com",
    "contributors": [
      "contributor1@company.com",
      "contributor2@company.com"
    ],
    "custom_fields": [
      {
        "field_name": "Location",
        "field_value": "Virginia"
      }
    ]
  },
  ...
]'

Response (200)

{ 
   "message": "Employee(s) updated or created"
}

Update Employee

PATCH https://api.talent.performyard.com/v1/employees/:employee_id

Update the details of a single.

Path Parameters

employee_id string

The ID that uniquely identifies the employee to retrieve.

Request Body Parameters

first_name string

The employee's legal first name.
nickname string

The employee's preferred or commonly used name.

When an employee has nickname set, the name property on GET requests will follow the format "nickname last_name".
last_name string

The employee's legal last name.
email string

The employee's company or official email address.

Must be a valid email format.
phone string

The employee's primary phone number.

Dashes are optional.
job_title string

The employee's official job title or role within the company.
hire_date string

The date in which the employee was officially hired.

Allowed Formats: YYYY-MM-DD MM-DD-YYYY
termination_date string

The date in which the employee's employment ended.

Allowed Formats: YYYY-MM-DD MM-DD-YYYY
group string

The group in which the employee belongs to. Learn more about groups here.

The group must exist in PerformYard. An employee can exist in more than one group.
employee_status enum

The current employment status of the employee.

Allowed Values: activated deactivated
manager string

The email address of the employee's direct manager.
contributors array

The email address(es) of contributors to the employee.

Accepts an array of 0 to any number of employee email addresses (strings).
custom_fields array

Used to update the employee data fields created by the company. Learn more about employee data fields here.

Accepts an array of object where each object includes field_name and field_value, both of which accept a single string value. Both are required in this action.

Request Body Format

{
    "_id": "<string>",
    "first_name": "<string>",
    "nickname": : "<string>",
    "last_name": "<string>",
    "email": "<string>",
    "phone": "<string>",
    "job_title": "<string>",
    "hire_date": "<string>",
    "termination_date": "<string>",
    "group": "<string>",
    "employee_status": "activated",
    "manager": "<string>",
    "contributors": [
      "<string>"
    ],
    "custom_fields": [
      {
        "field_name": "<string>",
        "field_value": "<string>"
      }
    ]
  }

CURL Example

curl --location --request PATCH 'https://api.talent.performyard.com/v1/employees/642af7983586809245187b04' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'x-api-id: kuugklk2y1' \
--header 'x-api-key: {{' \
--data '{
  "first_name": "Jenny",
  "nickname": : "Jen",
  "last_name": "Sherman",
  "job_title": "Sales, VP",
  "employee_status": "deactivated",
  "manager": "manager@company.com",
  "contributors": [
    "contributor1@company.com",
    "contributor2@company.com"
  ],
  "custom_fields": [
    {
      "field_name": "Location",
      "field_value": "Virginia"
    }
  ]
}'

Response (200)

{ 
   "message": "Employee updated"
}

Create One or More Employees

POST https://api.talent.performyard.com/v1/employees

Create or provision one or more employees, optionally including their custom employee data fields.

Request Body Parameters

Request Body

The request for this endpoint takes in an array of employees to be created (objects). The following table explains the possible parameters that can be passed in for each employee to create and which are required.

first_name string required

The employee's legal first name.
last_name string required

The employee's legal last name.
email string required

The employee's company or official email address.

Must be a valid email format.
employee_status enum required

The current employment status of the employee.

Allowed Values: activated deactivated
nickname string

The employee's preferred or commonly used name.

When an employee has nickname set, the name property on GET requests will follow the format "nickname last_name".
phone string

The employee's primary phone number.

Dashes are optional.
job_title string

The employee's official job title or role within the company.
hire_date string

The date in which the employee was officially hired.

Allowed Formats: YYYY-MM-DD MM-DD-YYYY
termination_date string

The date in which the employee's employment ended.

Allowed Formats: YYYY-MM-DD MM-DD-YYYY
group string

The group in which the employee belongs to. Learn more about groups here.

The group must exist in PerformYard. An employee can exist in more than one group.
manager string

The email address of the employee's direct manager.
contributors array

The email address(es) of contributors to the employee.

Accepts an array of 0 to any number of employee email addresses (strings).
custom_fields array

Used to update the employee data fields created by the company. Learn more about employee data fields here.

Accepts an array of object where each object includes field_name and field_value, both of which accept a single string value.

Request Body Format

[
  {
    "first_name": "<string>",
    "nickname": : "<string>",
    "last_name": "<string>",
    "email": "<string>",
    "phone": "<string>",
    "job_title": "<string>",
    "hire_date": "<string>",
    "termination_date": "<string>",
    "group": "<string>",
    "employee_status": "activated",
    "manager": "<string>",
    "contributors": [
      "<string>"
    ],
    "custom_fields": [
      {
        "field_name": "<string>",
        "field_value": "<string>"
      }
    ]
  },
  ...
]

CURL Example

curl --location 'POSThttps://api.talent.performyard.com/v1/employees' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'x-api-id: {{X-API-ID}}' \
--header 'x-api-key: {{X-API-KEY}}' \
--data '[
  {
    "email": "newemployee@company.com",
    "employee_status": "activated",
    "first_name": "New",
    "last_name": "Employee",
    "phone": "111-222-3333",
    "job_title": "Marketing Intern",
    "hire_date": "2025-02-11",
    "termination_date": "",
    "group": "Marketing",
    "manager": "manager@company.com",
    "contributors": [],
    "custom_fields": [
      {
        "field_name": "Location",
        "field_name": "Virginia"
      }
    ]
  }
]'

Response (200)

{ 
   "message": "Employee(s) created"
}