Stored
Images and video live on the CDN at URLs the rows contain. Full list: data model.
One page row:
If Stage is unreachable
The last build keeps serving. A build that cannot reach Stage fails and leaves it in place.
Documentation Index
Fetch the complete documentation index at: /llms.txt
Use this file to discover all available pages before exploring further.
What Stage stores, how the site reads it, and how to take a copy.
| Table | Holds | Read with |
|---|---|---|
pages | Slug, title, sections, SEO | getSitePages() |
articles | Posts | getArticles() |
forms | Forms | getForms() |
globals | Header, footer, site-wide values | getGlobals() |
media | Uploads: hash, size, alt text | getMediaMetaMap() |
{
"slug": "about",
"title": "About",
"version": 12,
"seo": { "description": "Who we are and how we work." },
"components": [
{ "id": "hero", "type": "hero",
"props": { "title": "About us", "body": "<p>Small team, long projects.</p>",
"image": "https://cdn.example.com/org/3f9a…-1920.webp", "imageVideo": "" } },
{ "id": "team", "type": "team-grid",
"props": { "heading": "The team", "members": [
{ "id": "c_8S6FSMAj", "name": "Ana Ruiz", "role": "Design" },
{ "id": "c_KPsHeZwE", "name": "Tom Lee", "role": "Engineering" }
] } }
]
}
| Works | |
|---|---|
| The deployed site | Yes |
| Images and video | Yes |
| Form submits | No |
| A rebuild | No |
/admin | No |
import { writeFileSync } from "node:fs";
import { StageClient, getPages, getArticles, getGlobals } from "@sp-stage/sdk";
StageClient.init({
dbUrl: process.env.STAGE_DB_URL!,
publicKey: process.env.STAGE_PUBLIC_KEY!,
orgId: process.env.ORG_ID!,
});
writeFileSync("content.json", JSON.stringify({
pages: await getPages(),
articles: await getArticles(),
globals: await getGlobals(),
}, null, 2));
| Change | Who |
|---|---|
| Text, images, list items, palette sections, articles, forms | Editors, in /admin |
| Pages, sections, components, palettes, drafts | Anyone with the repo |
| Globals, deploy settings | Stage, on request |