openapi: 3.2.0
info:
title: Checkly Public Test sessions API
version: v1
description: These are the docs for the newly released Checkly Public API.
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: Test sessions
paths:
/v1/test-sessions:
get:
summary: List test sessions
operationId: getV1Testsessions
description: Retrieves test sessions for the selected account. Use the optional query parameters to filter by creation time, status, branch, user, provider, text, or error group.
tags:
- Test sessions
responses:
'200':
description: Successful
content:
application/json:
schema:
$ref: '#/components/schemas/ListTestSessionsResponse'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'402':
description: Payment Required
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: number
description: Only include test sessions created at or after this Unix timestamp.
required: false
description: Only include test sessions created at or after this Unix timestamp.
name: from
in: query
- schema:
type: number
description: Only include test sessions created before this Unix timestamp.
required: false
description: Only include test sessions created before this Unix timestamp.
name: to
in: query
- schema:
type:
- integer
- 'null'
maximum: 100
default: 20
description: Maximum number of test sessions to return.
required: false
description: Maximum number of test sessions to return.
name: limit
in: query
- schema:
type: array
items:
type: string
enum:
- RUNNING
- FAILED
- PASSED
- CANCELLED
default:
- FAILED
- PASSED
- RUNNING
- CANCELLED
description: Filter by test session status.
required: false
description: Filter by test session status.
name: statuses
in: query
- schema:
type: array
items:
type: string
default: []
description: Filter by Git branch name.
required: false
description: Filter by Git branch name.
name: branches
in: query
- schema:
type: array
items:
type: string
default: []
description: Filter by commit owner or invoking user ID.
required: false
description: Filter by commit owner or invoking user ID.
name: users
in: query
- schema:
type: array
items:
type: string
enum:
- GITHUB
- VERCEL
- API
- TRIGGER
- PW_REPORTER
default: []
description: Filter by test session provider.
required: false
description: Filter by test session provider.
name: providers
in: query
- schema:
type: boolean
default: false
description: Include sessions with no commit owner and no invoking user.
required: false
description: Include sessions with no commit owner and no invoking user.
name: noUsers
in: query
- schema:
type: string
minLength: 1
description: Opaque cursor returned from a previous list response.
required: false
description: Opaque cursor returned from a previous list response.
name: nextId
in: query
- schema:
type: string
minLength: 3
maxLength: 200
description: Search test session text fields.
required: false
description: Search test session text fields.
name: textSearch
in: query
- schema:
type:
- string
- 'null'
minLength: 1
description: Filter by test-session error group ID.
required: false
description: Filter by test-session error group ID.
name: errorGroupId
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/test-sessions/trigger:
post:
summary: Trigger a new test session
operationId: postV1TestsessionsTrigger
description: 'Starts a tests session with checks matching the provided target filters. If no filters are given, matches all eligible checks.
This endpoint does not wait for the test session to complete. Use the `GET /v1/test-sessions/{testSessionId}/completion` or `GET /v1/test-sessions/{testSessionId}` endpoints to track progress if needed.
Test sessions do not produce alerts.
Equivalent to the `npx checkly trigger` command of the Checkly CLI.'
tags:
- Test sessions
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/TriggerTestSessionResponse'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
'402':
description: Payment Required
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
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/TriggerTestSessionRequest'
/v1/test-sessions/{testSessionId}:
get:
summary: Retrieve a test session
operationId: getV1TestsessionsTestsessionid
description: Retrieves a test session. Note that the returned data may be incomplete if the test session is still in progress.
tags:
- Test sessions
responses:
'200':
description: Successful
content:
application/json:
schema:
$ref: '#/components/schemas/FindOneTestSessionResponse'
'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
format: uuid
description: Test session ID.
required: true
description: Test session ID.
name: testSessionId
in: path
- 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/test-sessions/{testSessionId}/cancel:
post:
summary: Cancel a test session
operationId: postV1TestsessionsTestsessionidCancel
description: 'Cancels in-progress Playwright runs within the specified test session. Use the optional `sequenceId` field in the request body to cancel only specific results within the session; omit it to cancel everything still running.
Returns `204 No Content` once the cancellation requests have been dispatched. Returns `404 Not Found` if the test session does not exist.'
tags:
- Test sessions
responses:
'204':
description: Cancellation accepted.
'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
format: uuid
description: Test session ID.
required: true
description: Test session ID.
name: testSessionId
in: path
- 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/TestSessionsV1CancelRequest'
/v1/test-sessions/{testSessionId}/completion:
get:
summary: Await the completion of a test session
operationId: getV1TestsessionsTestsessionidCompletion
description: 'Call this endpoint to await the completion of a test session. A successful response code will be returned once the test session reaches its final state (i.e. when it passes or fails).
If the test session takes a long time to complete, the endpoint will return a timeout error code. You should keep calling the endpoint until you receive a successful response, or a non-timeout related error code. If using *curl*, its `--retry` option is suitable.
The successful response of this endpoint is equivalent to the `GET /v1/test-sessions/{testSessionId}` endpoint''s response for a completed test session.'
tags:
- Test sessions
responses:
'200':
description: Successful
content:
application/json:
schema:
$ref: '#/components/schemas/AwaitTestSessionCompletionResponse'
'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'
'408':
description: Request Timeout
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
format: uuid
description: Test session ID.
required: true
description: Test session ID.
name: testSessionId
in: path
- schema:
type: number
minimum: 1
maximum: 30
description: Maximum time to wait for completion before returning a retryable timeout response.
required: false
description: Maximum time to wait for completion before returning a retryable timeout response.
name: maxWaitSeconds
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/test-sessions/{testSessionId}/results/{testSessionResultId}:
get:
summary: Retrieve a test session result
operationId: getV1TestsessionsTestsessionidResultsTestsessionresultid
description: Retrieves detailed data for a single result within a test session, including check-type details and uploaded asset references when available.
tags:
- Test sessions
responses:
'200':
description: Successful
content:
application/json:
schema:
$ref: '#/components/schemas/FindOneTestSessionResultResponse'
'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
format: uuid
description: Test session ID.
required: true
description: Test session ID.
name: testSessionId
in: path
- schema:
type: string
format: uuid
description: Test session result ID.
required: true
description: Test session result ID.
name: testSessionResultId
in: path
- 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/test-sessions/{testSessionId}/results/{testSessionResultId}/assets:
get:
summary: Retrieve a normalized asset manifest for a test-session result
operationId: getV1TestsessionsTestsessionidResultsTestsessionresultidAssets
description: Returns a normalized manifest of downloadable assets for the test-session result.
tags:
- Test sessions
responses:
'200':
description: Successful
content:
application/json:
schema:
$ref: '#/components/schemas/AssetManifest'
'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
format: uuid
description: Test session ID.
required: true
description: Test session ID.
name: testSessionId
in: path
- schema:
type: string
format: uuid
description: Test session result ID.
required: true
description: Test session result ID.
name: testSessionResultId
in: path
- schema:
type: array
items:
type: string
enum:
- log
- trace
- video
- screenshot
- pcap
- report
- file
description: Filter assets by normalized asset type. Repeat the query parameter to include multiple types.
required: false
description: Filter assets by normalized asset type. Repeat the query parameter to include multiple types.
name: type
in: query
- schema:
type: string
maxLength: 200
description: Glob pattern matched case-insensitively against the asset name and archive entry path. Empty patterns are ignored.
required: false
description: Glob pattern matched case-insensitively against the asset name and archive entry path. Empty patterns are ignored.
name: name
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
components:
schemas:
TestSessionEnvironmentVariable:
anyOf:
- type: object
properties:
key:
type: string
minLength: 1
locked:
type: boolean
default: false
value: {}
secret:
type: boolean
enum:
- true
required:
- key
- value
- secret
- type: object
properties:
key:
type: string
minLength: 1
locked:
type: boolean
default: false
value:
type:
- string
- 'null'
minLength: 1
secret:
type: boolean
enum:
- false
default: false
required:
- key
- value
TestSessionApiResultDetails:
type:
- object
- 'null'
properties:
assertions:
type:
- array
- 'null'
items:
type: object
properties: {}
additionalProperties: {}
request:
type: object
properties: {}
additionalProperties: {}
response:
type: object
properties: {}
additionalProperties: {}
requestError:
type:
- string
- 'null'
jobLog:
description: Check run log output, when an uploaded log asset is available.
jobAssets:
type:
- array
- 'null'
items:
type: string
description: Asset URLs generated from the test-session result.
pcapDataUrl:
type:
- string
- 'null'
description: Packet capture data if available as a redirect/download URL.
additionalProperties: {}
TestSessionListEntryInvoker:
type:
- object
- 'null'
properties:
name:
type: string
picture:
type:
- string
- 'null'
required:
- name
TestSessionGitHubMetadata:
type: object
properties:
reporting:
type: boolean
repository:
type:
- string
- 'null'
sha:
type:
- string
- 'null'
runId:
type:
- string
- 'null'
runAttempt:
type:
- string
- 'null'
workflow:
type:
- string
- 'null'
job:
type:
- string
- 'null'
eventName:
type:
- string
- 'null'
ref:
type:
- string
- 'null'
headRef:
type:
- string
- 'null'
baseRef:
type:
- string
- 'null'
serverUrl:
type:
- string
- 'null'
required:
- reporting
ListTestSessionsResponse:
type: object
properties:
length:
type: integer
minimum: 0
entries:
type: array
items:
$ref: '#/components/schemas/TestSessionListEntry'
nextId:
type:
- string
- 'null'
required:
- length
- entries
TestSessionMetadata:
type: object
properties:
environment:
type: string
minLength: 1
description: A short description for the testing environment.
repoUrl:
type:
- string
- 'null'
commitId:
type:
- string
- 'null'
commitOwner:
type:
- string
- 'null'
commitMessage:
type:
- string
- 'null'
branchName:
type:
- string
- 'null'
github:
$ref: '#/components/schemas/TestSessionGitHubMetadata'
TestSessionResult:
type: object
properties:
testSessionResultId:
type: string
format: uuid
testSessionResultLink:
type: string
format: uri
checkId:
type:
- string
- 'null'
format: uuid
checkType:
type: string
enum:
- AGENTIC
- API
- BROWSER
- HEARTBEAT
- ICMP
- MULTI_STEP
- TCP
- PLAYWRIGHT
- URL
- DNS
- SSL
- GRPC
- TRACEROUTE
name:
type: string
runLocation:
type: string
errorGroupIds:
type: array
items:
type: string
format: uuid
description: IDs of the test-session error groups associated with this result.
resultType:
type: string
enum:
- FINAL
- ATTEMPT
- PENDING
status:
type: string
enum:
- RUNNING
- FAILED
- PASSED
- CANCELLED
hasErrors:
type: boolean
hasFailures:
type: boolean
isDegraded:
type: boolean
aborted:
type: boolean
responseTime:
type:
- number
- 'null'
description: 'Time the check spent producing its result, in milliseconds. For protocol checks this is the measured operation time (a subset of the run): request time for API and URL checks, connection time for TCP, resolution time for DNS, average latency for ICMP and TRACEROUTE, request timing for GRPC, and TLS handshake time for SSL. For browser, multi-step, Playwright and agentic checks it is the run wall-clock duration. Null until the check has finished. For the total wall-clock time a check run took, use `stoppedAt` - `startedAt`.'
startedAt:
type:
- string
- 'null'
format: date-time
description: When the check run started. Null until the check has started.
stoppedAt:
type:
- string
- 'null'
format: date-time
description: When the check run finished. Subtract `startedAt` for the total wall-clock duration of the run. Null until the check has finished.
required:
- testSessionResultId
- testSessionResultLink
- checkType
- errorGroupIds
- status
- hasErrors
- hasFailures
- isDegraded
- aborted
ApiError:
type: object
properties:
statusCode:
type: number
error:
type: string
message:
type: string
required:
- statusCode
- error
- message
TestSessionBrowserResultDetails:
type:
- object
- 'null'
properties:
type:
type: string
traceSummary:
type: object
properties: {}
additionalProperties: {}
pages:
type: array
items:
type: object
properties: {}
additionalProperties: {}
errors:
type: array
items: {}
endTime:
type: number
startTime:
type: number
runtimeVersion:
type: string
jobLog:
description: Check run log output, when an uploaded log asset is available.
jobAssets:
type:
- array
- 'null'
items:
type: string
description: Asset URLs generated from the test-session result.
pcapDataUrl:
type:
- string
- 'null'
description: Packet capture data if available as a redirect/download URL.
playwrightTestVideos:
type: array
items:
type: string
description: Signed URLs for Playwright test videos.
playwrightTestTraces:
type: array
items:
type: string
description: Signed URLs for Playwright test traces.
playwrightTestJsonReportFile:
type: string
description: Signed URL for the Playwright JSON report.
additionalProperties: {}
TriggerTestSessionResponse:
type: object
properties:
testSessionId:
type: string
format: uuid
testSessionLink:
type: string
format: uri
name:
type: string
status:
type: string
enum:
- RUNNING
- FAILED
- PASSED
- CANCELLED
errorGroupIds:
type: array
items:
type: string
format: uuid
description: IDs of the test-session error groups observed in this test session.
startedAt:
type: string
format: date-time
stoppedAt:
type:
- string
- 'null'
format: date-time
timeElapsed:
type: number
metadata:
$ref: '#/components/schemas/TestSessionMetadata'
results:
type: array
items:
$ref: '#/components/schemas/TestSessionResult'
required:
- testSessionId
- testSessionLink
- name
- status
- errorGroupIds
- startedAt
- timeElapsed
AssetManifestEntry:
type: object
properties:
type:
type: string
enum:
- log
- trace
- video
- screenshot
- pcap
- report
- file
description: Normalized asset type.
name:
type: string
minLength: 1
description: Display/download name for the asset.
url:
type: string
format: uri
description: Authenticated API URL for downloading or redirecting to the asset.
contentType:
type: string
minLength: 1
description: Best-effort content type inferred from the asset metadata.
source:
type: object
properties:
type:
type: string
enum:
- check-result
- test-session-result
description: Result endpoint scope that produced this asset entry.
checkId:
type: string
format: uuid
description: Check ID associated with this asset.
checkName:
type: string
minLength: 1
description: Check name associated with this asset.
checkType:
type: string
minLength: 1
description: Check type associated with this asset.
resultId:
type: string
format: uuid
description: Result ID associated with this asset.
testSessionId:
type: string
format: uuid
description: Test session ID associated with this asset.
required:
- type
description: Stable source identifiers for correlating the asset to checks and results.
archive:
type: object
properties:
entryName:
type: string
minLength: 1
description: File path inside the downloadable archive.
required:
- entryName
description: Present when the asset is an entry inside a ZIP archive.
required:
- type
- name
- url
- source
TestSessionsV1CancelRequest:
type: object
properties:
sequenceId:
type: array
items:
type: string
format: uuid
minItems: 1
description: Subset of sequence IDs to cancel. Omit to cancel all in-progress sequences.
additionalProperties: false
TestSessionAgenticResultDetails:
type:
- object
- 'null'
properties:
summary:
type:
- string
- 'null'
prompt:
type:
- string
- 'null'
assertions:
type:
- array
- 'null'
items:
type: object
properties: {}
additionalProperties: {}
suggestions:
type:
- array
- 'null'
items:
type: object
properties: {}
additionalProperties: {}
steps:
type:
- array
- 'null'
items:
type: object
properties: {}
additionalProperties: {}
errors:
type:
- array
- 'null'
items: {}
artifactManifest:
type:
- object
- 'null'
properties: {}
additionalProperties: {}
jobLog:
description: Check run log output, when an uploaded log asset is available.
jobAssets:
type:
- array
- 'null'
items:
type: string
description: Asset URLs generated from the test-session result.
pcapDataUrl:
type:
- string
- 'null'
description: Packet capture data if available as a redirect/download URL.
additionalProperties: {}
TestSessionMultiStepResultDetails:
type:
- object
- 'null'
properties:
errors:
type: array
items: {}
endTime:
type: number
startTime:
type: number
runtimeVersion:
type: string
jobLog:
description: Check run log output, when an uploaded log asset is available.
jobAssets:
type:
- array
- 'null'
items:
type: string
description: Asset URLs generated from the test-session result.
pcapDataUrl:
type:
- string
- 'null'
description: Packet capture data if available as a redirect/download URL.
playwrightTestVideos:
type: array
items:
type: string
description: Signed URLs for Playwright test videos.
playwrightTestTraces:
type: array
items:
type: string
description: Signed URLs for Playwright test traces.
playwrightTestJsonReportFile:
type: string
description: Signed URL for the Playwright JSON report.
additionalProperties: {}
AssetManifest:
type: object
properties:
assets:
type: array
items:
$ref: '#/components/schemas/AssetManifestEntry'
description: Normalized assets for the result.
truncated:
type: boolean
description: Whether the manifest omitted entries because the stored archive entry list exceeded the endpoint cap.
entriesReturned:
type: integer
minimum: 0
description: Number of archive entries represented in the response when the manifest is truncated.
entriesTotal:
type: integer
minimum: 0
description: Total number of manifestable archive entries found in storage when the manifest is truncated.
required:
- assets
TriggerTestSessionRequest:
type: object
properties:
name:
type: string
minLength: 1
description: The name of the test session.
runLocation:
type: string
minLength: 1
description: A public region code or private location slug name.
target:
type: object
properties:
matchTags:
type: array
items:
type: array
items:
type: string
minLength: 1
description: Tags used to select checks to trigger. Each nested array is matched as one tag group.
checkId:
type: array
items:
type: string
format: uuid
description: Check ID or list of check IDs to trigger.
allowDeactivated:
type: boolean
default: false
description: Allow deactivated checks to match.
environmentVariables:
type: array
items:
$ref: '#/components/schemas/TestSessionEnvironmentVariable'
maxItems: 50
retryStrategy:
anyOf:
- type: object
properties:
baseBackoffSeconds:
type: number
default: 60
sameRegion:
type: boolean
default: true
onlyOn:
type: array
items:
type: string
enum:
- NETWORK_ERROR
type:
type: string
enum:
- FIXED
- LINEAR
- EXPONENTIAL
maxRetries:
type: number
minimum: 1
maximum: 10
default: 2
maxDurationSeconds:
type: number
minimum: 0
maximum: 600
default: 600
required:
- type
- type: object
properties:
baseBackoffSeconds:
type: number
default: 60
sameRegion:
type: boolean
default: true
onlyOn:
type: array
items:
type: string
enum:
- NETWORK_ERROR
type:
type: string
enum:
- SINGLE_RETRY
required:
- type
- {}
refreshCache:
type: boolean
default: false
description: Skip existing caches and install dependencies from scratch.
metadata:
$ref: '#/components/schemas/TestSessionMetadata'
required:
- name
- runLocation
FindOneTestSessionResultResponse:
type: object
properties:
testSessionResultId:
type: string
format: uuid
testSessionResultLink:
type: string
format: uri
checkId:
type:
- string
- 'null'
format: uuid
checkType:
type: string
enum:
- AGENTIC
- API
- BROWSER
- HEARTBEAT
- ICMP
- MULTI_STEP
- TCP
- PLAYWRIGHT
- URL
- DNS
- SSL
- GRPC
- TRACEROUTE
name:
type: string
runLocation:
type: string
errorGroupIds:
type: array
items:
type: string
format: uuid
description: IDs of the test-session error groups associated with this result.
resultType:
type: string
enum:
- FINAL
- ATTEMPT
- PENDING
status:
type: string
enum:
- RUNNING
- FAILED
- PASSED
- CANCELLED
hasErrors:
type: boolean
hasFailures:
type: boolean
isDegraded:
type: boolean
aborted:
type: boolean
responseTime:
type:
- number
- 'null'
description: 'Time the check spent producing its result, in milliseconds. For protocol checks this is the measured operation time (a subset of the run): request time for API and URL checks, connection time for TCP, resolution time for DNS, average latency for ICMP and TRACEROUTE, request timing for GRPC, and TLS handshake time for SSL. For browser, multi-step, Playwright and agentic checks it is the run wall-clock duration. Null until the check has finished. For the total wall-clock time a check run took, use `stoppedAt` - `startedAt`.'
startedAt:
type:
- string
- 'null'
format: date-time
description: When the check run started. Null until the check has started.
stoppedAt:
type:
- string
- 'null'
format: date-time
description: When the check run finished. Subtract `startedAt` for the total wall-clock duration of the run. Null until the check has finished.
id:
type: string
format: uuid
description: Alias of testSessionResultId for check-result detail response parity.
privateLocationId:
type:
- string
- 'null'
format: uuid
filePath:
type:
- string
- 'null'
isCancelled:
type: boolean
overMaxResponseTime:
type: boolean
attempts:
type: integer
minimum: 0
sequenceId:
type:
- string
- 'null'
format: uuid
scheduleError:
type:
- string
- 'null'
traceId:
type:
- string
- 'null'
created_at:
type: string
format: date-time
updated_at:
type:
- string
- 'null'
format: date-time
apiCheckResult:
$ref: '#/components/schemas/TestSessionApiResultDetails'
browserCheckResult:
$ref: '#/components/schemas/TestSessionBrowserResultDetails'
multiStepCheckResult:
$ref: '#/components/schemas/TestSessionMultiStepResultDetails'
playwrightCheckResult:
$ref: '#/components/schemas/TestSessionPlaywrightResultDetails'
agenticCheckResult:
$ref: '#/components/schemas/TestSessionAgenticResultDetails'
required:
- testSessionResultId
- testSessionResultLink
- checkType
- errorGroupIds
- status
- hasErrors
- hasFailures
- isDegraded
- aborted
- id
- isCancelled
- overMaxResponseTime
- attempts
- traceId
- created_at
TestSessionPlaywrightResultDetails:
type:
- object
- 'null'
properties:
errors:
type:
- array
- 'null'
items: {}
playwrightTraceFiles:
type:
- array
- 'null'
items:
type: object
properties: {}
additionalProperties: {}
jobLog:
description: Check run log output, when an uploaded log asset is available.
jobAssets:
type:
- array
- 'null'
items:
type: string
description: Asset URLs generated from the test-session result.
pcapDataUrl:
type:
- string
- 'null'
description: Packet capture data if available as a redirect/download URL.
playwrightTestVideos:
type: array
items:
type: string
description: Signed URLs for Playwright test videos.
playwrightTestTraces:
type: array
items:
type: string
description: Signed URLs for Playwright test traces.
playwrightTestJsonReportFile:
type: string
description: Signed URL for the Playwright JSON report.
additionalProperties: {}
FindOneTestSessionResponse:
type: object
properties:
testSessionId:
type: string
format: uuid
testSessionLink:
type: string
format: uri
name:
type: string
status:
type: string
enum:
- RUNNING
- FAILED
- PASSED
- CANCELLED
errorGroupIds:
type: array
items:
type: string
format: uuid
description: IDs of the test-session error groups observed in this test session.
startedAt:
type: string
format: date-time
stoppedAt:
type:
- string
- 'null'
format: date-time
timeElapsed:
type: number
metadata:
$ref: '#/components/schemas/TestSessionMetadata'
results:
type: array
items:
$ref: '#/components/schemas/TestSessionResult'
required:
- testSessionId
- testSessionLink
- name
- status
- errorGroupIds
- startedAt
- timeElapsed
TestSessionListEntry:
type: object
properties:
id:
type: string
format: uuid
accountId:
type: string
format: uuid
projectId:
type:
- string
- 'null'
format: uuid
name:
type: string
provider:
type: string
errorGroupIds:
type:
- array
- 'null'
items:
type: string
format: uuid
description: IDs of the test-session error groups observed in this session. Pass one as `errorGroupId` (with type `test-session-error-group`) to get-error-group-root-cause-analyses or trigger-root-cause-analysis. This is the field that bridges a listed session to a root cause analysis.
running:
type:
- array
- 'null'
items:
type: string
format: uuid
description: Result sequence IDs (`sequenceId`) of in-progress results — not result IDs and not error-group IDs.
passed:
type:
- array
- 'null'
items:
type: string
format: uuid
description: Result sequence IDs (`sequenceId`) of passed results — not result IDs and not error-group IDs.
failed:
type:
- array
- 'null'
items:
type: string
format: uuid
description: Result sequence IDs (`sequenceId`) of failed results — NOT test-session result IDs and NOT error-group IDs. To act on a failed result, call get-test-session to enumerate its results (each with a `testSessionResultId` and `errorGroupIds`).
cancelled:
type: array
items:
type: string
format: uuid
default: []
description: Result sequence IDs (`sequenceId`) of cancelled results — not result IDs and not error-group IDs.
status:
type: string
enum:
- RUNNING
- FAILED
- PASSED
- CANCELLED
region:
type: string
privateLocationId:
type:
- string
- 'null'
format: uuid
invoker:
$ref: '#/components/schemas/TestSessionListEntryInvoker'
repoUrl:
type:
- string
- 'null'
commitId:
type:
- string
- 'null'
commitOwner:
type:
- string
- 'null'
commitMessage:
type:
- string
- 'null'
branchName:
type:
- string
- 'null'
environment:
type:
- string
- 'null'
startedAt:
type: string
format: date-time
stoppedAt:
type:
- string
- 'null'
format: date-time
created_at:
type: string
format: date-time
updated_at:
type:
- string
- 'null'
format: date-time
required:
- id
- accountId
- name
- provider
- region
- startedAt
- created_at
AwaitTestSessionCompletionResponse:
type: object
properties:
testSessionId:
type: string
format: uuid
testSessionLink:
type: string
format: uri
name:
type: string
status:
type: string
enum:
- FAILED
- PASSED
- CANCELLED
errorGroupIds:
type: array
items:
type: string
format: uuid
description: IDs of the test-session error groups observed in this test session.
startedAt:
type: string
format: date-time
stoppedAt:
type: string
format: date-time
timeElapsed:
type: number
metadata:
$ref: '#/components/schemas/TestSessionMetadata'
results:
type: array
items:
$ref: '#/components/schemas/TestSessionResult'
required:
- testSessionId
- testSessionLink
- name
- status
- errorGroupIds
- startedAt
- stoppedAt
- timeElapsed
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 here.Your API key is like a password:
keep it secure!Authentication to the API is performed using the Bearer auth method in the Authorization header and using the account ID.For example, set Authorization header while using cURL: curl -H "Authorization: Bearer [apiKey]" "X-Checkly-Account: [accountId]"'