openapi: 3.2.0 info: title: Checkly Public Status Pages V3 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 paths: /v3/status-pages: get: summary: List v3 status pages. operationId: listStatusPagesV3Public description: List the v3 (components-based) status pages of an account. v2 pages are served by /v1/status-pages. 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 Pages V3 responses: '200': description: Successful content: application/json: schema: $ref: '#/components/schemas/PublicStatusPagesV3PaginatedResponse' '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: Create a new v3 status page. operationId: createStatusPageV3Public description: Create a new v3 status page. Add components afterwards via the components 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 tags: - Status Pages V3 requestBody: content: application/json: schema: $ref: '#/components/schemas/PublicStatusPageV3Mutation' responses: '201': description: Created content: application/json: schema: $ref: '#/components/schemas/PublicStatusPageV3' '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}: delete: summary: Delete a v3 status page. operationId: deleteStatusPageV3Public description: Delete a v3 status page together with its components and automation rules. 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 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 a single v3 status page by id. operationId: getStatusPageV3Public description: Get a v3 (components-based) status page. Components and automation rules have their own 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 tags: - Status Pages V3 responses: '200': description: Successful content: application/json: schema: $ref: '#/components/schemas/PublicStatusPageV3' '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 existing v3 status page. operationId: updateStatusPageV3Public description: 'Update a v3 status page. This is a full replacement: omitted optional fields are reset.' 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 requestBody: content: application/json: schema: $ref: '#/components/schemas/PublicStatusPageV3Mutation' responses: '200': description: Successful content: application/json: schema: $ref: '#/components/schemas/PublicStatusPageV3' '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}/custom-domain-verifications: get: summary: Retrieve custom domain verification details for a v3 status page. operationId: getStatusPageV3CustomDomainVerificationPublic description: Get DNS records for verification purposes related to your custom domain. 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 responses: '200': description: Successful content: application/json: schema: $ref: '#/components/schemas/PublicStatusPageV3CustomDomainVerification' '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}/custom-domain-verifications/recheck: post: summary: Re-check the custom domain verification of a v3 status page. operationId: recheckStatusPageV3CustomDomainVerificationPublic description: Ask Cloudflare to re-check the custom domain verification and return the latest state. 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 responses: '200': description: Successful content: application/json: schema: $ref: '#/components/schemas/PublicStatusPageV3CustomDomainVerification' '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 OwnershipVerificationTypeV3: type: string enum: - txt - cname 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 StatusPageV3ThemeColorsGroup: type: object properties: bodyBackgroundColor: type: string pattern: ^#([0-9A-F]{3}|[0-9A-F]{6})$ headerBackgroundColor: type: string pattern: ^#([0-9A-F]{3}|[0-9A-F]{6})$ headerFontColor: type: string pattern: ^#([0-9A-F]{3}|[0-9A-F]{6})$ titleFontColor: type: string pattern: ^#([0-9A-F]{3}|[0-9A-F]{6})$ bodyFontColor: type: string pattern: ^#([0-9A-F]{3}|[0-9A-F]{6})$ bodyFontColorMuted: type: string pattern: ^#([0-9A-F]{3}|[0-9A-F]{6})$ navigationFontColor: type: string pattern: ^#([0-9A-F]{3}|[0-9A-F]{6})$ linkFontColor: type: string pattern: ^#([0-9A-F]{3}|[0-9A-F]{6})$ cardBackgroundColor: type: string pattern: ^#([0-9A-F]{3}|[0-9A-F]{6})$ borderColor: type: string pattern: ^#([0-9A-F]{3}|[0-9A-F]{6})$ primaryButtonBackgroundColor: type: string pattern: ^#([0-9A-F]{3}|[0-9A-F]{6})$ primaryButtonFontColor: type: string pattern: ^#([0-9A-F]{3}|[0-9A-F]{6})$ required: - bodyBackgroundColor - headerBackgroundColor - headerFontColor - titleFontColor - bodyFontColor - bodyFontColorMuted - navigationFontColor - linkFontColor - cardBackgroundColor - borderColor - primaryButtonBackgroundColor - primaryButtonFontColor 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 StatusPageV3ValidationRecord: type: object properties: status: type: string txt_name: type: string txt_value: type: string required: - status - txt_name - txt_value StatusPageV3SslValidationError: type: object properties: message: type: string PublicStatusPagesV3PaginatedResponse: type: object properties: length: type: integer entries: $ref: '#/components/schemas/PublicStatusPagesV3Entries' nextId: type: - string - 'null' required: - length - entries StatusPageV3OwnershipVerification: type: object properties: type: $ref: '#/components/schemas/OwnershipVerificationTypeV3' name: type: string value: type: string required: - type - name - value PublicStatusPageV3CustomDomainVerification: type: object properties: status: type: string sslStatus: type: string validationMethod: $ref: '#/components/schemas/StatusPageV3ValidationMethod' verificationErrors: $ref: '#/components/schemas/StatusPageV3VerificationErrors' ownershipVerification: $ref: '#/components/schemas/StatusPageV3OwnershipVerification' validationRecords: $ref: '#/components/schemas/validationRecords' sslValidationErrors: $ref: '#/components/schemas/sslValidationErrors' CNAME: type: string required: - status - sslStatus StatusPageV3ValidationMethod: type: string enum: - txt - http StatusPageV3VerificationErrors: type: array items: type: string sslValidationErrors: type: array items: $ref: '#/components/schemas/StatusPageV3SslValidationError' ForbiddenError: type: object properties: statusCode: type: number enum: - 403 error: $ref: '#/components/schemas/Model1' message: type: string example: Forbidden required: - statusCode - error defaultTheme: type: string default: AUTO enum: - LIGHT - DARK - AUTO validationRecords: type: array items: $ref: '#/components/schemas/StatusPageV3ValidationRecord' 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 Model4: type: string enum: - Not Found PublicStatusPagesV3Entries: type: array items: $ref: '#/components/schemas/PublicStatusPageV3' Model1: type: string enum: - Forbidden StatusPageV3ThemeColors: type: - object - 'null' properties: light: $ref: '#/components/schemas/StatusPageV3ThemeColorsGroup' dark: $ref: '#/components/schemas/StatusPageV3ThemeColorsGroup' required: - light - dark PublicStatusPageV3: type: object properties: name: type: string description: type: - string - 'null' maxLength: 500 url: type: string x-convert: case: lower customDomain: type: - string - 'null' description: A custom user domain, e.g. "status.example.com". See the docs on updating your DNS and SSL usage. x-convert: case: lower themeColors: $ref: '#/components/schemas/StatusPageV3ThemeColors' logo: type: - string - 'null' x-format: uri: scheme: - http - https logoDark: type: - string - 'null' x-format: uri: scheme: - http - https redirectTo: type: - string - 'null' x-format: uri: scheme: - http - https favicon: type: - string - 'null' x-format: uri: scheme: - http - https defaultTheme: $ref: '#/components/schemas/defaultTheme' privacyPolicyLink: type: - string - 'null' maxLength: 255 x-format: uri: scheme: - http - https termsOfServiceLink: type: - string - 'null' maxLength: 255 x-format: uri: scheme: - http - https footerText: type: - string - 'null' maxLength: 1000 googleAnalyticsTag: type: - string - 'null' maxLength: 255 pattern: ^[A-Za-z0-9-]+$ allowIndexing: type: boolean id: type: string x-format: guid: true accountId: type: string x-format: guid: true version: type: integer enum: - 3 created_at: type: string format: date updated_at: type: - string - 'null' format: date required: - name - url - id - accountId - version - created_at PublicStatusPageV3Mutation: type: object properties: name: type: string description: type: - string - 'null' maxLength: 500 url: type: string x-convert: case: lower customDomain: type: - string - 'null' description: A custom user domain, e.g. "status.example.com". See the docs on updating your DNS and SSL usage. x-convert: case: lower themeColors: $ref: '#/components/schemas/StatusPageV3ThemeColors' logo: type: - string - 'null' x-format: uri: scheme: - http - https logoDark: type: - string - 'null' x-format: uri: scheme: - http - https redirectTo: type: - string - 'null' x-format: uri: scheme: - http - https favicon: type: - string - 'null' x-format: uri: scheme: - http - https defaultTheme: $ref: '#/components/schemas/defaultTheme' privacyPolicyLink: type: - string - 'null' maxLength: 255 x-format: uri: scheme: - http - https termsOfServiceLink: type: - string - 'null' maxLength: 255 x-format: uri: scheme: - http - https footerText: type: - string - 'null' maxLength: 1000 googleAnalyticsTag: type: - string - 'null' maxLength: 255 pattern: ^[A-Za-z0-9-]+$ allowIndexing: type: boolean required: - name - url 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]"
'