Checkly Status Pages V3 API
The Status Pages V3 API from Checkly — 7 operation(s) for status pages v3.
The Status Pages V3 API from Checkly — 7 operation(s) for status pages v3.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/checkly-status-pages-v3-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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.<br />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 <a href="https://app.checklyhq.com/settings/user/api-keys" target="_blank">here</a>.</br>Your API key is like a password: <br>keep it secure!</br></br>Authentication to the API is performed using the Bearer auth method in the Authorization header and using the account ID.</br></br>For example, set <b>Authorization</b> header while using cURL: <code>curl -H "Authorization: Bearer [apiKey]" "X-Checkly-Account: [accountId]"</code></br>'