Getting access
The Legal Holds API is available on Enterprise plans. A workspace admin creates a Legal hold API key in Settings → Integrations → Legal hold API keys. A workspace can have up to five active Legal hold keys at a time. A Legal hold key manages holds and nothing else. It cannot read notes, folders, the audit log, or webhook endpoints.What a hold covers
A hold can cover your whole workspace, named custodians, or both:covers_entire_workspace: truecovers every member of the workspace, current and future. It is required when you create a hold, so scope is always an explicit choice, and can be changed later with update. Changing it never touches the custodians the hold names.- Custodians are named by
emailor by Granola userid(usr_…), exactly one per entry. They can be set when the hold is created and added later.custodian_countcounts named custodians only.
CUSTODIAN_NOT_IN_WORKSPACE and nothing is added; the error’s details lists every entry that failed, not just the first.
Hold names must be unique among your workspace’s live holds. Creating or renaming a hold to a name already in use returns LEGAL_HOLD_NAME_CONFLICT. A released hold’s name can be reused.
Pagination
Holds are listed newest first, custodians oldest first.page_size returns at most 30 items per page. Page on hasMore and cursor, not on how many items a page contains.
Errors
Next steps
GET /v1/legal-holds— list holds.POST /v1/legal-holds— place a hold.GET /v1/legal-holds/{hold_id}— get a hold.PATCH /v1/legal-holds/{hold_id}— update a hold.DELETE /v1/legal-holds/{hold_id}— release a hold.GET /v1/legal-holds/{hold_id}/custodians— list custodians on a hold.POST /v1/legal-holds/{hold_id}/custodians— name custodians on a hold.DELETE /v1/legal-holds/{hold_id}/custodians/{custodian_id}— remove a custodian from a hold.

