curl --request GET \
--url https://api.vaquill.ai/workspace/v1/matters/{matterId}/summaries/{summaryId} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.vaquill.ai/workspace/v1/matters/{matterId}/summaries/{summaryId}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.vaquill.ai/workspace/v1/matters/{matterId}/summaries/{summaryId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.vaquill.ai/workspace/v1/matters/{matterId}/summaries/{summaryId}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"id": "sum_9f2c8b1e4a7d43c9b6e0f1a2c3d4e5f6",
"matterId": "mat_9f2c8b1e4a7d43c9b6e0f1a2c3d4e5f6",
"status": "succeeded",
"altitude": "value",
"title": "Acme / Series B Financing",
"matterType": "financing",
"isStale": false,
"docCount": 1,
"docCountUsed": 1,
"docCountExcluded": 1,
"warnings": [
"value"
],
"createdAt": "2026-08-19T14:32:10Z",
"completedAt": "2026-08-19T14:32:10Z",
"sections": [
{
"id": "9f2c8b1e-4a7d-43c9-b6e0-f1a2c3d4e5f6",
"title": "Master Services Agreement",
"position": 0,
"claims": [
{
"id": "3d7a1c05-8e64-4b2f-9a1d-7c5e8f0b2a41",
"text": "Neither party shall be liable for indirect or consequential damages.",
"position": 0,
"claimType": "value",
"eventDate": "2026-08-19",
"confidence": 0.92,
"citations": [
{
"label": 1,
"documentId": "doc_9f2c8b1e4a7d43c9b6e0f1a2c3d4e5f6",
"documentName": "value",
"quote": "in no event shall either party be liable for indirect damages",
"pageStart": 1,
"pageEnd": 1,
"sourceAvailable": false
}
]
}
]
}
]
}{
"type": "https://vaquill.ai/docs/workspace-api/errors/insufficient-scope",
"title": "Insufficient scope",
"status": 403,
"detail": "This credential carries matters:read. This operation needs matters:write.",
"instance": "/workspace/v1/matters/mat_9f2c8b1e4a7d43c9b6e0f1a2c3d4e5f6",
"requestId": "req_5f2c8b1e4a7d43c9b6e0f1a2c3d4e5f6"
}{
"type": "https://vaquill.ai/docs/workspace-api/errors/insufficient-scope",
"title": "Insufficient scope",
"status": 403,
"detail": "This credential carries matters:read. This operation needs matters:write.",
"instance": "/workspace/v1/matters/mat_9f2c8b1e4a7d43c9b6e0f1a2c3d4e5f6",
"requestId": "req_5f2c8b1e4a7d43c9b6e0f1a2c3d4e5f6"
}{
"type": "https://vaquill.ai/docs/workspace-api/errors/insufficient-scope",
"title": "Insufficient scope",
"status": 403,
"detail": "This credential carries matters:read. This operation needs matters:write.",
"instance": "/workspace/v1/matters/mat_9f2c8b1e4a7d43c9b6e0f1a2c3d4e5f6",
"requestId": "req_5f2c8b1e4a7d43c9b6e0f1a2c3d4e5f6"
}{
"type": "https://vaquill.ai/docs/workspace-api/errors/insufficient-scope",
"title": "Insufficient scope",
"status": 403,
"detail": "This credential carries matters:read. This operation needs matters:write.",
"instance": "/workspace/v1/matters/mat_9f2c8b1e4a7d43c9b6e0f1a2c3d4e5f6",
"errors": [
{
"location": "<string>",
"message": "<string>",
"type": "<string>"
}
],
"requestId": "req_5f2c8b1e4a7d43c9b6e0f1a2c3d4e5f6"
}{
"type": "https://vaquill.ai/docs/workspace-api/errors/insufficient-scope",
"title": "Insufficient scope",
"status": 403,
"detail": "This credential carries matters:read. This operation needs matters:write.",
"instance": "/workspace/v1/matters/mat_9f2c8b1e4a7d43c9b6e0f1a2c3d4e5f6",
"requestId": "req_5f2c8b1e4a7d43c9b6e0f1a2c3d4e5f6"
}{
"type": "https://vaquill.ai/docs/workspace-api/errors/insufficient-scope",
"title": "Insufficient scope",
"status": 403,
"detail": "This credential carries matters:read. This operation needs matters:write.",
"instance": "/workspace/v1/matters/mat_9f2c8b1e4a7d43c9b6e0f1a2c3d4e5f6",
"requestId": "req_5f2c8b1e4a7d43c9b6e0f1a2c3d4e5f6"
}{
"type": "https://vaquill.ai/docs/workspace-api/errors/insufficient-scope",
"title": "Insufficient scope",
"status": 403,
"detail": "This credential carries matters:read. This operation needs matters:write.",
"instance": "/workspace/v1/matters/mat_9f2c8b1e4a7d43c9b6e0f1a2c3d4e5f6",
"requestId": "req_5f2c8b1e4a7d43c9b6e0f1a2c3d4e5f6"
}Get a matter summary
One summary, section by section, with its citations.
Sections hold claims and claims hold the passages behind them, already joined:
there is no sectionId or claimId to reassemble. Resolve a citation by
finding its quote in the document’s text, not by any offset; none is
published, because the ones we store index a string this API does not serve.
progress on the operation moves in a few coarse jumps rather than smoothly:
the pipeline writes to the job row only when its stage changes, so
Retry-After over-waits between stages on a job whose median is five minutes.
A 404 covers every reason it is not readable, including a
matter_summaries.id used in place of the sum_ id this API publishes.
curl --request GET \
--url https://api.vaquill.ai/workspace/v1/matters/{matterId}/summaries/{summaryId} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.vaquill.ai/workspace/v1/matters/{matterId}/summaries/{summaryId}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.vaquill.ai/workspace/v1/matters/{matterId}/summaries/{summaryId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.vaquill.ai/workspace/v1/matters/{matterId}/summaries/{summaryId}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"id": "sum_9f2c8b1e4a7d43c9b6e0f1a2c3d4e5f6",
"matterId": "mat_9f2c8b1e4a7d43c9b6e0f1a2c3d4e5f6",
"status": "succeeded",
"altitude": "value",
"title": "Acme / Series B Financing",
"matterType": "financing",
"isStale": false,
"docCount": 1,
"docCountUsed": 1,
"docCountExcluded": 1,
"warnings": [
"value"
],
"createdAt": "2026-08-19T14:32:10Z",
"completedAt": "2026-08-19T14:32:10Z",
"sections": [
{
"id": "9f2c8b1e-4a7d-43c9-b6e0-f1a2c3d4e5f6",
"title": "Master Services Agreement",
"position": 0,
"claims": [
{
"id": "3d7a1c05-8e64-4b2f-9a1d-7c5e8f0b2a41",
"text": "Neither party shall be liable for indirect or consequential damages.",
"position": 0,
"claimType": "value",
"eventDate": "2026-08-19",
"confidence": 0.92,
"citations": [
{
"label": 1,
"documentId": "doc_9f2c8b1e4a7d43c9b6e0f1a2c3d4e5f6",
"documentName": "value",
"quote": "in no event shall either party be liable for indirect damages",
"pageStart": 1,
"pageEnd": 1,
"sourceAvailable": false
}
]
}
]
}
]
}{
"type": "https://vaquill.ai/docs/workspace-api/errors/insufficient-scope",
"title": "Insufficient scope",
"status": 403,
"detail": "This credential carries matters:read. This operation needs matters:write.",
"instance": "/workspace/v1/matters/mat_9f2c8b1e4a7d43c9b6e0f1a2c3d4e5f6",
"requestId": "req_5f2c8b1e4a7d43c9b6e0f1a2c3d4e5f6"
}{
"type": "https://vaquill.ai/docs/workspace-api/errors/insufficient-scope",
"title": "Insufficient scope",
"status": 403,
"detail": "This credential carries matters:read. This operation needs matters:write.",
"instance": "/workspace/v1/matters/mat_9f2c8b1e4a7d43c9b6e0f1a2c3d4e5f6",
"requestId": "req_5f2c8b1e4a7d43c9b6e0f1a2c3d4e5f6"
}{
"type": "https://vaquill.ai/docs/workspace-api/errors/insufficient-scope",
"title": "Insufficient scope",
"status": 403,
"detail": "This credential carries matters:read. This operation needs matters:write.",
"instance": "/workspace/v1/matters/mat_9f2c8b1e4a7d43c9b6e0f1a2c3d4e5f6",
"requestId": "req_5f2c8b1e4a7d43c9b6e0f1a2c3d4e5f6"
}{
"type": "https://vaquill.ai/docs/workspace-api/errors/insufficient-scope",
"title": "Insufficient scope",
"status": 403,
"detail": "This credential carries matters:read. This operation needs matters:write.",
"instance": "/workspace/v1/matters/mat_9f2c8b1e4a7d43c9b6e0f1a2c3d4e5f6",
"errors": [
{
"location": "<string>",
"message": "<string>",
"type": "<string>"
}
],
"requestId": "req_5f2c8b1e4a7d43c9b6e0f1a2c3d4e5f6"
}{
"type": "https://vaquill.ai/docs/workspace-api/errors/insufficient-scope",
"title": "Insufficient scope",
"status": 403,
"detail": "This credential carries matters:read. This operation needs matters:write.",
"instance": "/workspace/v1/matters/mat_9f2c8b1e4a7d43c9b6e0f1a2c3d4e5f6",
"requestId": "req_5f2c8b1e4a7d43c9b6e0f1a2c3d4e5f6"
}{
"type": "https://vaquill.ai/docs/workspace-api/errors/insufficient-scope",
"title": "Insufficient scope",
"status": 403,
"detail": "This credential carries matters:read. This operation needs matters:write.",
"instance": "/workspace/v1/matters/mat_9f2c8b1e4a7d43c9b6e0f1a2c3d4e5f6",
"requestId": "req_5f2c8b1e4a7d43c9b6e0f1a2c3d4e5f6"
}{
"type": "https://vaquill.ai/docs/workspace-api/errors/insufficient-scope",
"title": "Insufficient scope",
"status": 403,
"detail": "This credential carries matters:read. This operation needs matters:write.",
"instance": "/workspace/v1/matters/mat_9f2c8b1e4a7d43c9b6e0f1a2c3d4e5f6",
"requestId": "req_5f2c8b1e4a7d43c9b6e0f1a2c3d4e5f6"
}Authorizations
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
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.
sum_ identifier of the matter summary. Returned on the operation that generated it.
Response
Successful Response
One generation of a matter summary, and its content once it has one.
sum_ identifier. The same id the operation's resource carries, and the only id this API publishes for a summary.
"sum_9f2c8b1e4a7d43c9b6e0f1a2c3d4e5f6"
The mat_ matter this summary covers.
"mat_9f2c8b1e4a7d43c9b6e0f1a2c3d4e5f6"
The generation's status, in the same five values every operation uses.
queued, running, succeeded, failed, cancelled "succeeded"
True when the matter's documents have changed since this summary was built. Computed per request, never stored. A summary can also refresh ITSELF: a document change schedules a debounced regeneration for an altitude that already has a completed summary, so isStale can flip between two polls with no call from you.
false
Documents in the matter right now.
1
When the generation was requested.
"2026-08-19T14:32:10Z"
How much detail was synthesized. executive or detailed; read it as an open string, because the column carries no constraint. Null on the one row shape where it is genuinely unknown: matter_summary_jobs does not record the altitude, so a job whose summary row is gone has nothing to report and the commoner answer would be an invention.
"executive"
The title the synthesizer gave the matter. Null until it runs.
"Acme / Series B Financing"
What the classifier decided the matter is.
"financing"
Documents this generation read.
1
Documents this generation skipped.
1
What the pipeline wants you to know about this result, if anything.
["value"]
When the summary finished, read from the summary itself rather than from the job, which records no completion time.
"2026-08-19T14:32:10Z"
The rendered narrative. Present only on the by-id read; the list omits it rather than sending an empty array, so null here means 'not included in this response' and [] means 'nothing was written'.
Show child attributes
Show child attributes
Was this page helpful?

