Better Uptime Status Pages API
Manage public status pages for communicating service health
Manage public status pages for communicating service health
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/betteruptime-status-pages-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Better Stack Uptime Heartbeats Status Pages API
description: The Better Stack Uptime API provides programmatic access to manage uptime monitors, heartbeats, on-call schedules, incidents, status pages, integrations, team members, and reporting. The API follows the JSON:API specification and uses Bearer token authentication.
version: v2
contact:
name: Better Stack Support
url: https://betterstack.com/docs/uptime/api/getting-started-with-uptime-api/
termsOfService: https://betterstack.com/terms
license:
name: Proprietary
url: https://betterstack.com/terms
servers:
- url: https://uptime.betterstack.com/api/v2
description: Better Stack Uptime API v2
- url: https://uptime.betterstack.com/api/v3
description: Better Stack Uptime API v3 (incidents)
security:
- BearerAuth: []
tags:
- name: Status Pages
description: Manage public status pages for communicating service health
paths:
/status-pages:
get:
operationId: listStatusPages
summary: List status pages
description: Returns a list of all your status pages.
tags:
- Status Pages
parameters:
- name: team_name
in: query
description: Filter by team name
schema:
type: string
- name: page
in: query
description: Page number for pagination
schema:
type: integer
responses:
'200':
description: A list of status pages
content:
application/json:
schema:
$ref: '#/components/schemas/StatusPageListResponse'
'401':
$ref: '#/components/responses/Unauthorized'
post:
operationId: createStatusPage
summary: Create a status page
description: Creates a new status page.
tags:
- Status Pages
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/StatusPageCreateRequest'
responses:
'201':
description: Status page created
content:
application/json:
schema:
$ref: '#/components/schemas/StatusPageResponse'
/status-pages/{id}:
get:
operationId: getStatusPage
summary: Get a status page
description: Returns a single status page by ID.
tags:
- Status Pages
parameters:
- $ref: '#/components/parameters/Id'
responses:
'200':
description: A single status page
content:
application/json:
schema:
$ref: '#/components/schemas/StatusPageResponse'
'404':
$ref: '#/components/responses/NotFound'
patch:
operationId: updateStatusPage
summary: Update a status page
description: Updates an existing status page.
tags:
- Status Pages
parameters:
- $ref: '#/components/parameters/Id'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/StatusPageCreateRequest'
responses:
'200':
description: Status page updated
content:
application/json:
schema:
$ref: '#/components/schemas/StatusPageResponse'
delete:
operationId: deleteStatusPage
summary: Delete a status page
description: Deletes an existing status page.
tags:
- Status Pages
parameters:
- $ref: '#/components/parameters/Id'
responses:
'204':
description: Status page deleted
components:
responses:
Unauthorized:
description: Authentication failed
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
NotFound:
description: Resource not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
schemas:
ErrorResponse:
type: object
properties:
errors:
type: array
items:
type: object
properties:
title:
type: string
detail:
type: string
StatusPageResponse:
type: object
properties:
data:
$ref: '#/components/schemas/StatusPageResource'
Pagination:
type: object
properties:
first:
type: string
format: uri
last:
type: string
format: uri
prev:
type:
- string
- 'null'
format: uri
next:
type:
- string
- 'null'
format: uri
StatusPageResource:
type: object
properties:
id:
type: string
type:
type: string
enum:
- status_page
attributes:
$ref: '#/components/schemas/StatusPageAttributes'
StatusPageListResponse:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/StatusPageResource'
pagination:
$ref: '#/components/schemas/Pagination'
StatusPageCreateRequest:
type: object
required:
- company_name
- subdomain
properties:
company_name:
type: string
company_url:
type: string
format: uri
subdomain:
type: string
custom_domain:
type: string
timezone:
type: string
theme:
type: string
enum:
- light
- dark
layout:
type: string
enum:
- vertical
- horizontal
subscribable:
type: boolean
password_enabled:
type: boolean
history:
type: integer
StatusPageAttributes:
type: object
properties:
company_name:
type: string
company_url:
type: string
format: uri
subdomain:
type: string
custom_domain:
type:
- string
- 'null'
timezone:
type: string
theme:
type: string
enum:
- light
- dark
layout:
type: string
enum:
- vertical
- horizontal
aggregate_state:
type: string
enum:
- operational
- degraded_performance
- partial_outage
- major_outage
readOnly: true
subscribable:
type: boolean
password_enabled:
type: boolean
ip_allowlist:
type: array
items:
type: string
history:
type: integer
description: Incident history retention in days
created_at:
type: string
format: date-time
readOnly: true
updated_at:
type: string
format: date-time
readOnly: true
parameters:
Id:
name: id
in: path
required: true
description: Resource identifier
schema:
type: string
securitySchemes:
BearerAuth:
type: http
scheme: bearer
description: Bearer token obtained from Better Stack account settings