Instatus

Post to and update maintenance and incidents on your status page through an HTTP REST API

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/instatus"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

AsyncAPI Specification

webhooks-asyncapi.yml Raw ↑
asyncapi: '2.6.0'
info:
  title: Instatus Webhooks
  version: '1.0.0'
  description: |
    AsyncAPI specification for the Instatus webhook surface. Instatus delivers
    HTTP POST callbacks to subscriber-configured endpoints for incident
    lifecycle events, scheduled maintenance lifecycle events, and component
    status changes on a status page.

    Each request is signed with an `x-instatus-webhook-signature` header
    containing the HMAC-SHA256 digest of the raw JSON body using the
    configured webhook secret. Subscribers should verify this signature
    before processing the payload.
  contact:
    name: Instatus
    url: https://instatus.com/help/webhooks
  license:
    name: Proprietary
    url: https://instatus.com/legal/terms

defaultContentType: application/json

servers:
  subscriber:
    url: '{webhookUrl}'
    protocol: https
    description: |
      Subscriber-controlled HTTPS endpoint configured in the Instatus
      status page notification settings. Instatus is the producer; the
      subscriber's URL receives POST requests.
    variables:
      webhookUrl:
        description: Full HTTPS URL provided by the subscriber.
        default: https://example.com/webhooks/instatus

channels:
  incident:
    description: |
      Delivered when an incident is created or updated on the status page.
      Covers the full incident lifecycle, including state transitions
      across INVESTIGATING, IDENTIFIED, MONITORING, and RESOLVED.
    subscribe:
      operationId: receiveIncidentEvent
      summary: Receive an incident lifecycle event.
      bindings:
        http:
          type: request
          method: POST
          bindingVersion: '0.3.0'
      message:
        $ref: '#/components/messages/IncidentEvent'

  maintenance:
    description: |
      Delivered when a scheduled maintenance is created or updated. Covers
      lifecycle state transitions across NOTSTARTEDYET, INPROGRESS, and
      COMPLETED.
    subscribe:
      operationId: receiveMaintenanceEvent
      summary: Receive a maintenance lifecycle event.
      bindings:
        http:
          type: request
          method: POST
          bindingVersion: '0.3.0'
      message:
        $ref: '#/components/messages/MaintenanceEvent'

  component:
    description: |
      Delivered when a component status changes. Includes the previous
      and new status alongside the component record.
    subscribe:
      operationId: receiveComponentEvent
      summary: Receive a component status change event.
      bindings:
        http:
          type: request
          method: POST
          bindingVersion: '0.3.0'
      message:
        $ref: '#/components/messages/ComponentEvent'

components:
  messages:
    IncidentEvent:
      name: IncidentEvent
      title: Incident lifecycle event
      summary: Fired when an incident is added or updated.
      contentType: application/json
      headers:
        $ref: '#/components/schemas/WebhookHeaders'
      payload:
        $ref: '#/components/schemas/IncidentPayload'

    MaintenanceEvent:
      name: MaintenanceEvent
      title: Maintenance lifecycle event
      summary: Fired when a scheduled maintenance is added or updated.
      contentType: application/json
      headers:
        $ref: '#/components/schemas/WebhookHeaders'
      payload:
        $ref: '#/components/schemas/MaintenancePayload'

    ComponentEvent:
      name: ComponentEvent
      title: Component status change event
      summary: Fired when a component's status changes.
      contentType: application/json
      headers:
        $ref: '#/components/schemas/WebhookHeaders'
      payload:
        $ref: '#/components/schemas/ComponentPayload'

  schemas:
    WebhookHeaders:
      type: object
      properties:
        x-instatus-webhook-signature:
          type: string
          description: |
            HMAC-SHA256 signature of the raw JSON body computed with the
            subscriber's webhook secret. Used to verify authenticity and
            detect payload tampering.
        Content-Type:
          type: string
          enum:
            - application/json
      required:
        - x-instatus-webhook-signature
        - Content-Type

    Meta:
      type: object
      description: Common metadata included on every webhook payload.
      properties:
        unsubscribe:
          type: string
          format: uri
          description: URL the subscriber can use to unsubscribe.
        documentation:
          type: string
          format: uri
          description: Link to the webhook format documentation.

    Page:
      type: object
      description: Status page summary included on every webhook payload.
      properties:
        id:
          type: string
          description: Unique status page identifier.
        status_indicator:
          type: string
          description: Page-level status indicator.
          enum:
            - UP
            - HASISSUES
            - UNDERMAINTENANCE
        status_description:
          type: string
          description: Human-readable description of the current page status.
        url:
          type: string
          format: uri
          description: Public URL of the status page.

    IncidentStatus:
      type: string
      description: Incident lifecycle status.
      enum:
        - INVESTIGATING
        - IDENTIFIED
        - MONITORING
        - RESOLVED

    MaintenanceStatus:
      type: string
      description: Maintenance lifecycle status.
      enum:
        - NOTSTARTEDYET
        - INPROGRESS
        - COMPLETED

    ComponentStatus:
      type: string
      description: Component operational status.
      enum:
        - OPERATIONAL
        - UNDERMAINTENANCE
        - DEGRADEDPERFORMANCE
        - PARTIALOUTAGE
        - MAJOROUTAGE

    IncidentUpdate:
      type: object
      properties:
        id:
          type: string
        incident_id:
          type: string
        body:
          type: string
          description: Update body text shared with subscribers.
        status:
          $ref: '#/components/schemas/IncidentStatus'
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time

    Incident:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        url:
          type: string
          format: uri
        status:
          $ref: '#/components/schemas/IncidentStatus'
        impact:
          type: string
          description: Impact level of the incident.
        backfilled:
          type: boolean
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
        resolved_at:
          type: string
          format: date-time
          nullable: true
        incident_updates:
          type: array
          items:
            $ref: '#/components/schemas/IncidentUpdate'

    MaintenanceUpdate:
      type: object
      properties:
        id:
          type: string
        maintenance_id:
          type: string
        body:
          type: string
        status:
          $ref: '#/components/schemas/MaintenanceStatus'
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time

    Maintenance:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        url:
          type: string
          format: uri
        status:
          $ref: '#/components/schemas/MaintenanceStatus'
        impact:
          type: string
        backfilled:
          type: boolean
        duration:
          type: string
          description: Planned maintenance window duration.
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
        resolved_at:
          type: string
          format: date-time
          nullable: true
        maintenance_updates:
          type: array
          items:
            $ref: '#/components/schemas/MaintenanceUpdate'

    Component:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        status:
          $ref: '#/components/schemas/ComponentStatus'
        created_at:
          type: string
          format: date-time

    ComponentUpdate:
      type: object
      properties:
        component_id:
          type: string
        new_status:
          $ref: '#/components/schemas/ComponentStatus'
        created_at:
          type: string
          format: date-time

    IncidentPayload:
      type: object
      required:
        - meta
        - page
        - incident
      properties:
        meta:
          $ref: '#/components/schemas/Meta'
        page:
          $ref: '#/components/schemas/Page'
        incident:
          $ref: '#/components/schemas/Incident'

    MaintenancePayload:
      type: object
      required:
        - meta
        - page
        - maintenance
      properties:
        meta:
          $ref: '#/components/schemas/Meta'
        page:
          $ref: '#/components/schemas/Page'
        maintenance:
          $ref: '#/components/schemas/Maintenance'

    ComponentPayload:
      type: object
      required:
        - meta
        - page
        - component_update
        - component
      properties:
        meta:
          $ref: '#/components/schemas/Meta'
        page:
          $ref: '#/components/schemas/Page'
        component_update:
          $ref: '#/components/schemas/ComponentUpdate'
        component:
          $ref: '#/components/schemas/Component'