Skip to main content

Overview

Update an existing status page with new configuration. All fields are optional, allowing partial updates. You can modify branding, settings, publication status, custom domain, and password protection. This endpoint supports both PATCH (partial update) and PUT (full replacement) methods.

Authentication

Requires Project Admin authentication via API Key:
  • API Key: X-API-Key: YOUR_API_KEY

Path Parameters

ParameterTypeRequiredDescription
projectIdUUIDYesProject UUID
idUUIDYesStatus page UUID

Request Body

All fields are optional. Only include fields you want to update.

Basic Settings

{
  "name": "Updated Status Page Name",
  "description": "Updated description for the status page",
  "is_published": true
}

Branding Configuration

{
  "branding": {
    "logo_url": "https://example.com/new-logo.png",
    "favicon_url": "https://example.com/favicon.ico",
    "primary_color": "#1a73e8",
    "accent_color": "#ea4335",
    "company_name": "Updated Company Name",
    "custom_css": ".status-page { background: #f5f5f5; }"
  }
}

Settings Configuration

{
  "settings": {
    "show_uptime_history": true,
    "uptime_history_days": 90,
    "show_incident_history": true,
    "incident_history_days": 30,
    "allow_subscriptions": true,
    "subscription_types": ["email", "webhook"]
  }
}

Custom Domain and Password Protection

{
  "custom_domain": "status.example.com",
  "is_password_protected": true,
  "password": "securepassword123"
}

Complete Update Example

{
  "name": "Production Status Portal",
  "description": "Real-time status of all production services",
  "is_published": true,
  "branding": {
    "logo_url": "https://example.com/logo-dark.png",
    "primary_color": "#0066cc",
    "accent_color": "#ff6600",
    "company_name": "Acme Corp",
    "custom_css": ".header { font-weight: bold; }"
  },
  "settings": {
    "show_uptime_history": true,
    "uptime_history_days": 90,
    "show_incident_history": true,
    "incident_history_days": 30,
    "allow_subscriptions": true
  },
  "custom_domain": "status.acme.com",
  "is_password_protected": false
}

Request Parameters

ParameterTypeRequiredDescription
namestringNoStatus page name
descriptionstringNoStatus page description
brandingobjectNoBranding configuration object
settingsobjectNoSettings configuration object
is_publishedbooleanNoPublication status (true/false)
custom_domainstringNoCustom domain for status page
is_password_protectedbooleanNoEnable password protection
passwordstringNoPassword for protected pages

Branding Object

FieldTypeDescription
logo_urlstringOrganization logo URL
favicon_urlstringFavicon URL
primary_colorstringPrimary brand color (hex format)
accent_colorstringAccent color (hex format)
company_namestringOrganization name
custom_cssstringCustom CSS (sanitized server-side)

Settings Object

FieldTypeDescription
show_uptime_historybooleanDisplay uptime history chart
uptime_history_daysnumberDays of uptime history to display
show_incident_historybooleanShow incident history
incident_history_daysnumberDays of incident history to show
allow_subscriptionsbooleanAllow user subscriptions
subscription_typesarrayAllowed subscription types

Response

Success Response (200 OK)

{
  "success": true,
  "data": {
    "status_page": {
      "id": "550e8400-e29b-41d4-a716-446655440000",
      "project_id": "660e8400-e29b-41d4-a716-446655440001",
      "name": "Production Status Portal",
      "slug": "production-status",
      "description": "Real-time status of all production services",
      "is_published": true,
      "branding": {
        "logo_url": "https://example.com/logo-dark.png",
        "primary_color": "#0066cc",
        "accent_color": "#ff6600",
        "company_name": "Acme Corp",
        "custom_css": ".header { font-weight: bold; }"
      },
      "settings": {
        "show_uptime_history": true,
        "uptime_history_days": 90,
        "show_incident_history": true,
        "incident_history_days": 30,
        "allow_subscriptions": true
      },
      "custom_domain": "status.acme.com",
      "is_password_protected": false,
      "created_at": "2024-12-26T12:00:00Z",
      "updated_at": "2024-12-26T15:45:30Z"
    }
  }
}

Error Response (400/404)

{
  "success": false,
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Invalid request body",
    "details": [
      {
        "field": "branding.primary_color",
        "message": "Invalid hex color format"
      }
    ]
  }
}

Plan Limit Enforcement

When updating status pages, the system validates against your plan limits:
  1. Custom Branding: Advanced branding options may be restricted on lower plans
  2. Custom Domain: Custom domain support requires higher-tier plans
  3. Password Protection: May require specific plan features
  4. Custom CSS: Available on plans that support advanced customization

Error Codes

CodeStatusDescription
INVALID_STATUS_PAGE_ID400Missing or invalid status page ID
VALIDATION_ERROR400Request validation failed
AUTHENTICATION_REQUIRED401Missing or invalid authentication
FORBIDDEN403Insufficient permissions (requires Project Admin)
STATUS_PAGE_NOT_FOUND404Status page not found or access denied
INVALID_BRANDING400Branding configuration is invalid
INVALID_SETTINGS400Settings configuration is invalid
PLAN_LIMIT_EXCEEDED403Feature not available on current plan
STATUS_PAGE_UPDATE_FAILED500Unexpected update failure

Examples

# Update name and description
curl -X PATCH https://api.uptimeio.com/api/projects/660e8400-e29b-41d4-a716-446655440001/status-pages/550e8400-e29b-41d4-a716-446655440000 \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Production Status Portal",
    "description": "Real-time status of all production services"
  }'

# Update branding
curl -X PATCH https://api.uptimeio.com/api/projects/660e8400-e29b-41d4-a716-446655440001/status-pages/550e8400-e29b-41d4-a716-446655440000 \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "branding": {
      "primary_color": "#1a73e8",
      "accent_color": "#ea4335"
    }
  }'

# Enable password protection
curl -X PATCH https://api.uptimeio.com/api/projects/660e8400-e29b-41d4-a716-446655440001/status-pages/550e8400-e29b-41d4-a716-446655440000 \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "is_password_protected": true,
    "password": "securepassword123"
  }'

# Full replacement with PUT
curl -X PUT https://api.uptimeio.com/api/projects/660e8400-e29b-41d4-a716-446655440001/status-pages/550e8400-e29b-41d4-a716-446655440000 \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Production Status Portal",
    "description": "Real-time status",
    "is_published": true,
    "branding": {
      "primary_color": "#0066cc",
      "company_name": "Acme Corp"
    },
    "settings": {
      "show_uptime_history": true
    }
  }'

PATCH vs PUT

MethodBehavior
PATCHPartial update - only updates fields provided in the request
PUTFull replacement - replaces entire resource with provided data

Partial Update Example (PATCH)

# Only update the branding color - other fields remain unchanged
curl -X PATCH https://api.uptimeio.com/api/projects/660e8400-e29b-41d4-a716-446655440001/status-pages/550e8400-e29b-41d4-a716-446655440000 \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"branding": {"primary_color": "#1a73e8"}}'

Notes

  • Custom CSS is sanitized server-side to prevent XSS attacks
  • All changes are logged to the audit trail
  • Plan limits are validated before applying changes
  • Branding and settings objects support partial updates (only specified nested fields are changed)
  • Password is required when enabling password protection
  • Custom domain changes may require DNS verification