API endpoints
Every public REST endpoint, grouped by resource. Each page lists auth, request hints, and the MCP tools that call it.
Every public REST endpoint, grouped by resource. Each page lists auth, request hints, and the MCP tools that call it.
132 entries.
auth
- POST /api/v1/{locale}/auth/login — Authenticate with email and password; returns accessToken
websites
- GET /api/v1/{locale}/websites — List websites the authenticated platform user can access
- POST /api/v1/{locale}/websites — Create a website in preview mode from a template or blank
templates
- GET /api/v1/{locale}/templates — List active website templates with compact summaries
- GET /api/v1/{locale}/templates/{templateId} — Get a website template summary (no editor design payloads)
docs
- GET /api/v1/{locale}/docs — Platform docs for agents (query: mode=nav|content, path=docs relative path)
- GET /api/v1/{locale}/design-docs — Design surfaces index, lifecycle link, and content contract
- GET /api/v1/{locale}/design-docs/{surface} — Design schema for a surface. Query mode=index (default) | block (type required) | full. mode=full is the entire snapshot.
- GET /api/v1/{locale}/design-docs/lifecycles — Lifecycle guide, reference, and examples
design
- GET /api/v1/{locale}/{websiteId}/chrome/header — Load site header chrome design
- PUT /api/v1/{locale}/{websiteId}/chrome/header — Save site header chrome design (sparse content merge, contentMode replace, or ops patch)
- GET /api/v1/{locale}/{websiteId}/chrome/footer — Load site footer chrome design
- PUT /api/v1/{locale}/{websiteId}/chrome/footer — Save site footer chrome design (sparse content merge, contentMode replace, or ops patch)
- GET /api/v1/{locale}/{websiteId}/chrome/header/localization — List localizable header fields with per-locale overlay values
- PUT /api/v1/{locale}/{websiteId}/chrome/header/localization — Sparse-update header translation overlays without rewriting layout
- GET /api/v1/{locale}/{websiteId}/chrome/footer/localization — List localizable footer fields with per-locale overlay values
- PUT /api/v1/{locale}/{websiteId}/chrome/footer/localization — Sparse-update footer translation overlays without rewriting layout
- GET /api/v1/{locale}/{websiteId}/pages — List pages, including pages with no public route
- POST /api/v1/{locale}/{websiteId}/pages — Create route + page. id restores a previous page id. An empty path is the homepage. content may be a JSON string.
- GET /api/v1/{locale}/{websiteId}/pages/{pageId} — Get page design
- PUT /api/v1/{locale}/{websiteId}/pages/{pageId} — Save page design (sparse content merge, contentMode replace, or ops patch)
- POST /api/v1/{locale}/{websiteId}/design-warnings — Dry-run design validation; returns warnings without saving
- PATCH /api/v1/{locale}/{websiteId}/pages/{pageId}/paths — Update localized paths. An empty string is the homepage. Redirects are written only when createRedirects is true.
- GET /api/v1/{locale}/{websiteId}/redirects — List per-site redirects
- POST /api/v1/{locale}/{websiteId}/redirects — Create or replace a redirect
- POST /api/v1/{locale}/{websiteId}/redirects/test — Report the proxy status and Location for a path
- DELETE /api/v1/{locale}/{websiteId}/redirects/{redirectId} — Delete one redirect
- DELETE /api/v1/{locale}/{websiteId}/pages/{pageId} — Delete a page by id, including a page with no route
- GET /api/v1/{locale}/{websiteId}/pages/{pageId}/localization — List localizable page fields with per-locale overlay values
- PUT /api/v1/{locale}/{websiteId}/pages/{pageId}/localization — Sparse-update page translation overlays without rewriting layout
- GET /api/v1/{locale}/{websiteId}/components — List reusable components
- POST /api/v1/{locale}/{websiteId}/components — Create reusable component (named dataRequests on content.root.props)
- POST /api/v1/{locale}/{websiteId}/components/presets — Create List/Detail/Form preset (variables + VariableInputBlock + named dataRequests + Button trigger)
- GET /api/v1/{locale}/{websiteId}/components/{id} — Get component design
- PUT /api/v1/{locale}/{websiteId}/components/{id} — Save component design (sparse content merge, contentMode replace, or ops patch)
- DELETE /api/v1/{locale}/{websiteId}/components/{id} — Delete component
- GET /api/v1/{locale}/{websiteId}/components/{id}/localization — List localizable component fields with per-locale overlay values
- PUT /api/v1/{locale}/{websiteId}/components/{id}/localization — Sparse-update component translation overlays without rewriting layout
- GET /api/v1/{locale}/{websiteId}/page-components — Deprecated alias for GET /components (list reusable components)
- POST /api/v1/{locale}/{websiteId}/page-components — Deprecated alias for POST /components (create reusable component)
- GET /api/v1/{locale}/{websiteId}/page-components/{id} — Deprecated alias for GET /components/{id}
- PUT /api/v1/{locale}/{websiteId}/page-components/{id} — Deprecated alias for PUT /components/{id}
- DELETE /api/v1/{locale}/{websiteId}/page-components/{id} — Deprecated alias for DELETE /components/{id}
- GET /api/v1/{locale}/{websiteId}/page-components/{id}/localization — Deprecated alias for GET /components/{id}/localization
- PUT /api/v1/{locale}/{websiteId}/page-components/{id}/localization — Deprecated alias for PUT /components/{id}/localization
- GET /api/v1/{locale}/{websiteId}/email-chrome/header — Load email header chrome
- PUT /api/v1/{locale}/{websiteId}/email-chrome/header — Save email header chrome
- GET /api/v1/{locale}/{websiteId}/email-chrome/footer — Load email footer chrome
- PUT /api/v1/{locale}/{websiteId}/email-chrome/footer — Save email footer chrome
- GET /api/v1/{locale}/{websiteId}/email-chrome/header/localization — List localizable email-header fields with per-locale overlay values
- PUT /api/v1/{locale}/{websiteId}/email-chrome/header/localization — Sparse-update email-header translation overlays without rewriting layout
- GET /api/v1/{locale}/{websiteId}/email-chrome/footer/localization — List localizable email-footer fields with per-locale overlay values
- PUT /api/v1/{locale}/{websiteId}/email-chrome/footer/localization — Sparse-update email-footer translation overlays without rewriting layout
- POST /api/v1/{locale}/{websiteId}/qr — Generate a QR code for a URL using the website's last saved QR style. Style changes stay in the admin QR designer.
- POST /api/v1/{locale}/{websiteId}/design/revisions — List, read, restore, or undo a design revision
- POST /api/v1/{locale}/{websiteId}/design/search-blocks — Search blocks across every page, page components, and chrome
- GET /api/v1/{locale}/{websiteId}/design/changes — List design changes since a timestamp or cursor
- GET /api/v1/{locale}/{websiteId}/design/publish-status — Check whether a public page is serving a revision id
objects
- GET /api/v1/{locale}/{websiteId}/objects — List object types (full field schema + type metadata)
- POST /api/v1/{locale}/{websiteId}/objects — Create an object type. id restores a previous object type id.
- GET /api/v1/{locale}/{websiteId}/objects/{objectTypeId} — List or query entries for an object type
- POST /api/v1/{locale}/{websiteId}/objects/{objectTypeId} — Create an object entry. id, createdAt, and mutatedAt restore a previous entry. mutatedAt defaults to createdAt.
- GET /api/v1/{locale}/{websiteId}/objects/{objectTypeId}/definition — Get full object type definition (no lifecycle)
- PATCH /api/v1/{locale}/{websiteId}/objects/{objectTypeId}/definition — Patch object type definition (fieldSchema replaces fully when sent)
- DELETE /api/v1/{locale}/{websiteId}/objects/{objectTypeId}/definition — Soft-delete an object type. restore_object_type brings it back.
- POST /api/v1/{locale}/{websiteId}/objects/{objectTypeId}/restore — Restore a soft-deleted object type and its entries
- PUT /api/v1/{locale}/{websiteId}/objects/{objectTypeId}/locale-overlays — Write per-locale object type label overlays
- GET /api/v1/{locale}/{websiteId}/objects/{objectTypeId}/permissions — Get public + per-role object permissions for a type
- PUT /api/v1/{locale}/{websiteId}/objects/{objectTypeId}/permissions — Replace public permissions and role slices (superadmin)
- GET /api/v1/{locale}/{websiteId}/objects/{objectTypeId}/lifecycle — Get object type lifecycle config (v3 events)
- PUT /api/v1/{locale}/{websiteId}/objects/{objectTypeId}/lifecycle — Full replace of object type lifecycle_config
- GET /api/v1/{locale}/{websiteId}/objects/{objectTypeId}/{entryId} — Get a single object entry
- PATCH /api/v1/{locale}/{websiteId}/objects/{objectTypeId}/{entryId} — Update an object entry
- DELETE /api/v1/{locale}/{websiteId}/objects/{objectTypeId}/{entryId} — Delete an object entry
settings
- GET /api/v1/{locale}/{websiteId}/settings — Load website name, locales, and domains summary
- PATCH /api/v1/{locale}/{websiteId}/settings — Update website display name
- GET /api/v1/{locale}/{websiteId}/site-variables — Load website site variables
- PUT /api/v1/{locale}/{websiteId}/site-variables — Replace website site variables
- GET /api/v1/{locale}/{websiteId}/locales — Load website locales
- PUT /api/v1/{locale}/{websiteId}/locales — Update primary and enabled locales
- GET /api/v1/{locale}/{websiteId}/domains — List custom domains
- POST /api/v1/{locale}/{websiteId}/domains — Add unverified custom domain
- DELETE /api/v1/{locale}/{websiteId}/domains/{domainId} — Remove unverified custom domain only
- GET /api/v1/{locale}/{websiteId}/domains/verification — DNS records and verification status for custom domains
- POST /api/v1/{locale}/{websiteId}/favicon — Generate the favicon set from an uploaded file
- PUT /api/v1/{locale}/{websiteId}/web-manifest — Enable or disable the web app manifest
- GET /api/v1/{locale}/{websiteId}/email-settings — Load SMTP/platform mail settings
- PUT /api/v1/{locale}/{websiteId}/email-settings — Update SMTP/platform mail settings
- GET /api/v1/{locale}/{websiteId}/external-linking — List censoringEnabled (opt-in) and outbound link allowlist
- PUT /api/v1/{locale}/{websiteId}/external-linking — Replace allowlist and optional censoringEnabled
- GET /api/v1/{locale}/{websiteId}/web-integrations — Load web integrations (verification/analytics). available=false in preview
- PUT /api/v1/{locale}/{websiteId}/web-integrations — Replace web integrations (superadmin; forbidden in preview status)
access
- GET /api/v1/{locale}/{websiteId}/platform-roles — List website admin roles
- POST /api/v1/{locale}/{websiteId}/platform-roles — Create custom website admin role
- GET /api/v1/{locale}/{websiteId}/platform-roles/{roleId} — Get website admin role
- PUT /api/v1/{locale}/{websiteId}/platform-roles/{roleId} — Update custom website admin role
- DELETE /api/v1/{locale}/{websiteId}/platform-roles/{roleId} — Delete unused custom website admin role
- GET /api/v1/{locale}/{websiteId}/platform-users — List platform users with website access
- PATCH /api/v1/{locale}/{websiteId}/platform-users/{userId} — Change user role to a custom role only
- DELETE /api/v1/{locale}/{websiteId}/platform-users/{userId} — Revoke platform user website access
- GET /api/v1/{locale}/{websiteId}/objects/{objectTypeId}/user-roles — List end-user roles (user object types only)
- POST /api/v1/{locale}/{websiteId}/objects/{objectTypeId}/user-roles — Create end-user role
- GET /api/v1/{locale}/{websiteId}/objects/{objectTypeId}/user-roles/{roleId} — Get end-user role
- PUT /api/v1/{locale}/{websiteId}/objects/{objectTypeId}/user-roles/{roleId} — Update end-user role
- DELETE /api/v1/{locale}/{websiteId}/objects/{objectTypeId}/user-roles/{roleId} — Delete unused end-user role
- POST /api/v1/{locale}/{websiteId}/objects/{objectTypeId}/user-roles/{roleId}/assign — Assign end-user role to a website user
files
- GET /api/v1/{locale}/{websiteId}/files — List files and directories
- POST /api/v1/{locale}/{websiteId}/files — Upload a file (multipart FormData; max 5 GB per file)
- POST /api/v1/{locale}/{websiteId}/files/stamp-svg — Fetch a CDN SVG and return stamped markup for element paints
- POST /api/v1/{locale}/{websiteId}/files/import-url — Fetch a public image, resize it, and store it in the library
- POST /api/v1/{locale}/{websiteId}/files/from-url — Upload a file by fetching an allowlisted CDN URL (max 5 GB)
- PATCH /api/v1/{locale}/{websiteId}/files/{fileId} — Move a file to another directory
- DELETE /api/v1/{locale}/{websiteId}/files/{fileId} — Soft-delete a file
- POST /api/v1/{locale}/{websiteId}/files/directories — Create a file directory
- PATCH /api/v1/{locale}/{websiteId}/files/directories/{directoryId} — Rename or move a directory
- DELETE /api/v1/{locale}/{websiteId}/files/directories/{directoryId} — Delete an empty directory
- POST /api/v1/{locale}/{websiteId}/files/upload-url — Create a 15 minute presigned upload URL (max 5 GB). HEIC/HEIF is rejected: it is converted to JPEG before storage, so upload it with multipart POST /files instead.
- POST /api/v1/{locale}/{websiteId}/files/complete-upload — Finish a presigned upload and insert the file row
theme
- GET /api/v1/{locale}/{websiteId}/theme — Load website theme tokens
- PUT /api/v1/{locale}/{websiteId}/theme — Update theme tokens and dual-theme flag. A partial token object merges into the stored map. An invalid value names the token path. dryRun returns before/after without saving.
- GET /api/v1/{locale}/{websiteId}/layout — Load layout breakpoints, content width, and headerNavCompactUpToBreakpointId. Extra breakpoint keys such as paddings are kept.
- PUT /api/v1/{locale}/{websiteId}/layout — Update layout breakpoints, content width, and headerNavCompactUpToBreakpointId. Extra breakpoint keys are kept. Omitting the compact field leaves the stored value. dryRun returns before/after without saving.
insights
- GET /api/v1/{locale}/{websiteId}/statistics — Load website traffic and content statistics
- GET /api/v1/{locale}/{websiteId}/reports — List object entry moderation reports
- GET /api/v1/{locale}/{websiteId}/reports/{reportId} — Get a moderation report
- POST /api/v1/{locale}/{websiteId}/reports/{reportId}/resolve — Resolve an open moderation report
feedback
- POST /api/v1/{locale}/platform/feedback/bug-report — Submit a platform bug report
- POST /api/v1/{locale}/platform/feedback/feature-request — Submit a platform feature request
notifications
- GET /api/v1/{locale}/platform/notifications — List the authenticated platform user's in-app notifications
- GET /api/v1/{locale}/platform/notifications/unread-count — Unread count for the authenticated platform user's notifications
- GET /api/v1/{locale}/platform/notifications/{id} — Get one of the authenticated platform user's notifications (includes meta)
- POST /api/v1/{locale}/platform/notifications/{id}/read — Mark one of the authenticated platform user's notifications as read