Status API › Pages
Create a page
POST/api/v1/pages
Creates a status page. It is public unless is_public is false. Add
components, then point a custom domain at it.
Permission (API-key scope): status:page:write.
Authorization
bearerAuth(status:page:write)apiKeyHeader(status:page:write)
Request body required
slugstring requiredUnique in the organization.namestring requiredlogo_urlstring | nullAn http or https URL.brand_colorstring | null#rrggbb. Not checked here;PATCH …/themechecks it.is_publicbooleanthemestringteam_idstring | nullThe key's own team (an organization key scoped to a team), or""for the whole organization.
Responses
201
The page.
dataPage requiredShow Page properties
idstring (uuid) requiredorg_idstring requiredteam_idstring requiredThe team that manages the page;""for the whole organization. Never affects the public page.slugstring requiredUnique in the organization.namestring requiredlogo_urlstringfavicon_urlstringbrand_colorstring#rrggbb.custom_domainstringis_publicboolean requiredWhether visitors can read it.themestring requiredsite_themeSiteTheme requiredShow SiteTheme properties
fontstring""is the system font.radiusstringbackgroundstringmodestringThe same setting as the page'stheme(systemthere isauto).
subscriptions_enabledbooleanreply_to_emailstringWhere replies to subscriber emails go.page_descriptionstringfooter_textstringsupport_urlstringsupport_labelstringprivacy_urlstringterms_urlstringga_tagstringThe older field for the Google Analytics id, kept in step withanalytics.ga4_measurement_id.search_indexablebooleanhistory_window_daysintegerHow far back the public page shows past incidents.product_groupsbooleanGroups fold into one line each on the public page.open_groupsarray of stringGroups that start open.product_pagesbooleanEach group has a page of its own.header_linksarray of HeaderLinkShow HeaderLink properties
labelstring requiredOne line of text.urlstring (uri) requiredAnhttps://URL.
show_page_namebooleanfalseshows the logo alone.analyticsAnalyticsSettingsShow AnalyticsSettings properties
enabledbooleanWhether visitor analytics are collected.retention_daysintegerHow long daily counts are kept.ga4_measurement_idstringA Google Analytics 4 id (G-…) the public page loads, or"".honor_privacy_signalsbooleanLoad Google Analytics only for visitors who sent neitherDNT: 1norSec-GPC: 1.
created_atstring (date-time) requiredupdated_atstring (date-time) required
successboolean required
400
A field is missing or invalid (VALIDATION_ERROR); the message names it, or the body is not valid (INVALID_BODY).
errorobject requiredcodestring requiredMachine-readable code. Branch on this.messagestring requiredHuman-readable explanation.request_idstringThis request's id, also inX-Request-ID.
401
No API key was sent, or it is unknown, revoked or expired (UNAUTHORIZED).
errorobject requiredcodestring requiredMachine-readable code. Branch on this.messagestring requiredHuman-readable explanation.request_idstringThis request's id, also inX-Request-ID.
403
The key lacks the scope (FORBIDDEN), or team_id is a team the caller is not in (NOT_IN_TEAM).
errorobject requiredcodestring requiredMachine-readable code. Branch on this.messagestring requiredHuman-readable explanation.request_idstringThis request's id, also inX-Request-ID.
409
The organization already has a page with this slug (SLUG_TAKEN).
errorobject requiredcodestring requiredMachine-readable code. Branch on this.messagestring requiredHuman-readable explanation.request_idstringThis request's id, also inX-Request-ID.
429
Too many requests (RATE_LIMITED). Wait Retry-After seconds.
Retry-AfterintegerSeconds to wait.
errorobject requiredcodestring requiredMachine-readable code. Branch on this.messagestring requiredHuman-readable explanation.request_idstringThis request's id, also inX-Request-ID.
500
Something went wrong on EvoHub's side (INTERNAL_ERROR). Retry later.
errorobject requiredcodestring requiredMachine-readable code. Branch on this.messagestring requiredHuman-readable explanation.request_idstringThis request's id, also inX-Request-ID.
Example request
curl -X POST 'https://evohub.io/api/v1/pages' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <TOKEN>' \
-d '{
"name": "Acme Status",
"slug": "acme",
"theme": "auto",
"team_id": ""
}'