EvoHub Docs Sign in

API reference

On-Call API

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"
    }
  }
}

Version 1.0 OpenAPI 3.1.0

The On-Call API: alerts, incidents, schedules, escalation policies, integrations, maintenance windows and the settings around them. It is the API the EvoHub console itself uses.

Authentication. Send an API key as Authorization: Bearer evohub_… or X-API-Key: evohub_…. A key works in one organization. See API keys and scopes and Errors in these docs.

Permissions. Each operation names the permission it needs (x-evohub-permission); an API key needs it among its scopes. A key is always held to its scopes, even one made by an administrator. A role that still holds the older oncall:read or oncall:write permission passes the matching oncall:<resource>:read or :write checks (not oncall:alert:respond). A refusal is 403 FORBIDDEN, never 401.

Teams. Schedules, escalation policies and integrations can belong to a team. Those are visible only to callers in that team; others get 404, as if they did not exist. An organization key scoped to a team sees that team's items and the organization-wide ones; an organization key without a team sees the organization-wide ones. A personal key acts as its owner and sees what they see: the organization-wide items and those of the owner's teams.

Responses. Success is {"data": …, "success": true}; paged alert lists add meta.total. Errors are {"error": {"code", "message"}}, plus details for VALIDATION_FAILED. Times are RFC 3339 in UTC. Ids are opaque strings.

Not here. Sending alerts into EvoHub from a monitoring tool uses an integration key, not an API key: see the Alert ingest API reference.

Servers

  • https://evohub.io

Authentication

  • bearerAuth HTTP Bearer
    An EvoHub API key (evohub_…) as a bearer token.
  • apiKeyHeader API key in the header X-API-Key
    An EvoHub API key (evohub_…).

Alerts

The paged objects: list, raise and answer alerts.

GET/api/v1/alertsList alerts
POST/api/v1/alertsRaise an alert
GET/api/v1/alerts/{id}Get an alert
GET/api/v1/alerts/{id}/eventsList an alert's timeline
POST/api/v1/alerts/{id}/eventsAdd a note to an alert
POST/api/v1/alerts/{id}/acknowledgeAcknowledge an alert
POST/api/v1/alerts/{id}/resolveResolve an alert
POST/api/v1/alerts/{id}/suppressSuppress an alert
POST/api/v1/alerts/{id}/assignAssign an alert
POST/api/v1/alerts/{id}/takeoverTake over an alert
POST/api/v1/alerts/{id}/redirectRedirect an alert to another policy
POST/api/v1/alerts/acknowledge-bulkAcknowledge several alerts
POST/api/v1/alerts/resolve-bulkResolve several alerts
POST/api/v1/alerts/takeover-bulkTake over several alerts
POST/api/v1/alerts/resolve-by-fingerprintResolve an alert by fingerprint
GET/api/v1/alerts/statsCount alerts by status
GET/api/v1/alerts/fieldsList alert field names
GET/api/v1/alerts/sseStream alert changes

Incidents

Human-declared incidents and their timelines.

GET/api/v1/incidentsList incidents
POST/api/v1/incidentsDeclare an incident
GET/api/v1/incidents/{id}Get an incident
PUT/api/v1/incidents/{id}Update an incident
POST/api/v1/incidents/{id}/acknowledgeMark an incident identified
POST/api/v1/incidents/{id}/resolveResolve an incident
GET/api/v1/incidents/{id}/timelineList an incident's timeline
POST/api/v1/incidents/{id}/timelineAdd a timeline entry
DELETE/api/v1/incidents/{id}/timeline/{entryID}Delete a timeline entry
PATCH/api/v1/incidents/{id}/timeline/{entryID}Edit a timeline entry
GET/api/v1/incidents/{id}/sseStream an incident's timeline

Status page publishing

Publish an incident to one of your status pages.

GET/api/v1/incidents/{id}/publishGet publishing state
POST/api/v1/incidents/{id}/publishPublish to a status page
DELETE/api/v1/incidents/{id}/publishRemove from the status page

Postmortems

Post-incident reviews.

GET/api/v1/incidents/{id}/postmortemGet an incident's postmortem
PUT/api/v1/incidents/{id}/postmortemWrite an incident's postmortem (PUT)
POST/api/v1/incidents/{id}/postmortemWrite an incident's postmortem

Schedules

On-call schedules and who is on call.

GET/api/v1/schedulesList schedules
POST/api/v1/schedulesCreate a schedule
GET/api/v1/schedules/{id}Get a schedule
PUT/api/v1/schedules/{id}Update a schedule
DELETE/api/v1/schedules/{id}Delete a schedule
GET/api/v1/schedules/{id}/on-call-nowWho is on call on a schedule
GET/api/v1/on-call-nowWho is on call everywhere
GET/api/v1/schedules/my-on-callMy on-call shifts

Schedule layers

Rotation layers and the people in them.

Overrides

Temporary cover on a schedule.

Escalation policies

Who is notified about an alert, in what order.

GET/api/v1/escalation-policiesList escalation policies
POST/api/v1/escalation-policiesCreate an escalation policy
GET/api/v1/escalation-policies/{id}Get an escalation policy
PUT/api/v1/escalation-policies/{id}Update an escalation policy
DELETE/api/v1/escalation-policies/{id}Delete an escalation policy

Integrations

Monitoring tools that send alerts, and their keys.

GET/api/v1/integrationsList integrations
POST/api/v1/integrationsCreate an integration
GET/api/v1/integrations/{id}Get an integration
PUT/api/v1/integrations/{id}Update an integration
DELETE/api/v1/integrations/{id}Delete an integration
PUT/api/v1/integrations/{id}/signing-secretSet or generate a signing secret
DELETE/api/v1/integrations/{id}/signing-secretRemove a signing secret

Maintenance windows

Planned work that holds back paging.

GET/api/v1/maintenance-windowsList maintenance windows
POST/api/v1/maintenance-windowsSchedule a maintenance window
GET/api/v1/maintenance-windows/{id}Get a maintenance window
DELETE/api/v1/maintenance-windows/{id}Delete a maintenance window
PATCH/api/v1/maintenance-windows/{id}Update a maintenance window
POST/api/v1/maintenance-windows/{id}/completeEnd a maintenance window now
GET/api/v1/maintenance-windows/{id}/updatesList a window's updates
POST/api/v1/maintenance-windows/{id}/updatesPost an update
DELETE/api/v1/maintenance-windows/{id}/updates/{updateID}Delete an update
PATCH/api/v1/maintenance-windows/{id}/updates/{updateID}Edit an update

Analytics

MTTA, MTTR, noise and load.

GET/api/v1/alerts/analyticsAlert analytics
GET/api/v1/incidents/analyticsIncident analytics

Message templates

Default status-update texts and the voice-call template.

GET/api/v1/update-templatesList status-update templates
PUT/api/v1/update-templatesSave a status-update template
GET/api/v1/voice-templateGet the voice-call template
PUT/api/v1/voice-templateSave the voice-call template
POST/api/v1/voice-template/previewPreview a voice-call template

My notifications

How and when the caller is notified.

GET/api/v1/notification-preferencesList my notification methods
POST/api/v1/notification-preferencesAdd a notification method
PUT/api/v1/notification-preferences/{id}Update a notification method
DELETE/api/v1/notification-preferences/{id}Remove a notification method
PATCH/api/v1/notification-preferences/{id}Update a notification method (PATCH)
GET/api/v1/notification-scheduleGet my notification schedule
PUT/api/v1/notification-scheduleSave my notification schedule

Slack

The organization's Slack workspace.

GET/api/v1/slackGet the Slack connection
DELETE/api/v1/slackDisconnect Slack
POST/api/v1/slack/installStart connecting Slack
GET/api/v1/slack/channelsList Slack channels
PUT/api/v1/slack/default-channelSet the default Slack channel

Microsoft Teams

Teams channels and the action links on Teams cards.

GET/api/v1/chatGet chat availability
GET/api/v1/chat/channelsList Teams channels
POST/api/v1/chat/channelsAdd a Teams channel
DELETE/api/v1/chat/channels/{id}Remove a Teams channel
PATCH/api/v1/chat/channels/{id}Update a Teams channel
POST/api/v1/chat/channels/{id}/testSend a test message
GET/api/v1/chat/actions/{token}Preview a Teams action link
POST/api/v1/chat/actions/{token}Run a Teams action link

Import

Bring schedules, policies and integrations over from Opsgenie or PagerDuty.

POST/api/v1/import/opsgenie/previewPreview an import from Opsgenie
POST/api/v1/import/opsgenie/applyImport from Opsgenie
POST/api/v1/import/pagerduty/previewPreview an import from PagerDuty
POST/api/v1/import/pagerduty/applyImport from PagerDuty

Audit log

Who changed what in On-Call.

GET/api/v1/oncall-audit-logsList the On-Call audit log

Last updated