---
title: "List people"
method: GET
path: "/people"
tags: ["people"]
---

# List people

`GET /people`

## Request

- Base URL: `https://api.fallax.io/v1`
- URL: `https://api.fallax.io/v1/people`
- Auth: HTTP bearer

The directory: everyone this workspace can send a simulation to, with the status that decides whether it will. `syncedProvider` is set on anyone who came from a directory sync, and the fields that sync owns cannot be written through this API.

## Query parameters

- `limit` string: Rows per page, 1 to 200. Defaults to 50. A page comes back with a `nextCursor` when there are more.
- `cursor` string: The `nextCursor` from the previous page. Paging is by cursor rather than by offset, so rows written while you page are never skipped.
- `since` string: Only rows after this instant, exclusive. ISO 8601 or epoch milliseconds. This is the parameter a poll trigger uses: pass the timestamp of the newest row you have already handled.
- `order` 'desc' | 'asc': `desc` (the default) for newest first, which is what a person reading a page wants. `asc` for oldest first, which is what anything resuming from a watermark wants: with `since` and a limit, an ascending page is the oldest rows you have not seen, so a backlog drains in order instead of the newest page hiding the rest.
- `status` 'active' | 'excluded' | 'archived': `active`, `excluded` or `archived`.
- `email` string: Exact address match.
- `department` string: Exact department match.

## Response `200`

List people

- PersonPage
  - `data` Person[], required
    - `id` string, required
    - `email` string, required
    - `firstName` string, nullable, required
    - `lastName` string, nullable, required
    - `department` string, nullable, required
    - `position` string, nullable, required
    - `locale` string, nullable, required
    - `timezone` string, nullable, required
    - `status` 'active' | 'excluded' | 'archived', required
    - `syncedProvider` string, nullable, required
    - `createdAt` string, date-time, nullable, required
  - `nextCursor` string, nullable, required: Pass as `cursor` for the next page.
  - `hasMore` boolean, required

## Other responses

- `400`: A parameter or body field the API cannot use. The message names the field.
- `401`: No key, an unknown key, or one that has been revoked.
- `403`: A read-only key was used on a write endpoint.
- `404`: No such endpoint, or no such row in this workspace. The two are deliberately indistinguishable from outside: another workspace's ids must not be probeable.
- `405`: The path exists but not with that verb. `Allow` lists the verbs that work.
- `429`: More than 120 requests in a minute on one key. `Retry-After` says how long to wait. A poll every minute, and the paging behind it, is nowhere near this.
- `500`: Our fault. Safe to retry.

---

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