Better Uptime Heartbeats API
Manage heartbeat monitors for cron jobs and background workers
Manage heartbeat monitors for cron jobs and background workers
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-heartbeats-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 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: Heartbeats
description: Manage heartbeat monitors for cron jobs and background workers
paths:
/heartbeats:
get:
operationId: listHeartbeats
summary: List heartbeats
description: Returns a paginated list of all heartbeat monitors.
tags:
- Heartbeats
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 heartbeats
content:
application/json:
schema:
$ref: '#/components/schemas/HeartbeatListResponse'
'401':
$ref: '#/components/responses/Unauthorized'
post:
operationId: createHeartbeat
summary: Create a heartbeat
description: Creates a new heartbeat monitor.
tags:
- Heartbeats
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/HeartbeatCreateRequest'
responses:
'201':
description: Heartbeat created
content:
application/json:
schema:
$ref: '#/components/schemas/HeartbeatResponse'
/heartbeats/{id}:
get:
operationId: getHeartbeat
summary: Get a heartbeat
description: Returns a single heartbeat by ID.
tags:
- Heartbeats
parameters:
- $ref: '#/components/parameters/Id'
responses:
'200':
description: A single heartbeat
content:
application/json:
schema:
$ref: '#/components/schemas/HeartbeatResponse'
'404':
$ref: '#/components/responses/NotFound'
patch:
operationId: updateHeartbeat
summary: Update a heartbeat
description: Updates an existing heartbeat monitor.
tags:
- Heartbeats
parameters:
- $ref: '#/components/parameters/Id'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/HeartbeatCreateRequest'
responses:
'200':
description: Heartbeat updated
content:
application/json:
schema:
$ref: '#/components/schemas/HeartbeatResponse'
delete:
operationId: deleteHeartbeat
summary: Delete a heartbeat
description: Deletes an existing heartbeat monitor.
tags:
- Heartbeats
parameters:
- $ref: '#/components/parameters/Id'
responses:
'204':
description: Heartbeat 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
HeartbeatResponse:
type: object
properties:
data:
$ref: '#/components/schemas/HeartbeatResource'
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
HeartbeatCreateRequest:
type: object
required:
- name
- period
- grace
properties:
name:
type: string
period:
type: integer
grace:
type: integer
call:
type: boolean
sms:
type: boolean
email:
type: boolean
push:
type: boolean
team_wait:
type: integer
heartbeat_group_id:
type: string
HeartbeatListResponse:
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/HeartbeatResource'
pagination:
$ref: '#/components/schemas/Pagination'
HeartbeatResource:
type: object
properties:
id:
type: string
type:
type: string
enum:
- heartbeat
attributes:
$ref: '#/components/schemas/HeartbeatAttributes'
HeartbeatAttributes:
type: object
properties:
url:
type: string
format: uri
description: Unique ping URL for the heartbeat
readOnly: true
name:
type: string
description: Heartbeat name
period:
type: integer
description: Expected ping interval in seconds
grace:
type: integer
description: Grace period in seconds before alerting
call:
type: boolean
sms:
type: boolean
email:
type: boolean
push:
type: boolean
team_wait:
type: integer
description: Escalation delay in seconds
heartbeat_group_id:
type:
- string
- 'null'
team_name:
type: string
paused_at:
type:
- string
- 'null'
format: date-time
server_timezone:
type:
- string
- 'null'
maintenance_from:
type: string
maintenance_to:
type: string
maintenance_timezone:
type: string
maintenance_days:
type: array
items:
type: string
status:
type: string
enum:
- paused
- pending
- up
- down
readOnly: true
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