Report generation, frozen reads, decks, and exports.
01
Report generation
- -
POST /api/reports/generate— queue async synthesis. Returns{ jobId, reportId, status, streamUrl }. - -
GET /api/reports/:id/stream— SSE:init,section_start,section_complete,complete,error.
02
Reports & frozen reads
- -
GET /api/reports?companyId=...— list reports. - -
GET /api/reports/:id— frozen report content (does not fall back to live metrics). - -
POST /api/reports/:id/send— record a send (recipient, period, version).
03
Reports & public links
- -
POST /api/reports/share— create or revoke a share token. - -
GET /api/reports/public/:slug/:period/:version/:token— frozen public read. - -
GET /api/reports/public/typed/:type/...— same with template-aware validation.
04
Decks
- -
GET /api/decks?companyId=...— list (snake_case rows). - -
POST /api/decks— create. Returns{ deck, progressUrl, streamUrl }. - -
PATCH /api/decks/:id— update a slide. - -
GET /api/decks/:id/progress— SSE generation events.
05
Decks & public links
- -
POST|DELETE /api/decks/:id/share— create or revoke a public deck link. - -
GET /api/decks/public/:token— read a public deck without auth.
06
Exports & downloads
- -
POST /api/exports— generate from markdown, tables, metrics, or deck data. - -
GET /api/exports/GET /api/exports/:id— list or read with a freshdownloadUrl. - -
GET /api/exports/:id/preview— preview completed.xlsxexports as workbook sheets without downloading the file. - -
PATCH /api/exports/:id— link an export to a room or updatereviewStatus. - -
GET|POST /api/exports/style— list stylists or style a deck/report/financial/artifact. - -Stylists:
deck,report,financial,artifact-to-excel.
07
Spreadsheet sandbox runs
- -
POST /api/sandbox/runswithjobType: "office.generate"— queue a sandbox Office run for rich.xlsxcreation or update. - -Create requests use
metadata.officeGenerationwithkind: "spreadsheet",mode: "create", and either simpledataor a richworkbookPlanfor sheets, formulas, styles, widths, merges, and validation checks. - -Update requests use
mode: "update", a completed.xlsxsourceExportId, and explicit operations. Updates create a new generated export and do not mutate the source workbook. - -Scopes:
sandbox.runs:writeto create runs,sandbox.runs:readto poll runs,exports:readto read or preview completed exports, andexports:writeto review/link exports.
{
"jobType": "office.generate",
"metadata": {
"officeGeneration": {
"kind": "spreadsheet",
"mode": "create",
"title": "Q3 Operating Model",
"outputBasename": "q3-operating-model",
"workbookPlan": {
"sheets": [
{
"name": "Summary",
"cells": [
{ "cell": "A1", "value": "Metric" },
{ "cell": "B1", "value": "Value" },
{ "cell": "B2", "formula": "=Inputs!B2*12" }
]
}
],
"validation": [
{ "sheet": "Summary", "cell": "B2", "expect": "number" }
]
}
}
}
}