List positions
Operation ID: positions
Group: People Management › Positions
Open in the interactive reference
GET /people/positions
Read-only: Reads and returns; changes nothing.
Lists positions. The list doesn't include each position's start and end dates or its hiring manager, job profile, and region identifiers. GET people/positions/:id returns those, with the job profile and region names.
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
Api-Version |
header | string · v1 | yes | The API version this request targets, named by its public identifier. Required on every request; omitting it, or naming a version this company does not have, is answered with 400. This document describes version v1. |
Query surface
id— filter by eq, ne, gt, gte, lt, lte, in, notIn, between, likepositionNumber— filter by eq, ne, gt, gte, lt, lte, in, notIn, between, likename— filter by eq, ne, gt, gte, lt, lte, in, notIn, between, likeovertimeStatus— filter by eq, ne, gt, gte, lt, lte, in, notIn, between, likestatus— filter by eq, ne, gt, gte, lt, lte, in, notIn, between, liketimelineStatus— filter by eq, ne, gt, gte, lt, lte, in, notIn, between, likelastModifiedDate— filter by eq, ne, gt, gte, lt, lte, in, notIn, between- Orderable: id, positionNumber, name, hiringManagerName, desiredHeadcount, employeeCount, status, timelineStatus, lastModifiedDate
- Selectable: id, positionNumber, name, description, desiredHeadcount, employeeCount, expectedSalary, hiringManagerName, overtimeStatus, status, timelineStatus, lastModifiedDate
page[size]— Page sizepage[cursor]— Opaque continuation cursor
Response
200 Success
Under data, an array of positionsRow:
| Field | Type | Required | Filter | Sort | Description |
|---|---|---|---|---|---|
id |
string | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn), Pattern (like) |
yes | The unique identifier for the position. |
positionNumber |
string | null | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn), Pattern (like) |
yes | The system-generated position number, for example 'POS-100010'. Absent while none has been assigned. |
name |
string | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn), Pattern (like) |
yes | The display name of the position. |
description |
string | null | no | no | no | A free-form description of the position's responsibilities. Absent when none is set. |
desiredHeadcount |
number | null | no | no | yes | The target number of people to fill this position. |
employeeCount |
number | null | no | no | yes | The number of employees currently in this position. |
expectedSalary |
number | null | no | no | no | The expected annual salary for this position, in the entity's currency. |
hiringManagerName |
string | null | no | no | yes | The full name of the hiring manager. Absent when none is assigned. |
overtimeStatus |
string | null | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn), Pattern (like) |
no | The overtime eligibility of the position. Possible values: 'EXEMPT', 'NON_EXEMPT'. |
status |
string | null | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn), Pattern (like) |
yes | The fill status of the position. Possible values: 'unfilled', 'partiallyFilled', 'filled', 'overfilled', 'inactive'. |
timelineStatus |
string | null | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn), Pattern (like) |
yes | The timeline status of the position. Possible values: 'planned', 'inactive', 'active', 'canceled'. |
lastModifiedDate |
date-time | null | no | Exact (eq, ne), Range (gt, gte, lt, lte, between), Any of (in, notIn) |
yes | The date and time the position record last changed, in UTC. Format YYYY-MM-DDTHH:mm:ss.sssZ. |
{
"data": [
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"positionNumber": "<positionNumber>",
"name": "<name>",
"description": "<description>",
"desiredHeadcount": 0,
"employeeCount": 0,
"expectedSalary": 0,
"hiringManagerName": "<hiringManagerName>",
"overtimeStatus": "<overtimeStatus>",
"status": "<status>",
"timelineStatus": "<timelineStatus>",
"lastModifiedDate": "2026-01-15T09:30:00.000Z"
}
],
"pagination": {
"hasMore": true,
"nextCursor": "<nextCursor>"
}
}
Statuses
400— Invalid request or business failure401— The request carries no valid access token.403— Not authorized404— Not found429— Too many requests from this client address. The response has no body and noRetry-Afterheader.500— Internal server error