Decisions
A decision is a recorded choice for a project — a slug, a title, a markdown
body, and structured frontmatter that carries its status (open until
someone resolves it). Use this resource to file a decision that needs
sign-off from an external system, or to read/resolve one programmatically.
Resolving a decision fires a decision.resolved webhook
event to any subscription listening for it.
/api/v1/decisionsList decisions for your project.
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
limit | integer | No | 50 | Max rows to return. |
offset | integer | No | 0 | Rows to skip, for simple pagination. |
curl "https://lumis.work/api/v1/decisions?limit=20" \
-H "Authorization: Bearer $LUMIS_MCP_TOKEN"const res = await fetch('https://lumis.work/api/v1/decisions', {
headers: { authorization: `Bearer ${process.env.LUMIS_MCP_TOKEN}` },
});
const { decisions } = await res.json();res = requests.get(
"https://lumis.work/api/v1/decisions",
headers={"authorization": f"Bearer {os.environ['LUMIS_MCP_TOKEN']}"},
)
decisions = res.json()["decisions"]{
"version": "v1",
"decisions": [
{
"id": "d8a2...",
"project_key": "acme-co",
"venture_key": "acme-co",
"slug": "vendor-choice-2026-07",
"doc_type": "decision",
"title": "Which email vendor to standardize on",
"body_markdown": "We're comparing Postmark and Resend...",
"frontmatter": { "status": "open" },
"created_at": "2026-07-10T09:00:00.000Z",
"updated_at": "2026-07-10T09:00:00.000Z"
}
]
}/api/v1/decisionsCreate a decision record. It’s created with frontmatter.status set to
"open" regardless of what you pass — new decisions always start open.
| Name | Type | Required | Description |
|---|---|---|---|
slug | string | Yes | Unique identifier, lowercase letters/digits/hyphen/underscore only. A duplicate slug returns 409. |
title | string | Yes | Decision title. |
body_markdown | string | No | Markdown body (bodyMarkdown also accepted). |
frontmatter | object | No | Additional structured metadata, merged under status. |
curl -X POST https://lumis.work/api/v1/decisions \
-H "Authorization: Bearer $LUMIS_MCP_TOKEN" \
-H "Content-Type: application/json" \
-d '{"slug": "vendor-choice-2026-07", "title": "Which email vendor to standardize on"}'const res = await fetch('https://lumis.work/api/v1/decisions', {
method: 'POST',
headers: {
authorization: `Bearer ${process.env.LUMIS_MCP_TOKEN}`,
'content-type': 'application/json',
},
body: JSON.stringify({
slug: 'vendor-choice-2026-07',
title: 'Which email vendor to standardize on',
}),
});
const { decision } = await res.json();res = requests.post(
"https://lumis.work/api/v1/decisions",
headers={"authorization": f"Bearer {os.environ['LUMIS_MCP_TOKEN']}"},
json={"slug": "vendor-choice-2026-07", "title": "Which email vendor to standardize on"},
)
decision = res.json()["decision"]Returns 201 with { "version": "v1", "decision": {...} }.
/api/v1/decisions/:idRead a single decision by id. Returns 404 if it doesn’t exist or isn’t a
decision-type document.
/api/v1/decisions/:idUpdate a decision’s title, body, or frontmatter.
| Name | Type | Required | Description |
|---|---|---|---|
title | string | No | New title. |
body_markdown | string | No | New body (bodyMarkdown also accepted). |
frontmatter | object | No | Replaces the frontmatter object. |
/api/v1/decisions/:idDelete a decision. Returns { "version": "v1", "ok": true }, or 404 if it
doesn’t exist.
/api/v1/decisions/:id/resolveResolve an open decision: sets frontmatter.status to "resolved" and
records the resolution. A decision that’s already resolved returns 409.
| Name | Type | Required | Description |
|---|---|---|---|
status | string | Yes | The verdict (verdict is also accepted as an alias). |
option_id | string | No | Which option was chosen, if the decision offered a set. |
note | string | No | Free-text resolution note. |
curl -X POST https://lumis.work/api/v1/decisions/d8a2.../resolve \
-H "Authorization: Bearer $LUMIS_MCP_TOKEN" \
-H "Content-Type: application/json" \
-d '{"status": "postmark", "note": "Better deliverability track record."}'await fetch(`https://lumis.work/api/v1/decisions/${id}/resolve`, {
method: 'POST',
headers: {
authorization: `Bearer ${process.env.LUMIS_MCP_TOKEN}`,
'content-type': 'application/json',
},
body: JSON.stringify({ status: 'postmark', note: 'Better deliverability track record.' }),
});requests.post(
f"https://lumis.work/api/v1/decisions/{id}/resolve",
headers={"authorization": f"Bearer {os.environ['LUMIS_MCP_TOKEN']}"},
json={"status": "postmark", "note": "Better deliverability track record."},
){
"version": "v1",
"decision": {
"id": "d8a2...",
"frontmatter": {
"status": "resolved",
"resolution": {
"verdict": "postmark",
"note": "Better deliverability track record.",
"resolved_at": "2026-07-16T18:10:00.000Z"
}
}
}
}