---
title: "Retrieve a check session"
method: GET
path: "/v2/check-sessions/{checkSessionId}"
tags: ["Check sessions"]
---

# Retrieve a check session

`GET /v2/check-sessions/{checkSessionId}`

Retrieves a check session. Results may be incomplete if the check session is still in progress.

Once a check session has finished, results will include at least one check result for each run location: one result with `resultType` equal to `"FINAL"`, and zero or more results with `resultType` equal to `"ATTEMPT"` (one for each failed attempt, if any).

Each result contains just enough information to quickly determine whether the check run was successful or not. To dive even deeper into individual results, use the `GET /v1/check-results/{checkId}/{checkResultId}` endpoint to retrieve detailed data about a specific result.

The `status` field may return `CANCELLED` for sessions cancelled via `POST /v1/check-sessions/{checkSessionId}/cancel`, and each per-result object includes an `isCancelled` boolean.

## Path parameters

- `checkSessionId` string, uuid, required — Check session ID.

## Headers

- `x-checkly-account` string, uuid — Your Checkly account ID, you can find it at https://app.checklyhq.com/settings/account/general

## Response `200`

Successful

- CheckSessionsV2FindOneResponse
  - `checkSessionId` string, uuid, required
  - `checkSessionLink` string, uri, required
  - `checkId` string, uuid, required
  - `checkType` 'AGENTIC' | 'API' | 'BROWSER' | 'HEARTBEAT' | 'ICMP' | 'MULTI_STEP' | 'TCP' | 'PLAYWRIGHT' | 'URL' | 'DNS' | 'SSL' | 'GRPC' | 'TRACEROUTE', required
  - `name` string
  - `status` 'STARTED' | 'PROGRESS' | 'FAILED' | 'PASSED' | 'DEGRADED' | 'PROGRESS_FAILED' | 'PROGRESS_DEGRADED' | 'TIMED_OUT' | 'CANCELLED', required
  - `startedAt` string, date-time, required
  - `stoppedAt` string, date-time, nullable, required
  - `timeElapsed` number, required
  - `runLocations` string[], required
  - `runSource` 'CLI_DEPLOY' | 'DEPLOYMENT' | 'DEPLOYMENT_CACHE_WARMER' | 'EDITOR' | 'GROUP_RUN_ALL' | 'LEGACY_TRIGGER' | 'SCHEDULER' | 'SCHEDULE_NOW' | 'TEST_NO_RECORD' | 'TEST_RECORD' | 'TRIGGER_NO_RECORD' | 'TRIGGER_RECORD' | 'TRIGGER_API' | 'null', nullable, required
  - `results` CheckSessionsV2CheckResult[], required
    - `checkResultId` string, uuid, required
    - `checkResultLink` string, uri, required
    - `checkId` string, uuid, required
    - `checkType` 'AGENTIC' | 'API' | 'BROWSER' | 'HEARTBEAT' | 'ICMP' | 'MULTI_STEP' | 'TCP' | 'PLAYWRIGHT' | 'URL' | 'DNS' | 'SSL' | 'GRPC' | 'TRACEROUTE', required
    - `name` string, required
    - `runLocation` string, required
    - `resultType` 'FINAL' | 'ATTEMPT' | 'null', nullable, required
    - `hasErrors` boolean, required
    - `hasFailures` boolean, required
    - `isDegraded` boolean, required
    - `aborted` boolean, required
    - `isCancelled` boolean, required
    - `responseTime` number, nullable — 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` string, date-time, nullable — When the check run started.
    - `stoppedAt` string, date-time, nullable — When the check run finished. Subtract `startedAt` for the total wall-clock duration of the run.

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `403` — Forbidden
- `404` — Not Found
- `429` — Too Many Requests

---

[API](https://skmtc.net/checklyhq/apis/checkly-public-api.md) · [All operations](https://skmtc.net/checklyhq/apis/checkly-public-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/checklyhq/checkly-public-api/revisions/9e903da4f3da/schema)
