openapi: 3.2.0 info: title: Checkly Public Status Page Incidents API version: v1 description: These are the docs for the newly released Checkly Public API.
If you have any questions, please do not hesitate to get in touch with us. servers: - url: https://api.checklyhq.com security: - Bearer: [] tags: - name: Status Page Incidents paths: /v1/status-pages/incidents: get: summary: Retrieve the latest incidents with pagination. operationId: getV1StatuspagesIncidents description: Get the latest 100 incidents for all services. parameters: - name: x-checkly-account in: header schema: type: string description: Your Checkly account ID, you can find it at https://app.checklyhq.com/settings/account/general x-format: guid: true description: Your Checkly account ID, you can find it at https://app.checklyhq.com/settings/account/general - name: limit in: query schema: type: integer default: 20 minimum: 1 maximum: 100 - name: nextId in: query schema: type: string tags: - Status Page Incidents responses: '200': description: Successful content: application/json: schema: $ref: '#/components/schemas/IncidentsPaginatedResponse' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ForbiddenError' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/NotFoundError' '429': description: Too Many Requests content: application/json: schema: $ref: '#/components/schemas/TooManyRequestsError' deprecated: true post: summary: Create a new incident. operationId: postV1StatuspagesIncidents description: Creates a new incident. parameters: - name: x-checkly-account in: header schema: type: string description: Your Checkly account ID, you can find it at https://app.checklyhq.com/settings/account/general x-format: guid: true description: Your Checkly account ID, you can find it at https://app.checklyhq.com/settings/account/general tags: - Status Page Incidents requestBody: content: application/json: schema: $ref: '#/components/schemas/CreateStatusPageV2Incident' responses: '201': description: Created content: application/json: schema: $ref: '#/components/schemas/StatusPageV2Incident' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ForbiddenError' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/NotFoundError' '429': description: Too Many Requests content: application/json: schema: $ref: '#/components/schemas/TooManyRequestsError' deprecated: true /v1/status-pages/incidents/{incidentId}: delete: summary: Delete an incident. operationId: deleteV1StatuspagesIncidentsIncidentid description: Permanently removes an incident and all its updates. parameters: - name: x-checkly-account in: header schema: type: string description: Your Checkly account ID, you can find it at https://app.checklyhq.com/settings/account/general x-format: guid: true description: Your Checkly account ID, you can find it at https://app.checklyhq.com/settings/account/general - name: incidentId in: path schema: type: string x-format: guid: true required: true tags: - Status Page Incidents responses: '204': description: No Content content: application/json: schema: type: string '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ForbiddenError' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/NotFoundError' '429': description: Too Many Requests content: application/json: schema: $ref: '#/components/schemas/TooManyRequestsError' deprecated: true get: summary: Retrieve an incident by id. operationId: getV1StatuspagesIncidentsIncidentid description: Get incident details including incident history and affected services. parameters: - name: x-checkly-account in: header schema: type: string description: Your Checkly account ID, you can find it at https://app.checklyhq.com/settings/account/general x-format: guid: true description: Your Checkly account ID, you can find it at https://app.checklyhq.com/settings/account/general - name: incidentId in: path schema: type: string x-format: guid: true required: true tags: - Status Page Incidents responses: '200': description: Successful content: application/json: schema: $ref: '#/components/schemas/StatusPageV2Incident' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ForbiddenError' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/NotFoundError' '429': description: Too Many Requests content: application/json: schema: $ref: '#/components/schemas/TooManyRequestsError' deprecated: true put: summary: Update an existing incident. operationId: putV1StatuspagesIncidentsIncidentid description: Updates an incident. parameters: - name: x-checkly-account in: header schema: type: string description: Your Checkly account ID, you can find it at https://app.checklyhq.com/settings/account/general x-format: guid: true description: Your Checkly account ID, you can find it at https://app.checklyhq.com/settings/account/general - name: incidentId in: path schema: type: string x-format: guid: true required: true tags: - Status Page Incidents requestBody: content: application/json: schema: $ref: '#/components/schemas/StatusPageV2IncidentCommon' responses: '200': description: Successful content: application/json: schema: $ref: '#/components/schemas/StatusPageV2Incident' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ForbiddenError' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/NotFoundError' '429': description: Too Many Requests content: application/json: schema: $ref: '#/components/schemas/TooManyRequestsError' deprecated: true /v1/status-pages/incidents/{incidentId}/incident-updates: get: summary: Retrieve the 100 latest incident updates of a specific incident. operationId: getV1StatuspagesIncidentsIncidentidIncidentupdates description: Lists all updates for a specific incident. parameters: - name: x-checkly-account in: header schema: type: string description: Your Checkly account ID, you can find it at https://app.checklyhq.com/settings/account/general x-format: guid: true description: Your Checkly account ID, you can find it at https://app.checklyhq.com/settings/account/general - name: incidentId in: path schema: type: string x-format: guid: true required: true tags: - Status Page Incidents responses: '200': description: Successful content: application/json: schema: $ref: '#/components/schemas/Model76' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ForbiddenError' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/NotFoundError' '429': description: Too Many Requests content: application/json: schema: $ref: '#/components/schemas/TooManyRequestsError' deprecated: true post: summary: Add a new incident update to a specific incident. operationId: postV1StatuspagesIncidentsIncidentidIncidentupdates description: Creates a new update for an incident. parameters: - name: x-checkly-account in: header schema: type: string description: Your Checkly account ID, you can find it at https://app.checklyhq.com/settings/account/general x-format: guid: true description: Your Checkly account ID, you can find it at https://app.checklyhq.com/settings/account/general - name: incidentId in: path schema: type: string x-format: guid: true required: true tags: - Status Page Incidents requestBody: content: application/json: schema: $ref: '#/components/schemas/StatusPageV2IncidentUpdate' responses: '200': description: Successful content: application/json: schema: $ref: '#/components/schemas/StatusPageV2IncidentUpdate' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ForbiddenError' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/NotFoundError' '429': description: Too Many Requests content: application/json: schema: $ref: '#/components/schemas/TooManyRequestsError' deprecated: true /v1/status-pages/incidents/{incidentId}/incident-updates/{incidentUpdateId}: delete: summary: Delete an incident update. operationId: deleteV1StatuspagesIncidentsIncidentidIncidentupdatesIncidentupdateid description: Permanently removes an incident update. parameters: - name: x-checkly-account in: header schema: type: string description: Your Checkly account ID, you can find it at https://app.checklyhq.com/settings/account/general x-format: guid: true description: Your Checkly account ID, you can find it at https://app.checklyhq.com/settings/account/general - name: incidentId in: path schema: type: string x-format: guid: true required: true - name: incidentUpdateId in: path schema: type: string x-format: guid: true required: true tags: - Status Page Incidents responses: '204': description: No Content content: application/json: schema: type: string '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ForbiddenError' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/NotFoundError' '429': description: Too Many Requests content: application/json: schema: $ref: '#/components/schemas/TooManyRequestsError' deprecated: true get: summary: Retrieve an incident update by id. operationId: getV1StatuspagesIncidentsIncidentidIncidentupdatesIncidentupdateid description: Shows details of a specific incident update. parameters: - name: x-checkly-account in: header schema: type: string description: Your Checkly account ID, you can find it at https://app.checklyhq.com/settings/account/general x-format: guid: true description: Your Checkly account ID, you can find it at https://app.checklyhq.com/settings/account/general - name: incidentId in: path schema: type: string x-format: guid: true required: true - name: incidentUpdateId in: path schema: type: string x-format: guid: true required: true tags: - Status Page Incidents responses: '200': description: Successful content: application/json: schema: $ref: '#/components/schemas/StatusPageV2IncidentUpdate' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ForbiddenError' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/NotFoundError' '429': description: Too Many Requests content: application/json: schema: $ref: '#/components/schemas/TooManyRequestsError' deprecated: true put: summary: Update an existing incident update. operationId: putV1StatuspagesIncidentsIncidentidIncidentupdatesIncidentupdateid description: Modifies an incident update. parameters: - name: x-checkly-account in: header schema: type: string description: Your Checkly account ID, you can find it at https://app.checklyhq.com/settings/account/general x-format: guid: true description: Your Checkly account ID, you can find it at https://app.checklyhq.com/settings/account/general - name: incidentId in: path schema: type: string x-format: guid: true required: true - name: incidentUpdateId in: path schema: type: string x-format: guid: true required: true tags: - Status Page Incidents requestBody: content: application/json: schema: $ref: '#/components/schemas/StatusPageV2IncidentUpdate' responses: '200': description: Successful content: application/json: schema: $ref: '#/components/schemas/StatusPageV2IncidentUpdate' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/UnauthorizedError' '403': description: Forbidden content: application/json: schema: $ref: '#/components/schemas/ForbiddenError' '404': description: Not Found content: application/json: schema: $ref: '#/components/schemas/NotFoundError' '429': description: Too Many Requests content: application/json: schema: $ref: '#/components/schemas/TooManyRequestsError' deprecated: true components: schemas: attributes: type: object StatusPageV2IncidentUpdate: type: object properties: id: type: string x-format: guid: true description: type: string status: $ref: '#/components/schemas/StatusPageIncidentStatus' publicIncidentUpdateDate: type: string format: date-time default: '2026-08-29T08:22:09.076Z' created_at: type: string format: date notifySubscribers: type: boolean default: false required: - description IncidentUpdates: type: array items: $ref: '#/components/schemas/StatusPageV2IncidentUpdateWithId' Model2: type: string enum: - Too Many Requests UnauthorizedError: type: object properties: statusCode: type: number enum: - 401 error: $ref: '#/components/schemas/error' message: type: string example: Bad Token attributes: $ref: '#/components/schemas/attributes' required: - statusCode - error Model76: type: array items: $ref: '#/components/schemas/StatusPageV2IncidentUpdate' TooManyRequestsError: type: object properties: statusCode: type: number enum: - 429 error: $ref: '#/components/schemas/Model2' message: type: string example: Too Many Requests attributes: $ref: '#/components/schemas/attributes' required: - statusCode - error StatusPageV2IncidentCommon: type: object properties: id: type: string x-format: guid: true created_at: type: string format: date updated_at: type: string format: date lastUpdateStatus: $ref: '#/components/schemas/StatusPageIncidentStatus' name: type: string maxLength: 255 severity: $ref: '#/components/schemas/IncidentSeverity' services: $ref: '#/components/schemas/IncidentCommonServices' duration: type: - integer - 'null' required: - name - severity - services StatusPageV2Incident: type: object properties: name: type: string maxLength: 255 severity: $ref: '#/components/schemas/IncidentSeverity' id: type: string x-format: guid: true services: $ref: '#/components/schemas/IncidentServices' incidentUpdates: $ref: '#/components/schemas/IncidentUpdates' lastUpdateStatus: $ref: '#/components/schemas/StatusPageIncidentStatus' duration: type: - integer - 'null' created_at: type: string format: date updated_at: type: string format: date required: - name - severity - id - services - incidentUpdates - lastUpdateStatus - created_at IncidentsPaginatedResponse: type: object properties: length: type: integer entries: $ref: '#/components/schemas/IncidentsPaginatedEntries' nextId: type: - string - 'null' required: - length - entries IncidentsPaginatedEntries: type: array items: $ref: '#/components/schemas/StatusPageV2Incident' ForbiddenError: type: object properties: statusCode: type: number enum: - 403 error: $ref: '#/components/schemas/Model1' message: type: string example: Forbidden required: - statusCode - error StatusPageV2IncidentUpdateWithId: type: object properties: description: type: string status: $ref: '#/components/schemas/StatusPageIncidentStatus' publicIncidentUpdateDate: type: string format: date-time default: '2026-08-29T08:22:08.989Z' notifySubscribers: type: boolean default: false id: type: string x-format: guid: true created_at: type: string format: date required: - description - id - created_at CreateIncidentUpdates: type: array x-constraint: length: 1 items: $ref: '#/components/schemas/StatusPageV2IncidentUpdate' StatusPageV2Service: type: object properties: name: type: string id: type: string x-format: guid: true accountId: type: string x-format: guid: true created_at: type: string format: date updated_at: type: - string - 'null' format: date required: - name - id - accountId - created_at NotFoundError: type: object properties: statusCode: type: number enum: - 404 error: $ref: '#/components/schemas/Model4' message: type: string example: Not Found required: - statusCode - error error: type: string enum: - Unauthorized IncidentSeverity: type: string enum: - CRITICAL - MAJOR - MEDIUM - MINOR Model4: type: string enum: - Not Found IncidentService: type: object properties: name: type: string id: type: string x-format: guid: true accountId: type: string x-format: guid: true created_at: type: string format: date updated_at: type: - string - 'null' format: date required: - name - id - accountId Model1: type: string enum: - Forbidden IncidentCommonServices: type: array minItems: 1 items: $ref: '#/components/schemas/IncidentService' IncidentServices: type: array items: $ref: '#/components/schemas/StatusPageV2Service' StatusPageIncidentStatus: type: string enum: - INVESTIGATING - IDENTIFIED - MONITORING - RESOLVED CreateStatusPageV2Incident: type: object properties: id: type: string x-format: guid: true created_at: type: string format: date updated_at: type: string format: date lastUpdateStatus: $ref: '#/components/schemas/StatusPageIncidentStatus' name: type: string maxLength: 255 severity: $ref: '#/components/schemas/IncidentSeverity' services: $ref: '#/components/schemas/IncidentCommonServices' duration: type: - integer - 'null' incidentUpdates: $ref: '#/components/schemas/CreateIncidentUpdates' required: - name - severity - services - incidentUpdates securitySchemes: Bearer: type: http scheme: bearer bearerFormat: Bearer description: 'The Checkly Public API uses API keys to authenticate requests. You can get the API Key here.
Your API key is like a password:
keep it secure!

Authentication to the API is performed using the Bearer auth method in the Authorization header and using the account ID.

For example, set Authorization header while using cURL: curl -H "Authorization: Bearer [apiKey]" "X-Checkly-Account: [accountId]"
'