Routes
The studio is reachable two ways, and every link in the product is built from one route table so the two never drift:
- Standalone (
NEXT_PUBLIC_APP_SURFACE=studio, theapiome-suiteimage at suite.apiome.dev): pages live at unprefixed routes —/workspace,/authoring/scribe. - Suite-embedded: the main app registers the same destinations under
/ade/studio/*and/ade/authoring/*, which redirect into the standalone app. These are the routes the main app's suite dropdown, launcher cards and deep links use.
Design
| Standalone | Suite-embedded | Page |
|---|---|---|
/ | /ade/studio | Home |
/editor | /ade/studio/editor | Classic canvas — the Data Designer |
/paths | /ade/studio/paths | Classic canvas — the Paths editor |
/code | /ade/studio/code | Code and exports |
/workspace | /ade/studio/workspace | Workspace |
/workspace/settings | /ade/studio/workspace/settings | Workspace settings |
/login | — | Sign in |
/workspace exists only when the rollout flag is at preview or later; at only, /editor and
/paths redirect into it. See Deploy the studio.
Hand-off query parameters
Links between the classic canvas and the workspace carry their context in the URL, in this order:
| Parameter | Carries |
|---|---|
projectId | The selected project |
versionId | The selected version |
domain | The workspace's domain-folder slug; the classic surfaces hand it back untouched, so a round trip returns to the same domain |
lens | The lens to open — schemas, paths or combined. Only read by the workspace |
The classic editor's own deep link is /editor?projectId=…&versionId=….
Authoring
Every authoring route is nested under /authoring (standalone) or /ade/authoring (suite). Scribe
and Slate sub-pages sit under their surface's route, so the surface's entitlement and nav state apply
to them.
| Standalone | Page |
|---|---|
/authoring | Authoring Overview |
/authoring/guides | Guides |
/authoring/changelog | Changelog |
/authoring/reference | Reference gallery — not a suite destination |
/authoring/scribe | Scribe workspace |
/authoring/scribe/dashboard | Coverage dashboard |
/authoring/scribe/overview | Project coverage |
/authoring/scribe/readme | README generator |
/authoring/scribe/style-guide | Style guide |
/authoring/scribe/stale-alerts | Stale alerts |
/authoring/scribe/settings | Scribe settings |
/authoring/slate | Slate |
/authoring/slate/dashboard | Site dashboard |
/authoring/slate/theme | Theme |
/authoring/slate/navigation | Navigation |
/authoring/slate/content-blocks | Content blocks |
/authoring/slate/preview | Preview |
/authoring/slate/build-history | Build history |
/authoring/slate/export | Export |
/authoring/slate/versions | Versions |
/authoring/slate/domain | Custom domain |
/authoring/slate/settings | Site settings |
/authoring/releases | Releases |
/authoring/cache | Cache |
/authoring/security | Security |
/authoring/edge | Edge |
/authoring/insights | Insights |
Backend-for-frontend
The studio's /api/* routes are not pages; they forward to the services behind the Suite with a
service bearer (Authentication):
| Route | Forwards to |
|---|---|
/api/auth/* | The main app's Better Auth handler, mounted in the studio |
/api/llm/* | Spire /v1/llm/{tenant}/* — generation, providers, settings, proposals, budget |
/api/docs/* | Spire /v1/docs/{tenant}/* — content, coverage, stale alerts, style guide |
/api/sites/* | Spire /v1/sites/{tenant}/* — Slate sites and builds |
/api/slate/* | apiome-rest /v1/slate/* — the Release Center's control plane |
/api/rest/* | apiome-rest |
/api/ollama/* | The Ollama server (OLLAMA_BASE_URL) — the canvas AI buttons and chat |
/api/workspace/*, /api/classes/*, /api/paths/*, /api/projects/*, /api/versions/*, /api/properties/*, /api/tags/*, /api/primitives/* | The studio's own handlers over apiome-rest and the database: the workspace's lenses, comment threads, try-it, mock, branches and tags |