Skip to main content
GET
/
api
/
people
List people in a library
curl --request GET \
  --url https://api.example.com/api/people
{
  "data": [
    {
      "id": "<string>",
      "is_hidden": true,
      "is_favorite": true,
      "created_at": "2023-11-07T05:31:56Z",
      "updated_at": "2023-11-07T05:31:56Z",
      "name": "<string>",
      "birth_date": "2023-12-25",
      "asset_count": 123,
      "thumbnail_face_id": "<string>",
      "asset_urls": {},
      "cluster_metrics": {
        "pairwise_p90": 123,
        "pairwise_mean": 123,
        "face_count": 123
      }
    }
  ],
  "has_more": true
}

Query Parameters

limit
integer
default:20

Maximum number of people to return per page (1–200). Defaults to 20.

Required range: 1 <= x <= 200
starting_after_id
string | null

Cursor for pagination. Pass the id of the last person in the previous response's data to fetch the next page. Omit for the first page.

asset_id
string | null

Return only people who have at least one face in this asset. Useful for 'who is in this photo?'.

album_id
string | null

Return only people who appear in at least one asset of this album. Useful for 'who is in this album?'.

ids
string[] | null

Look up specific people by ID (max 100; each ID has the person_ prefix). Accepts multiple ids= query params or a single comma-delimited value (e.g., ids=person_1,person_2). When set, name_filter defaults to all so unnamed clusters are included in the lookup.

name
string | null

Filter by name using case-insensitive substring matching. Use this to resolve a user-supplied name like 'Alice' into a person_id, then pass that ID into search_assets.person_ids or list_assets.person_id.

name_filter
enum<string> | null

Filter by name status: named returns only people with a name; unnamed returns only nameless face clusters awaiting a name; all returns both. Defaults to named (or all when ids is provided).

Available options:
named,
unnamed,
all
sort
enum<string>
default:created_at_desc

Sort order for results: created_at_desc (newest people first; default) / created_at_asc, name_asc / name_desc (alphabetical by name, locale-aware; unnamed people always sort last), or asset_count_desc / asset_count_asc (by number of photos the person appears in). Name sorts cannot be combined with name_filter=unnamed.

Available options:
created_at_desc,
created_at_asc,
name_asc,
name_desc,
asset_count_desc,
asset_count_asc
library_id
string | null

Library to list from. Optional if the user has a single library; required when they have multiple.

include
string[] | null

Opt-in expansion fields. Supported values: cluster_metrics (adds the nested cluster_metrics object — pairwise_p90, pairwise_mean, face_count — for each Person with a populated centroid). Accepts multiple include= query params or a single comma-delimited value. Unknown values return 422.

Response

Successful Response

data
PersonResponse · object[]
required

List of people

has_more
boolean
required

True if there are more people after this page. Pass the last person's id as starting_after_id to fetch the next page.