Create a workbook (convenience route)
Create an empty workbook and return its identifiers. A convenience route, deliberately outside the core command contract — creating a workbook is expected to become billing- and entitlement-gated, so its shape is not yet fixed. Any request body is ignored: every workbook is created with the same defaults (1000 rows x 26 columns, one sheet named "Sheet1").
/workbooksAuthorization
bearerAuth PRE-RELEASE: this API does not yet authenticate callers. The bearer token is read but never verified — an "ak_"-prefixed value is attributed to an API-key actor and anything else, including an absent or empty header, to a generic user actor. Any string, or none at all, is accepted. Attribution only, not authentication: do not expose this surface to untrusted callers until key issuance ships.
In: header
Header Parameters
Declares the calling surface, recorded as per-commit attribution in the checkpoint history. An unrecognized or missing value defaults to "api".
Response Body
application/json
curl -X POST "https://example.com/workbooks"{
"workbookId": "string",
"sheetId": "string",
"version": "string"
}Commands
All commands accepted by POST /workbooks/{id}/commands, grouped by category.
Apply a batch of commands to a workbook
Validates the WHOLE batch (shape, capability, sheet, commandId reuse) before applying anything; a commandId already committed in a prior batch is recognized and its cached result replayed rather than re-applied, so retrying a batch with the same commandIds is safe. A per-command apply() failure is NOT a batch failure — it lands as an `ok: false` CommandResult with its own `error.code` (see CommandResult); the whole batch is still 200 unless the batch itself was rejected pre-apply (400) or the `If-Match` precondition failed (409).