External API v1

Processing and redactions

Start processing jobs on a document, then read and review the redactions and comments for it. Paths are relative to /api/v1.

Processing jobs

POST/documents/{document_id}/scan-jobs

Scope: processing:write · Idempotency-Key required

Start a scan job for the document. Returns 202 Accepted with the job; the work continues in the background.

POST/documents/{document_id}/ocr-jobs

Scope: processing:write · Idempotency-Key required

Start OCR (text recognition) for the document. Returns 202 Accepted.

POST/documents/{document_id}/detection-jobs

Scope: processing:write · Idempotency-Key required

Start automatic detection of sensitive content in the document. Returns 202 Accepted.

POST/documents/{document_id}/transcription-jobs

Scope: processing:write · Idempotency-Key required

Start transcription for the document. Returns 202 Accepted.

POST/documents/{document_id}/summary-jobs

Scope: processing:write · Idempotency-Key required

Start an AI summary of the document. Returns 202 Accepted.

GET/jobs/{job_id}

Scope: processing:read

Read a job. The response includes kind, status, result once the job has finished, and error_message if it failed. Poll this endpoint, or use webhook events, to learn when a job completes.

GET/documents/{document_id}/jobs

Scope: processing:read · Paginated

List the jobs for a document.

Redactions

GET/documents/{document_id}/redactions

Scope: redactions:read · Paginated

List the redactions on a document.

POST/documents/{document_id}/redactions

Scope: redactions:write · Idempotency-Key required

Create one or more redactions on a document. Returns 201 Created with the created redactions.

FieldTypeRequiredDescription
redactionsarrayYesList of redaction objects. Each object has a kind and coordinates. Use GET /api/v1/redaction-types to get the valid kinds.

GET/redactions/{redaction_id}

Scope: redactions:read

Read one redaction.

PATCH/redactions/{redaction_id}

Scope: redactions:write · Idempotency-Key required

Update a redaction's kind or coordinates. Returns 423 locked while another editor holds the layer.

DELETE/redactions/{redaction_id}

Scope: redactions:write

Delete a redaction. Returns 204 No Content.

POST/documents/{document_id}/review-decisions

Scope: redactions:write · Idempotency-Key required

Record review decisions for redactions on a document. The request body contains a decisions array; it must be an array, otherwise the request fails with 400 validation_error.

Comments

GET/documents/{document_id}/comments

Scope: comments:read · Paginated

List the comments on a document.

POST/documents/{document_id}/comments

Scope: comments:write · Idempotency-Key required

Add a comment to a document. Body: text (string, required).

GET/comments/{comment_id}

Scope: comments:read

Read one comment.