Checkly Status Pages API
The Status Pages API from Checkly — 8 operation(s) for status pages.
The Status Pages API from Checkly — 8 operation(s) for status pages.
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-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 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
paths:
/v1/status-pages:
get:
summary: Retrieve all status pages.
operationId: getV1Statuspages
description: Get all status pages for an account.
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
responses:
'200':
description: Successful
content:
application/json:
schema:
$ref: '#/components/schemas/StatusPagesV2PaginatedResponse'
'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 status page.
operationId: postV1Statuspages
description: Create a new status page with its related services and cards.
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
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/StatusPageV2PublicApiUpdate'
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/StatusPageV2WithId'
'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/{statusPageId}:
delete:
summary: Delete a status page.
operationId: deleteV1StatuspagesStatuspageid
description: Delete a status page.
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
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 a single status page by id.
operationId: getV1StatuspagesStatuspageid
description: <b>[DEPRECATED] This endpoint will be removed soon. Please use the <code>GET /v3/status-pages/{statusPageId}</code> endpoint instead.</b><br>Get status page data, including cards and 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: statusPageId
in: path
schema:
type: string
x-format:
guid: true
required: true
tags:
- Status Pages
responses:
'200':
description: Successful
content:
application/json:
schema:
$ref: '#/components/schemas/StatusPageV2WithIdRead'
'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 status page.
operationId: putV1StatuspagesStatuspageid
description: Update a status page with its related services and cards.
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
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/StatusPageV2PublicApiUpdate'
responses:
'200':
description: Successful
content:
application/json:
schema:
$ref: '#/components/schemas/StatusPageV2WithId'
'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/{statusPageId}/subscriptions:
get:
summary: Get all subscriptions for a specific status page
operationId: getV1StatuspagesStatuspageidSubscriptions
description: Get all subscriptions for a specific status page
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
responses:
'200':
description: The list of subscriptions for the status page.
content:
application/json:
schema:
$ref: '#/components/schemas/SubscriptionsList'
'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/{statusPageId}/subscriptions/bulk:
post:
summary: Bulk create subscriptions for a specific status page
operationId: postV1StatuspagesStatuspageidSubscriptionsBulk
description: Bulk create subscriptions for a specific status page.
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
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/BulkCreateSubscriptionsPayload'
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/BulkCreateSubscriptionsResponse'
'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/{statusPageId}/subscriptions/{subscriptionId}:
delete:
summary: Delete a subscription belonging to a specific status page
operationId: deleteV1StatuspagesStatuspageidSubscriptionsSubscriptionid
description: Delete a subscription belonging to a specific status page using the subscription id
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: subscriptionId
in: path
schema:
type: string
x-format:
guid: true
required: true
tags:
- Status Pages
responses:
'204':
description: No Content
'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
ProjectBindingReferencesV1:
type: array
description: Projects that use this resource without owning it; their deploys leave it alone. Empty when there are none.
items:
$ref: '#/components/schemas/ProjectBindingV1'
BulkCreateSubscriptionsPayload:
type: object
properties:
subscriptions:
$ref: '#/components/schemas/subscriptions'
autoVerify:
type: boolean
description: Whether to create subscriptions as verified without sending confirmation emails.
default: false
required:
- subscriptions
StatusPageThemeColors:
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
Model81:
type: string
description: The status of the created subscriptions.
enum:
- PENDING
- VERIFIED
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
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
StatusPageV2Card:
type: object
properties:
id:
type: string
x-format:
guid: true
name:
type: string
services:
$ref: '#/components/schemas/StatusPageV2CardServices'
created_at:
type: string
format: date
updated_at:
type:
- string
- 'null'
format: date
required:
- id
- name
- created_at
StatusPagesV2PaginatedResponse:
type: object
properties:
length:
type: integer
entries:
$ref: '#/components/schemas/StatusPagesV2Entries'
nextId:
type:
- string
- 'null'
required:
- length
- entries
Model74:
type: object
properties:
id:
type: string
x-format:
guid: true
maskedKey:
type: string
created_at:
type: string
format: date
updated_at:
type:
- string
- 'null'
format: date
required:
- id
- maskedKey
- created_at
StatusPageV2ThemeColors:
type:
- object
- 'null'
properties:
light:
$ref: '#/components/schemas/StatusPageThemeColors'
dark:
$ref: '#/components/schemas/StatusPageThemeColors'
required:
- light
- dark
StatusPageV2IncidentServices:
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
- lastUpdateStatus
- created_at
BulkCreateSubscriptionsResponse:
type: object
properties:
created:
type: number
description: The number of subscriptions successfully created.
skipped:
type: number
description: The number of subscriptions skipped (already exist).
status:
$ref: '#/components/schemas/Model81'
required:
- created
- skipped
- status
Model80:
type: object
properties:
type:
$ref: '#/components/schemas/Model79'
config:
type: string
description: The configuration details for the status page subscription. These can be very different based on the type of the subscriptions.
required:
- type
- config
StatusPageV2CardServiceRef:
type: object
properties:
id:
type: string
x-format:
guid: true
StatusPageV2Cards:
type: array
items:
$ref: '#/components/schemas/StatusPageV2Card'
StatusPageV2CardUpdate:
type: object
properties:
id:
type: string
x-format:
guid: true
statusPageId:
type: string
x-format:
guid: true
name:
type: string
services:
$ref: '#/components/schemas/StatusPageV2CardServiceRefs'
required:
- name
StatusPageV2CardUpdates:
type: array
items:
$ref: '#/components/schemas/StatusPageV2CardUpdate'
Model79:
type: string
description: The type of subscription type, i.e. EMAIL.
example: EMAIL
enum:
- EMAIL
ProjectBindingV1:
type: object
properties:
project:
$ref: '#/components/schemas/BindingProjectV1'
binding:
$ref: '#/components/schemas/ProjectBindingDetailsV1'
required:
- project
- binding
Model75:
type: array
items:
$ref: '#/components/schemas/Model74'
Model77:
type: string
description: The type of subscription.
enum:
- EMAIL
ForbiddenError:
type: object
properties:
statusCode:
type: number
enum:
- 403
error:
$ref: '#/components/schemas/Model1'
message:
type: string
example: Forbidden
required:
- statusCode
- error
StatusPageV2WithIdRead:
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/StatusPageV2ThemeColors'
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'
cards:
$ref: '#/components/schemas/StatusPageV2Cards'
version:
type:
- number
- 'null'
id:
type: string
x-format:
guid: true
whiteLabel:
type: boolean
isPrivate:
type: boolean
default: false
projectBindings:
$ref: '#/components/schemas/ProjectBindingsV1'
required:
- name
- url
- id
defaultTheme:
type: string
default: AUTO
enum:
- LIGHT
- DARK
- AUTO
SubscriptionsList:
type: array
description: The list of subscriptions for the status page.
items:
$ref: '#/components/schemas/Subscription'
StatusPageV2CardServices:
type: array
items:
$ref: '#/components/schemas/StatusPageV2Service'
ProjectBindingDetailsV1:
type: object
description: The resource's side of this binding.
properties:
logicalId:
type: string
description: The resource's logical ID within this project, as declared in code.
example: homepage-check
pending:
type: boolean
description: True when the binding is reserved by an import plan that has not been deployed yet.
required:
- logicalId
- pending
ProjectBindingOwnerV1:
type:
- object
- 'null'
description: The project that owns this resource — the one whose deploy can delete it. Null when no project owns it, including when other projects merely reference it. In the rare case that several projects hold an ownership record for one resource, this reports the preferred one and the rest are omitted.
properties:
project:
$ref: '#/components/schemas/BindingProjectV1'
binding:
$ref: '#/components/schemas/ProjectBindingDetailsV1'
required:
- project
- binding
BindingProjectV1:
type: object
description: The project this binding is to.
properties:
id:
type: string
description: The ID of the project.
logicalId:
type: string
description: The logical ID of the project, as declared in code.
name:
type: string
description: The name of the project.
required:
- id
- logicalId
- name
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
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
StatusPageV2WithId:
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/StatusPageV2ThemeColors'
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'
cards:
$ref: '#/components/schemas/StatusPageV2Cards'
version:
type:
- number
- 'null'
id:
type: string
x-format:
guid: true
whiteLabel:
type: boolean
isPrivate:
type: boolean
default: false
required:
- name
- url
- id
Model78:
type: string
description: The status of the subscription.
enum:
- PENDING
- VERIFIED
StatusPageV2PublicApiUpdate:
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/StatusPageV2ThemeColors'
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'
version:
type:
- number
- 'null'
cards:
$ref: '#/components/schemas/StatusPageV2CardUpdates'
required:
- name
- url
- cards
StatusPageV2Read:
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/StatusPageV2ThemeColors'
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'
cards:
$ref: '#/components/schemas/StatusPageV2Cards'
version:
# --- truncated at 32 KB (35 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/checkly/refs/heads/main/openapi/checkly-status-pages-api-openapi.yml