---
title: "GET /v1/workers"
method: GET
path: "/v1/workers"
tags: ["Workers"]
---

# GET /v1/workers

`GET /v1/workers`

List all workers. Workers include anyone employed by the company, whether US or international, full-time employees or contractors.

## Query parameters

- `limit` string — a number less than or equal to 100
- `afterId` string — The id of the worker.
- `beforeId` string — The id of the worker.
- `statuses` string[]
- `types` string[]
- `workEmail` string

## Response `200`

Success

- object
  - `hasMore` boolean, required
  - `count` integer, required — an integer
  - `data` object[], required
    - `id` string, required — The id of the worker.
    - `position` string, required
    - `type` 'employee' | 'contractor', required
    - `status` 'draft' | 'invited' | 'onboarding' | 'active' | 'offboarding' | 'inactive', required
    - `startDate` string, required — A date string in the form YYYY-MM-DD
    - `endDate` string, nullable, required — A date string in the form YYYY-MM-DD
    - `isBusiness` boolean, nullable, required
    - `businessName` string, nullable, required
    - `firstName` string, required
    - `lastName` string, required
    - `email` string, required — An email with a reasonably valid regex (shamelessly taken from zod)
    - `workEmail` string, nullable, required — An email with a reasonably valid regex (shamelessly taken from zod)
    - `preferredName` string, nullable, required
    - `displayName` string, required — The "ui" name of a worker. If it's a business contractor business name is used. Otherwise we default to preferred name, then first-last.
    - `timeZone` string, nullable, required — The IANA timezone of the worker (e.g., America/New_York).
    - `department` object, nullable, required — The department the worker belongs to, or null if unassigned.
      - `id` string, required — The unique public id of the department
      - `name` string, required

## Other responses

- `400` — The request did not match the expected schema
- `401` — ApiKeyUnauthorized
- `403` — MissingRequiredPermissions
- `429` — RateLimitExceeded
- `500` — InternalServerError

## Changes

- **2026-03-19** `a896c17cf988` — 4 breaking, 2 warning, 3 info
  - the response's body type/format changed from `object`/`` to ``/`` for status `403`
  - removed the required property `_tag` from the response with the `403` status
  - removed the required property `message` from the response with the `403` status
  - removed the required property `requiredPermissions` from the response with the `403` status
  - …5 more
- **2026-03-13** `6cfbdf910b80` — 1 warning
  - added the new `company:workplaces` enum value to the `requiredPermissions/items/scope` response property for the response status `403`
- **2026-03-09** `768d9cb8d8d9` — 2 breaking, 3 info
  - the `requiredPermissions/items/` response property's minItems was decreased from `2` to `0` for the response status `403`
  - the `requiredPermissions/items/` response's property type/format changed from `array`/`` to `object`/`` for status `403`
  - removed `subschema #1, subschema #2` from the `requiredPermissions/items/` response property 'prefixItems' list for the response status `403`
  - added the required property `requiredPermissions/items/level` to the response with the `403` status
  - …1 more
- **2026-03-09** `787281d7e9a2` — 2 info
  - added the non-success response with the status `403`
  - added the required property `data/items/department` to the response with the `200` status
- …earlier changes not shown

[Full history](https://skmtc.dev/teamwarp/apis/warp-api/changes/v1/workers/get.md)

---

[API](https://skmtc.dev/teamwarp/apis/warp-api.md) · [All operations](https://skmtc.dev/teamwarp/apis/warp-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/teamwarp/warp-api/revisions/f3df5d5ca575/schema)
