Cases and documents
Cases group documents for one matter. Documents are uploaded through an
upload session, then processed and redacted. Paths are relative to
/api/v1.
Cases
GET/cases
Scope: cases:read · Paginated
List cases in your organization. Query: limit, cursor.
POST/cases
Scope: cases:write · Idempotency-Key required
Create a case.
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Case name. |
description | string | No | Free-text description. |
Returns 201 with the created case.
GET/cases/{case_id}
Scope: cases:read
Return one case. Returns 404 if the case is not in your organization.
PATCH/cases/{case_id}
Scope: cases:write · Idempotency-Key required
Update case metadata. Send only the fields you want to change.
| Field | Type | Description |
|---|---|---|
status | string | Case status. Use POST /cases/{case_id}/actions to move through the workflow. |
priority | string | Case priority. |
dueDate | string | Due date (ISO 8601). |
description | string | Free-text description. |
DELETE/cases/{case_id}
Scope: cases:write
Delete a case. The case is soft-deleted (its status changes) and the endpoint returns 204 No Content.
POST/cases/{case_id}/actions
Scope: cases:write · Idempotency-Key required
Run a workflow action on a case.
| Field | Type | Required | Description |
|---|---|---|---|
action | string | Yes | One of start, submit, approve, reject, cancel. |
The action moves the case to in_progress, in_review,
approved, rejected, or cancelled.
A transition that the current status does not allow returns
409 invalid_transition.
Documents in a case
GET/cases/{case_id}/documents
Scope: documents:read · Paginated
List the documents in a case. Query: limit, cursor.
POST/cases/{case_id}/upload-sessions
Scope: documents:write · Idempotency-Key required
Start an upload session for one or more files. The response lists each
file in the session with its upload_url.
| Field | Type | Required | Description |
|---|---|---|---|
files | array | No | Files to upload. Each item has a name and size in bytes. |
POST/upload-sessions/{upload_session_id}/complete
Scope: documents:write · Idempotency-Key required
Mark an upload session as complete after the files have been sent to
their upload_url.
Documents
GET/documents/{document_id}
Scope: documents:read
Return one document. Returns 404 if it is not in your organization.
PATCH/documents/{document_id}
Scope: documents:write · Idempotency-Key required
Update document metadata.
| Field | Type | Description |
|---|---|---|
fileName | string | Display name of the document. |
description | string | Free-text description. |
DELETE/documents/{document_id}
Scope: documents:write
Delete a document. Returns 204 No Content.
GET/documents/{document_id}/download-url
Scope: documents:read
Return a URL for downloading the original document file. Request a fresh URL for each download.