openapi: 3.2.0 info: title: Checkly Public Status Pages V3 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 Pages V3 Incidents paths: /v3/status-pages/{statusPageId}/incidents: get: summary: List the incidents of a v3 status page. operationId: listStatusPageV3IncidentsPublic description: List the incidents of a v3 status page, most recently updated first. 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: statusPageId in: path schema: type: string x-format: guid: true required: true - name: limit in: query schema: type: integer default: 20 minimum: 1 maximum: 100 - name: nextId in: query schema: type: string tags: - Status Pages V3 Incidents responses: '200': description: Successful content: application/json: schema: $ref: '#/components/schemas/PublicStatusPageV3IncidentsPaginatedResponse' '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' post: summary: Open an incident on a v3 status page. operationId: createStatusPageV3IncidentPublic description: Open an incident on a v3 status page with its first update and the current status of the impacted components. 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: statusPageId in: path schema: type: string x-format: guid: true required: true tags: - Status Pages V3 Incidents requestBody: content: application/json: schema: $ref: '#/components/schemas/PublicStatusPageV3IncidentCreate' responses: '201': description: Created content: application/json: schema: $ref: '#/components/schemas/PublicStatusPageV3Incident' '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' /v3/status-pages/{statusPageId}/incidents/{incidentId}: delete: summary: Delete an incident of a v3 status page. operationId: deleteStatusPageV3IncidentPublic description: Permanently remove 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: statusPageId in: path schema: type: string x-format: guid: true required: true - name: incidentId in: path schema: type: string x-format: guid: true required: true tags: - Status Pages V3 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' get: summary: Retrieve an incident of a v3 status page. operationId: getStatusPageV3IncidentPublic description: Get an incident of a v3 status page, including its updates and component impacts. 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: statusPageId in: path schema: type: string x-format: guid: true required: true - name: incidentId in: path schema: type: string x-format: guid: true required: true tags: - Status Pages V3 Incidents responses: '200': description: Successful content: application/json: schema: $ref: '#/components/schemas/PublicStatusPageV3Incident' '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' put: summary: Update an incident of a v3 status page. operationId: updateStatusPageV3IncidentPublic description: Rename an incident and/or reconcile the current status of its components. Post progress through the incident-updates endpoints. 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: statusPageId in: path schema: type: string x-format: guid: true required: true - name: incidentId in: path schema: type: string x-format: guid: true required: true tags: - Status Pages V3 Incidents requestBody: content: application/json: schema: $ref: '#/components/schemas/PublicStatusPageV3IncidentMutation' responses: '200': description: Successful content: application/json: schema: $ref: '#/components/schemas/PublicStatusPageV3Incident' '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' /v3/status-pages/{statusPageId}/incidents/{incidentId}/component-impacts: put: summary: Replace an incident's component impact timeline. operationId: replaceStatusPageV3IncidentComponentImpactsPublic description: Replace the full impact timeline of an incident with explicit per-component windows (retroactive editing). 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: statusPageId in: path schema: type: string x-format: guid: true required: true - name: incidentId in: path schema: type: string x-format: guid: true required: true tags: - Status Pages V3 Incidents requestBody: content: application/json: schema: $ref: '#/components/schemas/PublicStatusPageV3ReplaceComponentImpacts' responses: '200': description: Successful content: application/json: schema: $ref: '#/components/schemas/PublicStatusPageV3Incident' '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' /v3/status-pages/{statusPageId}/incidents/{incidentId}/incident-updates: get: summary: List the updates of an incident. operationId: listStatusPageV3IncidentUpdatesPublic description: List the updates of an incident, newest first (at most 100). 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: statusPageId in: path schema: type: string x-format: guid: true required: true - name: incidentId in: path schema: type: string x-format: guid: true required: true tags: - Status Pages V3 Incidents responses: '200': description: Successful content: application/json: schema: $ref: '#/components/schemas/PublicStatusPageV3IncidentUpdates' '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' post: summary: Post an update to an incident. operationId: createStatusPageV3IncidentUpdatePublic description: Post an update to an incident. A RESOLVED update closes the 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: statusPageId in: path schema: type: string x-format: guid: true required: true - name: incidentId in: path schema: type: string x-format: guid: true required: true tags: - Status Pages V3 Incidents requestBody: content: application/json: schema: $ref: '#/components/schemas/PublicStatusPageV3IncidentUpdateMutation' responses: '201': description: Created content: application/json: schema: $ref: '#/components/schemas/PublicStatusPageV3IncidentUpdate' '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' /v3/status-pages/{statusPageId}/incidents/{incidentId}/incident-updates/{incidentUpdateId}: delete: summary: Delete an incident update. operationId: deleteStatusPageV3IncidentUpdatePublic description: Delete an incident update. The last remaining update cannot be deleted. 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: statusPageId in: path schema: type: string x-format: guid: true required: true - 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 Pages V3 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' get: summary: Retrieve an incident update. operationId: getStatusPageV3IncidentUpdatePublic description: Get a single 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: statusPageId in: path schema: type: string x-format: guid: true required: true - 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 Pages V3 Incidents responses: '200': description: Successful content: application/json: schema: $ref: '#/components/schemas/PublicStatusPageV3IncidentUpdate' '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' put: summary: Edit an incident update. operationId: updateStatusPageV3IncidentUpdatePublic description: Edit 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: statusPageId in: path schema: type: string x-format: guid: true required: true - 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 Pages V3 Incidents requestBody: content: application/json: schema: $ref: '#/components/schemas/PublicStatusPageV3IncidentUpdateMutation' responses: '200': description: Successful content: application/json: schema: $ref: '#/components/schemas/PublicStatusPageV3IncidentUpdate' '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' components: schemas: attributes: type: object PublicStatusPageV3IncidentUpdate: type: object properties: description: type: string status: $ref: '#/components/schemas/PublicStatusPageV3IncidentStatus' publicIncidentUpdateDate: type: string format: date-time description: When the update is shown as posted. Defaults to now; cannot predate the incident. default: '2026-08-29T08:22:09.939Z' notifySubscribers: type: boolean default: false id: type: string x-format: guid: true created_at: type: string format: date required: - description - status - id - created_at PublicStatusPageV3Incident: type: object properties: id: type: string x-format: guid: true statusPageId: type: string x-format: guid: true name: type: string lastUpdateStatus: $ref: '#/components/schemas/PublicStatusPageV3IncidentStatus' duration: type: - integer - 'null' description: Seconds from the first update to the resolving update; null while ongoing. componentImpacts: $ref: '#/components/schemas/PublicStatusPageV3ComponentImpactsResponse' created_at: type: string format: date updated_at: type: - string - 'null' format: date incidentUpdates: $ref: '#/components/schemas/PublicStatusPageV3IncidentUpdatesResponse' required: - id - statusPageId - name - lastUpdateStatus - created_at - incidentUpdates 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 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 PublicStatusPageV3ComponentImpact: type: object properties: componentId: type: string x-format: guid: true status: $ref: '#/components/schemas/Model93' required: - componentId - status PublicStatusPageV3IncidentListItem: type: object properties: id: type: string x-format: guid: true statusPageId: type: string x-format: guid: true name: type: string lastUpdateStatus: $ref: '#/components/schemas/PublicStatusPageV3IncidentStatus' duration: type: - integer - 'null' description: Seconds from the first update to the resolving update; null while ongoing. componentImpacts: $ref: '#/components/schemas/PublicStatusPageV3ComponentImpactsResponse' created_at: type: string format: date updated_at: type: - string - 'null' format: date required: - id - statusPageId - name - lastUpdateStatus - created_at Model93: type: string enum: - OPERATIONAL - UNDER_MAINTENANCE - DEGRADED_PERFORMANCE - PARTIAL_OUTAGE - MAJOR_OUTAGE PublicStatusPageV3ReplaceComponentImpacts: type: object properties: componentImpacts: $ref: '#/components/schemas/PublicStatusPageV3ComponentImpactWindows' required: - componentImpacts PublicStatusPageV3ComponentImpactWindow: type: object properties: componentId: type: string x-format: guid: true status: $ref: '#/components/schemas/Model94' startedAt: type: string format: date-time endedAt: type: - string - 'null' format: date-time description: null keeps the window open (active incidents only). required: - componentId - status - startedAt - endedAt PublicStatusPageV3ComponentImpactWindows: type: array items: $ref: '#/components/schemas/PublicStatusPageV3ComponentImpactWindow' PublicStatusPageV3IncidentsEntries: type: array items: $ref: '#/components/schemas/PublicStatusPageV3IncidentListItem' PublicStatusPageV3IncidentCreate: type: object properties: name: type: string maxLength: 255 componentImpacts: $ref: '#/components/schemas/PublicStatusPageV3ComponentImpacts' incidentUpdates: $ref: '#/components/schemas/PublicStatusPageV3IncidentCreateUpdates' required: - name - incidentUpdates PublicStatusPageV3IncidentMutation: type: object properties: name: type: string maxLength: 255 componentImpacts: $ref: '#/components/schemas/PublicStatusPageV3ComponentImpacts' required: - name PublicStatusPageV3IncidentUpdatesResponse: type: array items: $ref: '#/components/schemas/PublicStatusPageV3IncidentUpdate' ForbiddenError: type: object properties: statusCode: type: number enum: - 403 error: $ref: '#/components/schemas/Model1' message: type: string example: Forbidden required: - statusCode - error PublicStatusPageV3ComponentImpacts: type: array description: The current status of each impacted component. Omitted components are OPERATIONAL. items: $ref: '#/components/schemas/PublicStatusPageV3ComponentImpact' PublicStatusPageV3ComponentImpactResponse: type: object properties: componentId: type: string x-format: guid: true status: $ref: '#/components/schemas/Model92' startedAt: type: string format: date endedAt: type: - string - 'null' format: date required: - componentId - status - startedAt PublicStatusPageV3IncidentUpdateMutation: type: object properties: description: type: string status: $ref: '#/components/schemas/PublicStatusPageV3IncidentStatus' publicIncidentUpdateDate: type: string format: date-time description: When the update is shown as posted. Defaults to now; cannot predate the incident. default: '2026-08-29T08:22:09.928Z' notifySubscribers: type: boolean default: false required: - description - status Model94: type: string enum: - UNDER_MAINTENANCE - DEGRADED_PERFORMANCE - PARTIAL_OUTAGE - MAJOR_OUTAGE 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 PublicStatusPageV3IncidentsPaginatedResponse: type: object properties: length: type: integer entries: $ref: '#/components/schemas/PublicStatusPageV3IncidentsEntries' nextId: type: - string - 'null' required: - length - entries PublicStatusPageV3ComponentImpactsResponse: type: array items: $ref: '#/components/schemas/PublicStatusPageV3ComponentImpactResponse' Model4: type: string enum: - Not Found Model1: type: string enum: - Forbidden PublicStatusPageV3IncidentStatus: type: string enum: - INVESTIGATING - IDENTIFIED - MONITORING - RESOLVED Model92: type: string enum: - OPERATIONAL - UNDER_MAINTENANCE - DEGRADED_PERFORMANCE - PARTIAL_OUTAGE - MAJOR_OUTAGE PublicStatusPageV3IncidentCreateUpdates: type: array description: 'Exactly one update: the one that opens the incident.' x-constraint: length: 1 items: $ref: '#/components/schemas/PublicStatusPageV3IncidentUpdateMutation' PublicStatusPageV3IncidentUpdates: type: array items: $ref: '#/components/schemas/PublicStatusPageV3IncidentUpdate' 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]"
'