---
title: "List Job Titles with Employees"
method: GET
path: "/api/v1/pay-grades-and-bands/job-titles-with-employees"
tags: ["Pay Grades & Bands", "Public API"]
---

# List Job Titles with Employees

`GET /api/v1/pay-grades-and-bands/job-titles-with-employees`

## Request

- Base URL: `https://companySubDomain.bamboohr.com`
- URL: `https://companySubDomain.bamboohr.com/api/v1/pay-grades-and-bands/job-titles-with-employees`
- Auth: OAuth 2
  - Authorization code: `/authorize.php`
  - Token URL: `/token.php` scopes: `pay_grades_and_bands`

Returns every active, non-archived company job title (not only titles used in the pay grades and bands configuration) together with the employees who currently hold each title. The response is a JSON array of job title objects; each carries the job title `id`, its `title` name, and an `employees` array. Each employee entry exposes the internal employee ID (`id` here; the same identifier is `employeeId` on List Employees and `eeid` on the employee dataset) alongside the employee display `name`. This internal employee ID is not the editable Employee # (`employeeNumber`); using `employeeNumber` in its place may resolve to a different employee. An employee is omitted from a title's `employees` array when the authenticated caller lacks permission to view a required employee field (name, job title, or id), so an empty `employees` array does not necessarily mean no one holds that title; it can also mean the caller cannot see the employees who do. The array is empty when no job titles exist. This is a read-only view. Use this to see which employees occupy each job title; for the draft assignment of job titles to compensation levels (which returns no employee data), use Get Job Titles and Level Assignments (`get-job-title-level-assignments`) instead.

OAuth Scopes: pay_grades_and_bands

## Response `200`

Job titles with the employees holding each, as a JSON array. Empty only when the company has no active, non-archived job titles.

- object[]
  - `id` integer: Job title identifier.
  - `title` string: Job title name.
  - `employees` object[]: Employees currently holding this job title. May be empty either because no one holds the title or because the authenticated caller lacks permission to view a required field (name, job title, or id) for the employees who do.
    - `id` integer: Internal employee ID (the same identifier is `employeeId` on List Employees and `eeid` on the employee dataset). This is not the editable Employee # (`employeeNumber`).
    - `name` string: Employee display name.

## Other responses

- `403`: Insufficient permissions
- `500`: Internal server error

## Changes

- **2026-11-03** `922fc15f43a7`: 1 warning, 2 info
  - removed the optional property `items/levelId` from the response with the `200` status
  - api operation id `3af7d1ac36c35008b8ebb93fecbdb35b` removed and replaced with `list-job-titles-with-employees`
  - api tag `Pay Grades & Bands` added

[Operation history](https://skmtc.dev/bamboohr/apis/bamboohr-api/changes/api/v1/pay-grades-and-bands/job-titles-with-employees/get.md)

---

[API](https://skmtc.dev/bamboohr/apis/bamboohr-api.md) - [All operations](https://skmtc.dev/bamboohr/apis/bamboohr-api/llms.txt) - [OpenAPI document](https://skmtc.dev/bamboohr/apis/bamboohr-api/revisions/922fc15f43a7?raw)
