EvoHub Docs Sign in

On-Call API › Maintenance windows

Schedule a maintenance window

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"
    }
  }
}
POST/api/v1/maintenance-windows

Schedules a maintenance window of at most 30 days. While it runs, alerts are still recorded but nobody is paged, unless silence_oncall is false.

Optionally it also fans out: status_page_id publishes a scheduled maintenance (with affected_component_ids and message) on that status page, and uptime_monitor_ids silences those uptime monitors for the window. Deleting the window undoes both.

Permission (API-key scope): oncall:maintenance:write.

Authorization

Any one of:

Request body required

Content type: application/json

Type: MaintenanceWindowCreate

  • title string required
  • starts_at string (date-time) required
  • ends_at string (date-time) required
    After starts_at, at most 30 days later.
  • silence_oncall boolean
    Default: true
  • status_page_id string
    Also publish a scheduled maintenance on this status page.
  • affected_component_ids array of string
  • message string
    The status-page maintenance text.
  • uptime_monitor_ids array of string

Responses

201

The window.

Content type: application/json

Type: object

  • data MaintenanceWindow required
    Show MaintenanceWindow properties
    • id string
    • org_id string
    • title string
    • body string
      What the maintenance does.
    • starts_at string (date-time)
    • ends_at string (date-time)
    • created_by string
    • created_at string (date-time)
    • ended_at string (date-time)
      Set when the window was ended early.
    • silence_oncall boolean
      Whether paging is held back during the window.
  • success boolean required
    Value: true

400

The body is not JSON (INVALID_BODY); title, starts_at or ends_at is missing (VALIDATION_FAILED); or the window ends before it starts or is longer than 30 days (INVALID_WINDOW).

Content type: application/json

Type: Error

  • error object required
    • code string required
      Machine-readable code. Branch on this.
    • message string required
      Human-readable explanation.

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.

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.

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.

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.

Example request

curl -X POST 'https://evohub.io/api/v1/maintenance-windows' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer <TOKEN>' \
  -d '{
  "title": "Database upgrade",
  "ends_at": "2026-10-13T00:00:00Z",
  "message": "Expect a few minutes of read-only mode.",
  "starts_at": "2026-10-12T22:00:00Z",
  "status_page_id": "page_1f2e3d4c",
  "uptime_monitor_ids": [
    "mon_7a8b9c"
  ],
  "affected_component_ids": [
    "comp_api"
  ]
}'

Last updated