Skip to main content
POST
Export a matrix as CSV or XLSX

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

Ask for the finished grid rendered to a file.

format
enum<string>
required

Which format to render: csv or xlsx.

Available options:
csv,
xlsx
Example:

"csv"

includeCitations
boolean
default:true

True (the default) adds one extra column per question holding that answer's supporting quotes. False renders answers only.

Example:

true

Response

Successful Response

A rendered grid, returned as bytes rather than as a signed URL.

The second artifact on this API that does, after a draft export, and for the same reason. Every other export is a URL signed over an object a worker already wrote; MatrixService.export_matrix builds the CSV with csv.writer or the XLSX with openpyxl inside the request and writes nothing anywhere, so there is no object to sign. Minting one would mean putting client work product into storage on every export, which with encryption on in every deployment is a choice between a URL the customer cannot decrypt and plaintext in a bucket.

content is base64 and bounded by MAX_INLINE_EXPORT_BYTES, with a 413 above it. A 250-row, 60-column grid with citations is well inside that.

format
enum<string>
required

The format that was rendered.

Available options:
csv,
xlsx
Example:

"csv"

filename
string
required

Suggested filename for the rendered file.

Example:

"msa-acme-v3.docx"

sizeBytes
integer
required

Length of the DECODED file in bytes, so you can size storage without doing base64 arithmetic.

Example:

248193

content
string
required

The rendered file, base64 encoded. Bytes rather than a signed URL because a matrix export is rendered on demand: a URL would mean writing your work product to storage first.

Example:

"UEsDBBQABgAIAAAAIQ..."

Last modified on August 23, 2026