Checkly Analytics API
The Analytics API from Checkly — 12 operation(s) for analytics.
The Analytics API from Checkly — 12 operation(s) for analytics.
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-analytics-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: Checkly Public Analytics 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: Analytics
paths:
/v1/analytics/api-checks/{id}:
get:
summary: API checks
operationId: getV1AnalyticsApichecksId
description: Fetch detailed availability metrics and aggregated or non-aggregated API Check metrics across custom time ranges. For example, you can get the p99 and p95 of all the DNS phases of your API check together with the availability percentage for any time range.<br><br><b>Rate-limiting is applied to this endpoint, you can send 30 requests / 60 seconds at most.<b>
tags:
- Analytics
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/AnalyticsApiCheckResponse'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'429':
description: Too Many Requests
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
parameters:
- schema:
type: string
minLength: 1
format: uuid
required: true
name: id
in: path
- schema:
type: string
format: date
description: Custom start time of reporting window in unix timestamp format. Setting a custom "from" timestamp overrides the use of any "quickRange".
required: false
description: Custom start time of reporting window in unix timestamp format. Setting a custom "from" timestamp overrides the use of any "quickRange".
name: from
in: query
- schema:
type: string
format: date
description: Custom end time of reporting window in unix timestamp format. Setting a custom "to" timestamp overrides the use of any "quickRange".
required: false
description: Custom end time of reporting window in unix timestamp format. Setting a custom "to" timestamp overrides the use of any "quickRange".
name: to
in: query
- schema:
type: string
enum:
- last24Hours
- last7Days
- last30Days
- thisWeek
- thisMonth
- lastWeek
- lastMonth
default: last24Hours
description: Preset reporting windows are used for quickly generating report on commonly used windows. Can be overridden by using a custom "to" and "from" timestamp.
required: false
description: Preset reporting windows are used for quickly generating report on commonly used windows. Can be overridden by using a custom "to" and "from" timestamp.
name: quickRange
in: query
- schema:
type: number
minimum: 1
maximum: 43200
example: 1440
description: The time interval to use for aggregating metrics in minutes. For example, five minutes is 5, 24 hours is 1440.
required: false
description: The time interval to use for aggregating metrics in minutes. For example, five minutes is 5, 24 hours is 1440.
name: aggregationInterval
in: query
- schema:
type: array
items:
type: string
enum:
- success
- failure
example:
- failure
description: Filter based on whether a check result was either failing or passing
required: false
description: Filter based on whether a check result was either failing or passing
name: filterByStatus
in: query
- schema:
type: string
enum:
- runLocation
- statusCode
description: Determines how the series data is grouped. Note that grouped queries are a bit more expensive and might take longer.
required: false
description: Determines how the series data is grouped. Note that grouped queries are a bit more expensive and might take longer.
name: groupBy
in: query
- schema:
type: array
items:
type: string
enum:
- responseTime
- wait
- dns
- tcp
- firstByte
- download
- availability
- retries
- responseTime_avg
- responseTime_max
- responseTime_median
- responseTime_min
- responseTime_p50
- responseTime_p90
- responseTime_p95
- responseTime_p99
- responseTime_stddev
- responseTime_sum
- wait_avg
- wait_max
- wait_median
- wait_min
- wait_p50
- wait_p90
- wait_p95
- wait_p99
- wait_stddev
- wait_sum
- dns_avg
- dns_max
- dns_median
- dns_min
- dns_p50
- dns_p90
- dns_p95
- dns_p99
- dns_stddev
- dns_sum
- tcp_avg
- tcp_max
- tcp_median
- tcp_min
- tcp_p50
- tcp_p90
- tcp_p95
- tcp_p99
- tcp_stddev
- tcp_sum
- firstByte_avg
- firstByte_max
- firstByte_median
- firstByte_min
- firstByte_p50
- firstByte_p90
- firstByte_p95
- firstByte_p99
- firstByte_stddev
- firstByte_sum
- download_avg
- download_max
- download_median
- download_min
- download_p50
- download_p90
- download_p95
- download_p99
- download_stddev
- download_sum
description: Available metrics for API Checks. You can pass multiple metrics as a comma separated string.
required: true
description: Available metrics for API Checks. You can pass multiple metrics as a comma separated string.
name: metrics
in: query
- schema:
type: integer
minimum: 1
maximum: 100
default: 10
description: Limit the number of results
required: false
description: Limit the number of results
name: limit
in: query
- schema:
type: number
default: 1
description: Page number
exclusiveMinimum: 0
required: false
description: Page number
name: page
in: query
- schema:
type: string
format: uuid
description: Your Checkly account ID, you can find it at https://app.checklyhq.com/settings/account/general
required: false
description: Your Checkly account ID, you can find it at https://app.checklyhq.com/settings/account/general
name: x-checkly-account
in: header
/v1/analytics/browser-checks/{id}:
get:
summary: Browser checks
operationId: getV1AnalyticsBrowserchecksId
description: Fetch detailed availability metrics and aggregated or non-aggregated Browser Check metrics across custom time ranges. For example, you can get the average amount of console errors, the p99 of your FCP and the standard deviation of your TTFB for the second page in your Browser check with one API call.<br><br><b>Rate-limiting is applied to this endpoint, you can send 30 requests / 60 seconds at most.<b>
tags:
- Analytics
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/AnalyticsBrowserCheckResponse'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'429':
description: Too Many Requests
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
parameters:
- schema:
type: string
minLength: 1
format: uuid
required: true
name: id
in: path
- schema:
type: string
format: date
description: Custom start time of reporting window in unix timestamp format. Setting a custom "from" timestamp overrides the use of any "quickRange".
required: false
description: Custom start time of reporting window in unix timestamp format. Setting a custom "from" timestamp overrides the use of any "quickRange".
name: from
in: query
- schema:
type: string
format: date
description: Custom end time of reporting window in unix timestamp format. Setting a custom "to" timestamp overrides the use of any "quickRange".
required: false
description: Custom end time of reporting window in unix timestamp format. Setting a custom "to" timestamp overrides the use of any "quickRange".
name: to
in: query
- schema:
type: string
enum:
- last24Hours
- last7Days
- last30Days
- thisWeek
- thisMonth
- lastWeek
- lastMonth
default: last24Hours
description: Preset reporting windows are used for quickly generating report on commonly used windows. Can be overridden by using a custom "to" and "from" timestamp.
required: false
description: Preset reporting windows are used for quickly generating report on commonly used windows. Can be overridden by using a custom "to" and "from" timestamp.
name: quickRange
in: query
- schema:
type: number
minimum: 1
maximum: 43200
example: 1440
description: The time interval to use for aggregating metrics in minutes. For example, five minutes is 5, 24 hours is 1440.
required: false
description: The time interval to use for aggregating metrics in minutes. For example, five minutes is 5, 24 hours is 1440.
name: aggregationInterval
in: query
- schema:
type: array
items:
type: string
enum:
- success
- failure
example:
- failure
description: Filter based on whether a check result was either failing or passing
required: false
description: Filter based on whether a check result was either failing or passing
name: filterByStatus
in: query
- schema:
type: string
enum:
- runLocation
- pageIndex
description: Determines how the series data is grouped. Note that grouped queries are a bit more expensive and might take longer.
required: false
description: Determines how the series data is grouped. Note that grouped queries are a bit more expensive and might take longer.
name: groupBy
in: query
- schema:
type: array
items:
type: string
enum:
- responseTime
- TTFB
- FCP
- LCP
- CLS
- TBT
- consoleErrors
- networkErrors
- userScriptErrors
- documentErrors
- availability
- retries
- responseTime_avg
- responseTime_max
- responseTime_median
- responseTime_min
- responseTime_p50
- responseTime_p90
- responseTime_p95
- responseTime_p99
- responseTime_stddev
- responseTime_sum
- TTFB_avg
- TTFB_max
- TTFB_median
- TTFB_min
- TTFB_p50
- TTFB_p90
- TTFB_p95
- TTFB_p99
- TTFB_stddev
- TTFB_sum
- FCP_avg
- FCP_max
- FCP_median
- FCP_min
- FCP_p50
- FCP_p90
- FCP_p95
- FCP_p99
- FCP_stddev
- FCP_sum
- LCP_avg
- LCP_max
- LCP_median
- LCP_min
- LCP_p50
- LCP_p90
- LCP_p95
- LCP_p99
- LCP_stddev
- LCP_sum
- CLS_avg
- CLS_max
- CLS_median
- CLS_min
- CLS_p50
- CLS_p90
- CLS_p95
- CLS_p99
- CLS_stddev
- CLS_sum
- TBT_avg
- TBT_max
- TBT_median
- TBT_min
- TBT_p50
- TBT_p90
- TBT_p95
- TBT_p99
- TBT_stddev
- TBT_sum
- consoleErrors_avg
- consoleErrors_max
- consoleErrors_median
- consoleErrors_min
- consoleErrors_p50
- consoleErrors_p90
- consoleErrors_p95
- consoleErrors_p99
- consoleErrors_stddev
- consoleErrors_sum
- networkErrors_avg
- networkErrors_max
- networkErrors_median
- networkErrors_min
- networkErrors_p50
- networkErrors_p90
- networkErrors_p95
- networkErrors_p99
- networkErrors_stddev
- networkErrors_sum
- userScriptErrors_avg
- userScriptErrors_max
- userScriptErrors_median
- userScriptErrors_min
- userScriptErrors_p50
- userScriptErrors_p90
- userScriptErrors_p95
- userScriptErrors_p99
- userScriptErrors_stddev
- userScriptErrors_sum
- documentErrors_avg
- documentErrors_max
- documentErrors_median
- documentErrors_min
- documentErrors_p50
- documentErrors_p90
- documentErrors_p95
- documentErrors_p99
- documentErrors_stddev
- documentErrors_sum
description: Available metrics for Browser Checks. You can pass multiple metrics as a comma separated string.
required: true
description: Available metrics for Browser Checks. You can pass multiple metrics as a comma separated string.
name: metrics
in: query
- schema:
type: integer
minimum: 1
maximum: 100
default: 10
description: Limit the number of results
required: false
description: Limit the number of results
name: limit
in: query
- schema:
type: number
default: 1
description: Page number
exclusiveMinimum: 0
required: false
description: Page number
name: page
in: query
- schema:
type: string
format: uuid
description: Your Checkly account ID, you can find it at https://app.checklyhq.com/settings/account/general
required: false
description: Your Checkly account ID, you can find it at https://app.checklyhq.com/settings/account/general
name: x-checkly-account
in: header
/v1/analytics/checks:
post:
summary: Get analytics summary for multiple checks
operationId: postV1AnalyticsChecks
description: 'Returns availability, response times, and latency metrics for the given checks. Response shape is polymorphic per check type: fields are present only when the metric applies to that type. A null value means no data in the requested time range; an absent field means the metric does not apply to that check type.<br><br>Currently only <code>quickRange</code> is supported for time filtering. Arbitrary <code>from</code>/<code>to</code> date ranges are not yet supported but may be added in a future release.<br><br><b>Rate-limiting is applied to this endpoint, you can send 30 requests / 60 seconds at most.<b>'
tags:
- Analytics
responses:
'200':
description: Successful
content:
application/json:
schema:
$ref: '#/components/schemas/AnalyticsBatchResponse'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'429':
description: Too Many Requests
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
parameters:
- schema:
type: string
enum:
- last24Hours
- last7Days
- thisWeek
- lastWeek
- lastMonth
default: last24Hours
description: Time range for analytics.
required: false
description: Time range for analytics.
name: quickRange
in: query
- schema:
type: string
format: uuid
description: Your Checkly account ID, you can find it at https://app.checklyhq.com/settings/account/general
required: false
description: Your Checkly account ID, you can find it at https://app.checklyhq.com/settings/account/general
name: x-checkly-account
in: header
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AnalyticsBatchRequest'
/v1/analytics/dns/{id}:
get:
summary: DNS monitors
operationId: getV1AnalyticsDnsId
description: Fetch detailed availability metrics and aggregated or non-aggregated DNS Monitor metrics across custom time ranges. For example, you can get the p99 and p95 of the total DNS query time together with the availability percentage for any time range.<br><br><b>Rate-limiting is applied to this endpoint, you can send 30 requests / 60 seconds at most.<b>
tags:
- Analytics
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/AnalyticsDnsMonitorResponse'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'429':
description: Too Many Requests
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
parameters:
- schema:
type: string
minLength: 1
format: uuid
required: true
name: id
in: path
- schema:
type: string
format: date
description: Custom start time of reporting window in unix timestamp format. Setting a custom "from" timestamp overrides the use of any "quickRange".
required: false
description: Custom start time of reporting window in unix timestamp format. Setting a custom "from" timestamp overrides the use of any "quickRange".
name: from
in: query
- schema:
type: string
format: date
description: Custom end time of reporting window in unix timestamp format. Setting a custom "to" timestamp overrides the use of any "quickRange".
required: false
description: Custom end time of reporting window in unix timestamp format. Setting a custom "to" timestamp overrides the use of any "quickRange".
name: to
in: query
- schema:
type: string
enum:
- last24Hours
- last7Days
- last30Days
- thisWeek
- thisMonth
- lastWeek
- lastMonth
default: last24Hours
description: Preset reporting windows are used for quickly generating report on commonly used windows. Can be overridden by using a custom "to" and "from" timestamp.
required: false
description: Preset reporting windows are used for quickly generating report on commonly used windows. Can be overridden by using a custom "to" and "from" timestamp.
name: quickRange
in: query
- schema:
type: number
minimum: 1
maximum: 43200
example: 1440
description: The time interval to use for aggregating metrics in minutes. For example, five minutes is 5, 24 hours is 1440.
required: false
description: The time interval to use for aggregating metrics in minutes. For example, five minutes is 5, 24 hours is 1440.
name: aggregationInterval
in: query
- schema:
type: array
items:
type: string
enum:
- success
- failure
example:
- failure
description: Filter based on whether a check result was either failing or passing
required: false
description: Filter based on whether a check result was either failing or passing
name: filterByStatus
in: query
- schema:
type: string
enum:
- runLocation
description: Determines how the series data is grouped. Note that grouped queries are a bit more expensive and might take longer.
required: false
description: Determines how the series data is grouped. Note that grouped queries are a bit more expensive and might take longer.
name: groupBy
in: query
- schema:
type: array
items:
type: string
enum:
- total
- availability
- retries
- total_avg
- total_max
- total_median
- total_min
- total_p50
- total_p90
- total_p95
- total_p99
- total_stddev
- total_sum
description: Available metrics for DNS Monitors. You can pass multiple metrics as a comma separated string.
required: true
description: Available metrics for DNS Monitors. You can pass multiple metrics as a comma separated string.
name: metrics
in: query
- schema:
type: integer
minimum: 1
maximum: 100
default: 10
description: Limit the number of results
required: false
description: Limit the number of results
name: limit
in: query
- schema:
type: number
default: 1
description: Page number
exclusiveMinimum: 0
required: false
description: Page number
name: page
in: query
- schema:
type: string
format: uuid
description: Your Checkly account ID, you can find it at https://app.checklyhq.com/settings/account/general
required: false
description: Your Checkly account ID, you can find it at https://app.checklyhq.com/settings/account/general
name: x-checkly-account
in: header
/v1/analytics/heartbeat-checks/{id}:
get:
summary: Heartbeat checks
operationId: getV1AnalyticsHeartbeatchecksId
description: Fetch detailed availability metrics and aggregated or non-aggregated Heartbeat Check metrics across custom time ranges. <b>Rate-limiting is applied to this endpoint, you can send 30 requests / 60 seconds at most.<b>
tags:
- Analytics
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/AnalyticsHeartbeatCheckResponse'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'429':
description: Too Many Requests
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
parameters:
- schema:
type: string
minLength: 1
format: uuid
required: true
name: id
in: path
- schema:
type: string
format: date
description: Custom start time of reporting window in unix timestamp format. Setting a custom "from" timestamp overrides the use of any "quickRange".
required: false
description: Custom start time of reporting window in unix timestamp format. Setting a custom "from" timestamp overrides the use of any "quickRange".
name: from
in: query
- schema:
type: string
format: date
description: Custom end time of reporting window in unix timestamp format. Setting a custom "to" timestamp overrides the use of any "quickRange".
required: false
description: Custom end time of reporting window in unix timestamp format. Setting a custom "to" timestamp overrides the use of any "quickRange".
name: to
in: query
- schema:
type: string
enum:
- last24Hours
- last7Days
- last30Days
- thisWeek
- thisMonth
- lastWeek
- lastMonth
default: last24Hours
description: Preset reporting windows are used for quickly generating report on commonly used windows. Can be overridden by using a custom "to" and "from" timestamp.
required: false
description: Preset reporting windows are used for quickly generating report on commonly used windows. Can be overridden by using a custom "to" and "from" timestamp.
name: quickRange
in: query
- schema:
type: array
items:
type: string
enum:
- FAILING
- EARLY
- RECEIVED
- GRACE
- LATE
example:
- FAILING
description: Filter based on whether a heartbeat request was late, early, etc.
required: false
description: Filter based on whether a heartbeat request was late, early, etc.
name: filterByStatus
in: query
- schema:
type: array
items:
type: string
enum:
- availability
- retries
default:
- availability
description: Available metrics for Heartbeat Checks. You can pass multiple metrics as a comma separated string.
required: true
description: Available metrics for Heartbeat Checks. You can pass multiple metrics as a comma separated string.
name: metrics
in: query
- schema:
type: integer
minimum: 1
maximum: 100
default: 10
description: Limit the number of results
required: false
description: Limit the number of results
name: limit
in: query
- schema:
type: number
default: 1
description: Page number
exclusiveMinimum: 0
required: false
description: Page number
name: page
in: query
- schema:
type: string
format: uuid
description: Your Checkly account ID, you can find it at https://app.checklyhq.com/settings/account/general
required: false
description: Your Checkly account ID, you can find it at https://app.checklyhq.com/settings/account/general
name: x-checkly-account
in: header
/v1/analytics/icmp/{id}:
get:
summary: ICMP monitors
operationId: getV1AnalyticsIcmpId
description: Fetch detailed availability metrics and aggregated or non-aggregated ICMP Monitor metrics across custom time ranges. For example, you can get the p99 and p95 of latency metrics together with the packet loss percentage for any time range.<br><br><b>Rate-limiting is applied to this endpoint, you can send 30 requests / 60 seconds at most.<b>
tags:
- Analytics
responses:
'200':
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/AnalyticsIcmpMonitorResponse'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'429':
description: Too Many Requests
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
parameters:
- schema:
type: string
minLength: 1
format: uuid
required: true
name: id
in: path
- schema:
type: string
format: date
description: Custom start time of reporting window in unix timestamp format. Setting a custom "from" timestamp overrides the use of any "quickRange".
required: false
description: Cu
# --- truncated at 32 KB (132 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/checkly/refs/heads/main/openapi/checkly-analytics-api-openapi.yml