Skip to main content
PATCH
Write or review a matrix cell answer

Authorizations

Authorization
string
header
required

Workspace credential issued from the automation console at /automation. Send it as Authorization: Bearer vq_ws_.... This is NOT a Data API key: a vq_key_ credential is refused here and names the other product in the error.

Path Parameters

matterId
string
required

mat_ identifier of the matter to work inside. Everything in this API hangs off a matter, and the matter in the path is what the authorization boundary is checked against. Take it from GET /v1/matters.

matrixId
string
required

mtx_ identifier of the matrix. Take it from the matter's matrix list.

cellId
string
required

cel_ identifier of one cell, which is one document's answer to one question. Take it from GET .../matrices/{matrixId}/cells.

Body

application/json

Write a human answer into a cell, or record a review decision on it.

Writing answer promotes the cell to an edited state, and an edited, approved or rejected cell is not re-run and not re-charged by a default run. MatrixService._select_cells_for_run selects only pending, error, not_found and not_applicable, schedule_run re-applies that filter on its bulk reset, and extract_cell_by_id short-circuits before any model call. force: true on a run has none of those guards and overwrites the answer with no warning.

The cell keeps reading as succeeded, because the extraction job did succeed. The review verdict is not published back on the cell for the same reason the comments and decisions are not published at all: it is a collaboration primitive, and this API publishes the five public statuses and no sixth.

answer
string | null

The answer to record for this cell, replacing whatever is there. There is no way to clear an answer back to empty; re-run the cell with force to have the extractor produce a fresh one.

Required string length: 1 - 20000
Example:

"Twelve months of fees paid."

review
enum<string> | null

approved or rejected, recording what a reviewer decided about the answer. The extractor's own statuses cannot be written here: an integration writing extracted onto an answer no machine produced makes the grid unauditable.

Available options:
approved,
rejected
Example:

"approved"

Response

Successful Response

One answer. answer is None on a succeeded cell means "not in this document", which is a finding rather than a failure.

id
string
required

Public identifier for the cell, cel_ followed by 32 hex characters.

Example:

"cel_9f2c8b1e4a7d43c9b6e0f1a2c3d4e5f6"

rowId
string
required

row_ identifier of the row this cell sits in. Resolve it against the matrix's rows.

Example:

"row_9f2c8b1e4a7d43c9b6e0f1a2c3d4e5f6"

columnId
string
required

col_ identifier of the column this cell sits in. Resolve it against the matrix's columns.

Example:

"col_9f2c8b1e4a7d43c9b6e0f1a2c3d4e5f6"

status
enum<string>
required

Extraction status for this one cell, using the same five public values as an operation.

Available options:
queued,
running,
succeeded,
failed,
cancelled
Example:

"succeeded"

answer
string | null

The extracted answer. Null on a SUCCEEDED cell means the answer is not in that document, which is a finding rather than a failure. Null on a non-terminal cell means it has not run yet.

Example:

"Twelve months of fees paid."

citations
MatrixCitation · object[]

Verified supporting quotes for the answer. An empty list on a succeeded cell with an answer means every candidate citation failed verification and was dropped.

confidence
number | null

The extractor's confidence in the answer, 0 to 1.

Example:

0.92

extractedAt
string<date-time> | null

When this cell was last extracted (RFC 3339).

Example:

"2026-08-19T14:32:10Z"

Last modified on August 23, 2026