The two endpoints
| Endpoint | Returns |
|---|---|
GET /pages | Cursor-paginated list of pages. Each entry includes the page metadata but not the block tree — fetch a single page when you need blocks. |
GET /pages/{id} | Single page including the full ordered blocks[] array. |
Read a page
The block tree
Blocks are returned as a flat ordered array. Render them in the order given bysort_order (which is also the array order). Each block has:
config field’s shape depends on type. The wire schema types it as unknown because there are 26+ block variants, each with its own discriminated config shape. See Blocks for the per-type reference.
Block categories
Blocks fall into three categories:| Category | Block types |
|---|---|
| Content | heading, text, image, video, divider, banner |
| Action | button, contact, file |
| Form | form_text, form_textarea, form_email, form_phone, form_number, form_select, form_radio, form_switch, form_checkbox, form_rating, form_date, form_hidden, form_media, form_submit |
form_* block. The form_submit block is the trigger that ships submissions to Awardee.
Status
Pages have a published-state status field:| Status | Meaning |
|---|---|
draft | In the editor. Not publicly accessible. |
active | Published. https://<page-slug>.<page-domain> resolves and renders. |
inactive | Unpublished but kept. Public URL shows a “not available” screen. |
archived | Soft-deleted. Hidden from list views. |
GET /pages returns all four statuses — filter client-side if you only want published pages.
Submissions are separate
Form fills land in a separate resource. The page tells you what blocks exist; submissions tell you what visitors filled in. See Submissions.Related
Page object
Field-by-field reference for the page-level response.
Blocks
Per-block-type config reference. JSON shapes for every block in the registry.

