People
The named identities faces are grouped into, and the suggestions that propose each grouping. The detections themselves are in Faces.
List people
Beta — this operation may change on 30 days notice. See versioning.
Returns the people in the workspace, most-photographed first, each with the number of faces assigned to it and the number of suggestions waiting for review.
unnamed=true returns only the clusters nobody has named yet, and needs_review=true only those with suggestions pending — the two queues the review UI is built around.
query Parameters
cursor^[A-Za-z0-9_-]+$fp_namelimitneeds_reviewoffsetsort^-?[a-z0-9_]+$unnamedHeaders
X-Tenant-IdThe workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.
List people › Responses
Success
has_moreWhether more rows exist past this page.
next_cursorPass back as cursor for the next page. Null on the last page.
Rename a person
Beta — this operation may change on 30 days notice. See versioning.
path Parameters
idHeaders
X-Tenant-IdThe workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.
Rename a person › Responses
Success
Delete a person
Beta — this operation may change on 30 days notice. See versioning.
Releases every face assigned to this person and then deactivates it. The faces and the photos survive — they go back to being unassigned detections, available to be grouped again.
path Parameters
idHeaders
X-Tenant-IdThe workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.
Delete a person › Responses
Success. No content.
List photos
Beta — this operation may change on 30 days notice. See versioning.
Only files the caller may read are returned — the file's own access rules still apply, so two people looking at the same person can see different photos.
path Parameters
idquery Parameters
cursor^[A-Za-z0-9_-]+$limitoffsetsort^-?[a-z0-9_]+$Headers
X-Tenant-IdThe workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.
List photos › Responses
Success
has_moreWhether more rows exist past this page.
next_cursorPass back as cursor for the next page. Null on the last page.
Rebuild the face index
Beta — this operation may change on 30 days notice. See versioning.
Recomputes the references this person is matched against, after their assignments have changed enough to be worth it. Runs in the background: a request made while one is already running answers 202 rather than starting a second.
path Parameters
idHeaders
X-Tenant-IdThe workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.
Rebuild the face index › Responses
Success
Set the cover face
Beta — this operation may change on 30 days notice. See versioning.
The detection must already belong to this person.
path Parameters
idHeaders
X-Tenant-IdThe workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.
Set the cover face › Responses
Success
Verify suggestions
Beta — this operation may change on 30 days notice. See versioning.
Runs one vision comparison of the person's reference faces against each unverified candidate and records a match, no_match or unsure verdict — it catches what the face embeddings cannot.
It decides nothing on its own: verdicts come back through the suggestion list, and a no_match withholds that suggestion. Idempotent, and already-verified candidates are skipped, so calling it twice costs nothing.
path Parameters
idHeaders
X-Tenant-IdThe workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.
Verify suggestions › Responses
Success
Assign a face
Beta — this operation may change on 30 days notice. See versioning.
Assigns one detected face. Omit fp_id and a new person is created for it — optionally named with fp_name — which is how a face is named for the first time.
Headers
X-Tenant-IdThe workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.
Assign a face › Responses
Success
Merge two people
Beta — this operation may change on 30 days notice. See versioning.
Moves every face from source_id onto target_id and retires the source. This is the fix for one person having been split across two clusters.
Headers
X-Tenant-IdThe workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.
Merge two people › Request Body
source_idtarget_idMerge two people › Responses
Success
List suggestions
Beta — this operation may change on 30 days notice. See versioning.
Faces the matcher believes belong to someone already named, closest match first, waiting for a yes or no. Filter to one person with fp_id.
Suggestions that plainly contradict the person are withheld rather than shown and rejected: a gender estimate against confidently-gendered references, an age far from the person's median, or a no_match verdict from the vision check. Anything already verified carries its verdict here.
query Parameters
cursor^[A-Za-z0-9_-]+$fp_idlimitoffsetsort^-?[a-z0-9_]+$Headers
X-Tenant-IdThe workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.
List suggestions › Responses
Success
has_moreWhether more rows exist past this page.
next_cursorPass back as cursor for the next page. Null on the last page.
Confirm a suggestion
Beta — this operation may change on 30 days notice. See versioning.
path Parameters
idHeaders
X-Tenant-IdThe workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.
Confirm a suggestion › Responses
Success
Reject a suggestion
Beta — this operation may change on 30 days notice. See versioning.
path Parameters
idHeaders
X-Tenant-IdThe workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.
Reject a suggestion › Responses
Success
Resolve suggestions
Beta — this operation may change on 30 days notice. See versioning.
Applies one action — confirm or reject — to every id in fd_ids. A suggestion someone else already resolved is skipped rather than failing the batch, so the counts in the response are the truth about what this call did.
Headers
X-Tenant-IdThe workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.
Resolve suggestions › Request Body
actionfd_idsResolve suggestions › Responses
Success
confirmedrejectedskippedAlready assigned or already resolved elsewhere.
Unassign a face
Beta — this operation may change on 30 days notice. See versioning.
Detaches a face from its person and leaves it as an unassigned detection.
Headers
X-Tenant-IdThe workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.
Unassign a face › Responses
Success
