Skip to main content
A Page is a published landing page composed of an ordered list of typed blocks — headings, text, images, buttons, forms. The v1 API surface is read-only: list pages, read a single page with its full block tree. Authoring stays in the dashboard editor.
v1 Pages is read-only. There is no POST, PATCH, or DELETE for pages or blocks via the API. To create or edit a page, use the dashboard. To collect submissions, see Submissions.

The two endpoints

EndpointReturns
GET /pagesCursor-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

curl https://api.awardee.dev/v1/pages/c4d5e6f7-8a9b-4c0d-1e2f-3a4b5c6d7e8f \
  -H "Authorization: Bearer aw_live_4f8a3c7e2d1b9a5c6f8e3d2c1b4a9f7e"
Response (truncated):
{
  "object": "page",
  "id": "c4d5e6f7-8a9b-4c0d-1e2f-3a4b5c6d7e8f",
  "slug": "fall-tasting",
  "public_slug": "fall-2024-tasting",
  "status": "active",
  "title": "Fall 2024 Tasting Notes",
  "background": { "type": "color", "value": "#f9f4ec" },
  "island": { "color": "#ffffff", "opacity": 1, "shadow": "md", "roundness": "3xl" },
  "view_count": 8421,
  "blocks": [
    { "id": "…", "type": "heading", "config": { "text": "Welcome", "level": 1, "alignment": "center" }, "sort_order": 0, "spacing_top": 0, "spacing_bottom": 16 },
    { "id": "…", "type": "text", "config": { "content": "Six wines, six stories.", "alignment": "center" }, "sort_order": 1, "spacing_top": 0, "spacing_bottom": 24 },
    { "id": "…", "type": "image", "config": { "url": "https://files.awardee.dev/…" }, "sort_order": 2, "spacing_top": 0, "spacing_bottom": 24 }
  ]
}
See the full field reference on the Page object and the per-block-type config reference on Blocks.

The block tree

Blocks are returned as a flat ordered array. Render them in the order given by sort_order (which is also the array order). Each block has:
{
  "id": "block-uuid",
  "type": "heading",
  "config": { "text": "Welcome", "level": 1, "alignment": "center" },
  "sort_order": 0,
  "spacing_top": 0,
  "spacing_bottom": 16
}
The 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:
CategoryBlock types
Contentheading, text, image, video, divider, banner
Actionbutton, contact, file
Formform_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
A page is considered a form page as soon as it contains any form_* block. The form_submit block is the trigger that ships submissions to Awardee.

Status

Pages have a published-state status field:
StatusMeaning
draftIn the editor. Not publicly accessible.
activePublished. https://<page-slug>.<page-domain> resolves and renders.
inactiveUnpublished but kept. Public URL shows a “not available” screen.
archivedSoft-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.

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.