Skip to main content
A gavAI page is one JSON document. Fetch it, edit it locally, patch it back, publish it — no build, no deploy. By the end of this page you will understand the four top-level fields (version, metadata, schema, tree), what each one is for, and how a draft becomes a live page.

The shape

Why JSON, not code

The document being data is the whole product. Three things follow from it:

Field reference

Optional SEO fields may nest alongside slug and title. To see the current field set for your runtime version, GET an existing page or check the Builder’s metadata panel.

schema

schema declares the data tables for blocks that bind to data. Four blocks reference tables declared here: The runtime validates every read and write against the field shapes you declare. On purely presentational pages — Hero, FeaturesGrid, Cta, Footer, SectionDivider — leave schema as an empty object. See Schema for the full table and field declaration model.

tree

tree holds the root block. For almost all pages the root is a NavShell, which provides the nav chrome and renders its children array in the main content area. Children can be any other block type. NavShell does not nest inside itself. A minimal tree:
{
  "block": "NavShell",
  "props": { "brand_name": "Acme", "variant": "topbar", "items": [] },
  "children": [
    { "block": "Hero",   "props": { "headline": "Hello" } },
    { "block": "Footer", "props": { "copyright": "© 2026", "groups": [] } }
  ]
}
Each node names a block type in block, carries its configuration in props, and may contain further nested blocks in children. The structure is recursive — any block that accepts children can nest further sections.

Document lifecycle

A page document moves through four stages, draft to served. Full endpoint details: API reference → Pages.

Where to go next