Notion as Code documentation, a product in closed alpha, accessed on August 3, 2026 on the Notion Ambassadors workspace — with no author or date, and a warning recommending trying it on a fresh workspace and cautioning about possible breaking changes.

The principle is infrastructure as code applied to a documentary workspace: « Instead of having to make individual public API requests, you can describe the final state and we handle updating your workspace to match. » Two building blocks: a TypeScript SDK to describe the desired state, and the /v1/infra_as_code endpoint to deploy it.

Instead of having to make individual public API requests, you can describe the final state and we handle updating your workspace to match.

**Notion** — documentation produit publiée sur l'espace public **Notion Ambassadors**. **Aucun auteur nommé , app.notion.com

The mechanism that carries everything is identifier indirection. The script contains no Notion identifier: it declares resourceIds chosen by the author. The first deployment returns a mapping table between these logical identifiers and the records actually created; passed back on subsequent calls, it makes the same records updated rather than recreated.

Three properties follow. The script becomes idempotent. It becomes decoupled from the workspace — multiple mapping tables allow the same script to be deployed across several workspaces. And since it is code, it supports variables and loops: the given example is building ten teams of identical structure while changing only a few names.

The API contract is asynchronous: a POST returns a taskId, which is polled until completion; the response carries the mapping tables to persist — the equivalent of a state file.

Two operational differences: the product requires personal access tokens rather than the usual bot tokens, which attributes actions to a person rather than an integration; and the rate limit drops to 5 requests per minute, since a call is now a batch rather than a single entity.

The product assumes an agent. The SDK is presented as built « for you or your coding agent », and the onboarding path is to let an agent read the SDK's README. A typed state descriptor is indeed a better tool for an agent than a series of imperative API calls: the error there is replayable rather than cumulative.

⚠️ What's missing: no mention of deleting elements removed from the script, no preview mode before applying, nothing on concurrency, and no date on documentation that is bound to change.