Skip to main content
POST
Add documents as matrix rows

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.

Body

application/json

Documents to add to the grid, one row each.

Each id must be in the matter named in the path and must have finished ingesting, exactly as on the create: retrieval over a document with no chunks yet answers "not in this document" for every column, which is one paid call per cell to learn nothing.

A document already enrolled as a row is REFUSED, not skipped. matrix_rows is UNIQUE on (matrix_id, document_id) and the service filters duplicates out of its own payload, so without the refusal a request naming five documents could add three and answer 201 with nothing saying which two it dropped.

autoRun is not published. Adding rows creates pending cells and starts nothing; matrices.run starts it.

documentIds
string[]
required

doc_ identifiers to add as rows. Each must be in this matter, must have finished ingesting, and must not already be a row.

Minimum array length: 1
Example:

Response

Successful Response

The grid header plus its axes. Cells are a separate, paged read.

Rows and columns are inlined because they are bounded and because a cell is unreadable without them: a cell names a row id and a column id and nothing else, so a client that could not resolve those would have to page the whole grid to interpret one answer.

id
string
required

Public identifier, mtx_ followed by 32 hex characters.

Example:

"mtx_9f2c8b1e4a7d43c9b6e0f1a2c3d4e5f6"

matterId
string
required

mat_ identifier of the matter this matrix belongs to.

Example:

"mat_9f2c8b1e4a7d43c9b6e0f1a2c3d4e5f6"

title
string
required

Display title for the matrix.

Example:

"Vendor agreement review"

status
enum<string>
required

Matrix status, using the same five public values as an operation.

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

"succeeded"

createdAt
string<date-time>
required

When the matrix was created (RFC 3339).

Example:

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

updatedAt
string<date-time>
required

When the matrix was last updated (RFC 3339).

Example:

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

description
string | null

Free-text description of what the matrix is for.

Example:

"Master services agreement with Acme for the 2026 platform rollout."

columns
MatrixColumn · object[]

Every column, inlined. A cell names only ids, so these are what make one readable.

rows
MatrixRow · object[]

Every row, inlined, one per document.

cellCount
integer
default:0

Total cells in the grid, which is rows times columns.

Example:

24

pendingCellCount
integer
default:0

Cells that have not produced an answer yet. Zero means extraction is complete.

Example:

0

errorCellCount
integer
default:0

Cells whose extraction failed. These are distinct from cells that succeeded with a null answer.

Example:

0

Last modified on August 23, 2026