Seed a workspace from an approved AI draft plan
Seeds the workspace from the draft plan the user reviewed, and possibly edited, in the describe-your-work onboarding flow, re-normalizing the plan on the server before anything is created. Needs the same `databases:write` and `surfaces:write` permissions as applying a fixed starter. A plan that normalizes to nothing left to build is rejected as a validation error.
Authorization
apiKey Workspace API key created in Workspace settings → API keys. Scopes on the key bound what it can read and write.
In: header
Path Parameters
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
curl -X POST "https://example.com/v1/workspaces/string/starter-draft" \ -H "Content-Type: application/json" \ -d '{ "plan": { "headline": "string", "nodes": [ { "type": "database", "ref": "string", "label": "string", "fields": [ { "key": "string", "label": "string", "kind": "text" } ], "records": [ { "title": "string" } ] } ] } }'{ "data": { "headline": "string", "databaseCount": 0, "pageCount": 0 }}{ "_tag": "ApiNotFound", "error": "not_found", "message": "That item does not exist, or this key cannot see it.", "status": 404}{ "_tag": "ApiNotFound", "error": "not_found", "message": "That item does not exist, or this key cannot see it.", "status": 404}Seed a workspace from a starter template
Seeds the workspace with the databases, records, views, and pages of the named onboarding starter template, and records the onboarding analytics events around it. The seeding runs as the caller, so it requires `databases:write` and `surfaces:write` in the workspace. It is not idempotent: applying a starter twice creates the content twice.
Mint a short-lived realtime connection ticket
Issues a single-use ticket, valid for 30 seconds, that the browser exchanges for a realtime connection to this workspace. Requires a Clerk session with a synced profile plus `workspace:read`; API keys cannot acquire a realtime identity. Deliberately not idempotent, because replaying the response would hand back a ticket the gateway has already consumed, and it returns an upstream error when the ticket store is unavailable.