EvoHub Docs Sign in

Status API › Pages

Update content and SEO settings

Use with AI
View as MarkdownThis page as plain text, for pasting into an AI tool Open in ClaudeAsk Claude questions about this page Open in ChatGPTAsk ChatGPT questions about this page
Connect to Cursor / VS Code / ClaudeSearch and read these docs from your AI tool (MCP server)

MCP server URL

https://docs-dev.evohub.io/mcp

Claude Code

claude mcp add --transport http evohub-docs-docs https://docs-dev.evohub.io/mcp

Claude (claude.ai and Claude Desktop): Settings → Connectors → Add custom connector, and paste the URL above.

Claude Desktop — claude_desktop_config.json

{
  "mcpServers": {
    "evohub-docs-docs": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://docs-dev.evohub.io/mcp"
      ]
    }
  }
}

Cursor — ~/.cursor/mcp.json

{
  "mcpServers": {
    "evohub-docs-docs": {
      "url": "https://docs-dev.evohub.io/mcp"
    }
  }
}

VS Code — .vscode/mcp.json

{
  "servers": {
    "evohub-docs-docs": {
      "type": "http",
      "url": "https://docs-dev.evohub.io/mcp"
    }
  }
}
PATCH/api/v1/pages/{pageID}/content-settings

The page's description, footer, support/privacy/terms links, search indexing and history window, saved together. The text and link fields are written as sent (left out or blank clears them); search_indexable left out is true; history_window_days is 30, anything else is stored as 90. ga_tag left out is kept; null or "" clears it (it also writes analytics.ga4_measurement_id when it is a GA4 id).

Permission (API-key scope): status:page:write.

Authorization

Any one of:

Parameters

Path parameters

  • pageID string (uuid) required
    The status page's id (a UUID).
    Example: 3f6c2a1e-8b4d-4f7a-9c21-5d0e7a9b1c42

Request body required

Content type: application/json

Type: object

  • page_description string | null
  • footer_text string | null
  • support_url string | null
    http, https or mailto:.
  • support_label string | null
  • privacy_url string | null
    http or https.
  • terms_url string | null
    http or https.
  • ga_tag string | null
  • search_indexable boolean | null
    Default: true
  • history_window_days integer | null
    One of: 30 90 null · Default: 90

Responses

200

The page.

Content type: application/json

Type: object

  • data Page required
    Show Page properties
    • id string (uuid) required
    • org_id string required
    • team_id string required
      The team that manages the page; "" for the whole organization. Never affects the public page.
    • slug string required
      Unique in the organization.
    • name string required
    • logo_url string
    • favicon_url string
    • brand_color string
      #rrggbb.
    • custom_domain string
    • is_public boolean required
      Whether visitors can read it.
    • theme string required
      One of: auto light dark
    • site_theme SiteTheme required
      Show SiteTheme properties
      • font string
        "" is the system font.
        One of: Inter Roboto Open Sans Lato Source Sans 3 IBM Plex Sans Nunito Sans Work Sans Manrope DM Sans Plus Jakarta Sans Figtree Geist Poppins Merriweather Source Serif 4 Lora
      • radius string
        One of: none small medium large · Default: medium
      • background string
        One of: default tinted slate warm · Default: default
      • mode string
        The same setting as the page's theme (system there is auto).
        One of: system light dark · Default: system
    • subscriptions_enabled boolean
    • reply_to_email string
      Where replies to subscriber emails go.
    • page_description string
    • footer_text string
    • support_url string
    • support_label string
    • privacy_url string
    • terms_url string
    • ga_tag string
      The older field for the Google Analytics id, kept in step with analytics.ga4_measurement_id.
    • search_indexable boolean
    • history_window_days integer
      How far back the public page shows past incidents.
      One of: 30 90
    • product_groups boolean
      Groups fold into one line each on the public page.
    • open_groups array of string
      Groups that start open.
    • product_pages boolean
      Each group has a page of its own.
    • header_links array of HeaderLink
      Max items: 5
      Show HeaderLink properties
      • label string required
        One line of text.
        Min length: 1 · Max length: 40
      • url string (uri) required
        An https:// URL.
        Max length: 2048
    • show_page_name boolean
      false shows the logo alone.
    • analytics AnalyticsSettings
      Show AnalyticsSettings properties
      • enabled boolean
        Whether visitor analytics are collected.
      • retention_days integer
        How long daily counts are kept.
        One of: 30 90 180 365 730
      • ga4_measurement_id string
        A Google Analytics 4 id (G-…) the public page loads, or "".
      • honor_privacy_signals boolean
        Load Google Analytics only for visitors who sent neither DNT: 1 nor Sec-GPC: 1.
    • created_at string (date-time) required
    • updated_at string (date-time) required
  • success boolean required
    Value: true

400

A field is missing or invalid (VALIDATION_ERROR); the message names it, or the body is not valid (INVALID_BODY).

Content type: application/json

Type: Error

  • error object required
    • code string required
      Machine-readable code. Branch on this.
    • message string required
      Human-readable explanation.
    • request_id string
      This request's id, also in X-Request-ID.

401

No API key was sent, or it is unknown, revoked or expired (UNAUTHORIZED).

Content type: application/json

Type: Error

  • error object required
    • code string required
      Machine-readable code. Branch on this.
    • message string required
      Human-readable explanation.
    • request_id string
      This request's id, also in X-Request-ID.

403

The key lacks the scope this endpoint needs (FORBIDDEN).

Content type: application/json

Type: Error

  • error object required
    • code string required
      Machine-readable code. Branch on this.
    • message string required
      Human-readable explanation.
    • request_id string
      This request's id, also in X-Request-ID.

404

No such item, or one the caller cannot see (NOT_FOUND).

Content type: application/json

Type: Error

  • error object required
    • code string required
      Machine-readable code. Branch on this.
    • message string required
      Human-readable explanation.
    • request_id string
      This request's id, also in X-Request-ID.

429

Too many requests (RATE_LIMITED). Wait Retry-After seconds.

Headers

  • Retry-After integer
    Seconds to wait.

Content type: application/json

Type: Error

  • error object required
    • code string required
      Machine-readable code. Branch on this.
    • message string required
      Human-readable explanation.
    • request_id string
      This request's id, also in X-Request-ID.

500

Something went wrong on EvoHub's side (INTERNAL_ERROR). Retry later.

Content type: application/json

Type: Error

  • error object required
    • code string required
      Machine-readable code. Branch on this.
    • message string required
      Human-readable explanation.
    • request_id string
      This request's id, also in X-Request-ID.

Example request

curl -X PATCH 'https://evohub.io/api/v1/pages/3f6c2a1e-8b4d-4f7a-9c21-5d0e7a9b1c42/content-settings' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer <TOKEN>' \
  -d '{
  "support_url": "mailto:support@acme.com",
  "support_label": "Contact support",
  "page_description": "Live status of Acme services.",
  "search_indexable": true,
  "history_window_days": 90
}'

Last updated