curl --request PATCH \
--url https://api.vaquill.ai/workspace/v1/matters/{matterId}/chronology/events/{eventId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"eventDate": "2026-08-19",
"eventDateEnd": "2026-08-19",
"eventDateApproximate": false,
"eventType": "signed",
"category": "contract_event",
"title": "Master Services Agreement",
"description": "Master services agreement with Acme for the 2026 platform rollout.",
"parties": [
"value"
],
"tags": [
"saas",
"buyer-side"
],
"significance": "high"
}
'import requests
url = "https://api.vaquill.ai/workspace/v1/matters/{matterId}/chronology/events/{eventId}"
payload = {
"eventDate": "2026-08-19",
"eventDateEnd": "2026-08-19",
"eventDateApproximate": False,
"eventType": "signed",
"category": "contract_event",
"title": "Master Services Agreement",
"description": "Master services agreement with Acme for the 2026 platform rollout.",
"parties": ["value"],
"tags": ["saas", "buyer-side"],
"significance": "high"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
eventDate: '2026-08-19',
eventDateEnd: '2026-08-19',
eventDateApproximate: false,
eventType: 'signed',
category: 'contract_event',
title: 'Master Services Agreement',
description: 'Master services agreement with Acme for the 2026 platform rollout.',
parties: ['value'],
tags: ['saas', 'buyer-side'],
significance: 'high'
})
};
fetch('https://api.vaquill.ai/workspace/v1/matters/{matterId}/chronology/events/{eventId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.vaquill.ai/workspace/v1/matters/{matterId}/chronology/events/{eventId}"
payload := strings.NewReader("{\n \"eventDate\": \"2026-08-19\",\n \"eventDateEnd\": \"2026-08-19\",\n \"eventDateApproximate\": false,\n \"eventType\": \"signed\",\n \"category\": \"contract_event\",\n \"title\": \"Master Services Agreement\",\n \"description\": \"Master services agreement with Acme for the 2026 platform rollout.\",\n \"parties\": [\n \"value\"\n ],\n \"tags\": [\n \"saas\",\n \"buyer-side\"\n ],\n \"significance\": \"high\"\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"id": "evt_9f2c8b1e4a7d43c9b6e0f1a2c3d4e5f6",
"matterId": "mat_9f2c8b1e4a7d43c9b6e0f1a2c3d4e5f6",
"documentId": "doc_9f2c8b1e4a7d43c9b6e0f1a2c3d4e5f6",
"documentName": "value",
"eventDate": "2026-08-19",
"eventDateEnd": "2026-08-19",
"eventDateApproximate": false,
"eventType": "signed",
"category": "commercial",
"significance": "high",
"title": "Master Services Agreement",
"description": "Master services agreement with Acme for the 2026 platform rollout.",
"parties": [
"value"
],
"tags": [
"saas",
"buyer-side"
],
"sourceText": "value",
"sourcePageNumber": 1,
"isAiExtracted": false,
"confidenceScore": 1,
"isPrimaryInGroup": false,
"createdAt": "2026-08-19T14:32:10Z",
"updatedAt": "2026-08-19T14:32:10Z"
}{
"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"
}Update a chronology event
Correct an event. Omitted fields are left alone.
A PATCH, so send only what changes. An explicit null clears description or
eventDateEnd; every other field is backed by a NOT NULL column and a null
for one is refused by name. documentId is not patchable: which document an
event came from is provenance, and re-pointing it would make an extracted
event claim a source it was never read from.
curl --request PATCH \
--url https://api.vaquill.ai/workspace/v1/matters/{matterId}/chronology/events/{eventId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"eventDate": "2026-08-19",
"eventDateEnd": "2026-08-19",
"eventDateApproximate": false,
"eventType": "signed",
"category": "contract_event",
"title": "Master Services Agreement",
"description": "Master services agreement with Acme for the 2026 platform rollout.",
"parties": [
"value"
],
"tags": [
"saas",
"buyer-side"
],
"significance": "high"
}
'import requests
url = "https://api.vaquill.ai/workspace/v1/matters/{matterId}/chronology/events/{eventId}"
payload = {
"eventDate": "2026-08-19",
"eventDateEnd": "2026-08-19",
"eventDateApproximate": False,
"eventType": "signed",
"category": "contract_event",
"title": "Master Services Agreement",
"description": "Master services agreement with Acme for the 2026 platform rollout.",
"parties": ["value"],
"tags": ["saas", "buyer-side"],
"significance": "high"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
eventDate: '2026-08-19',
eventDateEnd: '2026-08-19',
eventDateApproximate: false,
eventType: 'signed',
category: 'contract_event',
title: 'Master Services Agreement',
description: 'Master services agreement with Acme for the 2026 platform rollout.',
parties: ['value'],
tags: ['saas', 'buyer-side'],
significance: 'high'
})
};
fetch('https://api.vaquill.ai/workspace/v1/matters/{matterId}/chronology/events/{eventId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.vaquill.ai/workspace/v1/matters/{matterId}/chronology/events/{eventId}"
payload := strings.NewReader("{\n \"eventDate\": \"2026-08-19\",\n \"eventDateEnd\": \"2026-08-19\",\n \"eventDateApproximate\": false,\n \"eventType\": \"signed\",\n \"category\": \"contract_event\",\n \"title\": \"Master Services Agreement\",\n \"description\": \"Master services agreement with Acme for the 2026 platform rollout.\",\n \"parties\": [\n \"value\"\n ],\n \"tags\": [\n \"saas\",\n \"buyer-side\"\n ],\n \"significance\": \"high\"\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"id": "evt_9f2c8b1e4a7d43c9b6e0f1a2c3d4e5f6",
"matterId": "mat_9f2c8b1e4a7d43c9b6e0f1a2c3d4e5f6",
"documentId": "doc_9f2c8b1e4a7d43c9b6e0f1a2c3d4e5f6",
"documentName": "value",
"eventDate": "2026-08-19",
"eventDateEnd": "2026-08-19",
"eventDateApproximate": false,
"eventType": "signed",
"category": "commercial",
"significance": "high",
"title": "Master Services Agreement",
"description": "Master services agreement with Acme for the 2026 platform rollout.",
"parties": [
"value"
],
"tags": [
"saas",
"buyer-side"
],
"sourceText": "value",
"sourcePageNumber": 1,
"isAiExtracted": false,
"confidenceScore": 1,
"isPrimaryInGroup": false,
"createdAt": "2026-08-19T14:32:10Z",
"updatedAt": "2026-08-19T14:32:10Z"
}{
"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.
evt_ identifier of one chronology event. Take it from the matter's chronology.
Body
Fields to change. Omitted fields are left alone.
An explicit null clears description or eventDateEnd. Every other field
here is backed by a NOT NULL column, so a null for one is refused by name
rather than passed to the database.
documentId is deliberately not patchable: which document an event came from
is provenance, and re-pointing it would make an extracted event claim a source
it was never read from.
When it happened.
"2026-08-19"
The end of a date range. Send null to clear it.
"2026-08-19"
True when the date is an estimate rather than a record.
false
What happened.
signed, executed, filed, served, effective, expired, terminated, notice_sent, notice_received, payment, hearing, meeting, judgment, order, correspondence, amended, enacted, published, decided, incident, referenced, founded, incorporated, appointed, resigned, acquired, launched, awarded, approved, registered, commenced, completed, transferred, invested, dissolved, announced, renewed, other "signed"
Which swim lane it joins.
contract_event, court_filing, correspondence, payment_financial, deadline_notice, meeting_hearing, legislative, case_law, historical, corporate, regulatory, employment, milestone, other "contract_event"
A one-line description.
1 - 500"Master Services Agreement"
The longer account. Send null to clear it.
5000"Master services agreement with Acme for the 2026 platform rollout."
Who was involved. Replaces the whole list.
50["value"]
Free-form labels. Replaces the whole list.
30["saas", "buyer-side"]
high, medium or low.
high, medium, low "high"
Response
Successful Response
One dated event on the matter's timeline.
evt_ identifier.
"evt_9f2c8b1e4a7d43c9b6e0f1a2c3d4e5f6"
The mat_ matter this event belongs to.
"mat_9f2c8b1e4a7d43c9b6e0f1a2c3d4e5f6"
When it happened.
"2026-08-19"
True when the source dated this loosely ('early 2024').
false
What happened, for example signed, filed or hearing. Read it as an open string: the column carries no constraint, so production can hold a value this API would refuse on a write.
"signed"
The swim lane it groups into. Open, as eventType is.
"commercial"
high, medium or low. Open, as above.
"high"
A one-line description of the event.
"Master Services Agreement"
False for an event created through this API or typed into the product.
false
False when this event duplicates another and was not chosen as the representative. Pass primaryOnly=true to drop the non-primary copies.
false
When the row was written.
"2026-08-19T14:32:10Z"
When it last changed.
"2026-08-19T14:32:10Z"
The doc_ document this event was extracted from, or null for an event somebody entered by hand.
"doc_9f2c8b1e4a7d43c9b6e0f1a2c3d4e5f6"
That document's filename, resolved at read time.
"msa-acme-v3.docx"
The end of the range, for an event that spans days.
"2026-08-19"
The longer account, when there is one.
"Master services agreement with Acme for the 2026 platform rollout."
Who was involved.
["value"]
Free-form labels.
["saas", "buyer-side"]
The passage the event was extracted from. Locate this string in the document's text to find it; there is no offset to trust.
"This Master Services Agreement is entered into as of 19 August 2026 between Acme Corporation, a Delaware corporation, and the Supplier identified on the signature page."
The page the passage was found on, when it could be resolved.
1
0 to 1 for an extracted event, null for a manual one.
1
Was this page helpful?

