v2

latestOpenAPI 3.0.02026-07-261859071.2 MB
Check results

Retrieve a check result

Show details of a specific check result.

get/v1/check-results/{checkId}/{checkResultId}

Path parameters

checkIdstring required
checkResultIdstring required

Headers

x-checkly-accountstring

Your Checkly account ID, you can find it at https://app.checklyhq.com/settings/account/general

Your Checkly account ID, you can find it at https://app.checklyhq.com/settings/account/general

Response

Successful

idstring

The unique ID of this result.

namestring

The name of the check.

checkIdstring

The ID of the check.

hasFailuresboolean

Describes if any failure has occurred during this check run. This should be your main focus for assessing API or browser check behaviour. Assertions that fail, timeouts or failing scripts all resolve to this value being true.

hasErrorsboolean

Describes if an internal error has occurred in Checkly's backend. This should be false in almost all cases.

isDegradedboolean nullable

A check is degraded if it is over the degradation limit set by the "degradedResponseTime" field on the check. Applies only to API checks.

isCancelledboolean

Whether the run was cancelled before completion.

overMaxResponseTimeboolean nullable

Set to true if the response time is over the limit set by the "maxResponseTime" field on the check. Applies only to API checks.

runLocationstring

What data center location this check result originated from.

startedAtstring date-time nullable
stoppedAtstring date-time nullable
created_atstring date-time
responseTimenumber

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. Any setup or system time before the check starts executing is not included.

checkRunIdnumber

The id of the specific check run that created this check result.

attemptsnumber

How often this check was retried. This will be larger than 0 when double checking is enabled.

resultType'FINAL' | 'ATTEMPT' | 'ALL' required

The type of result. FINAL means this is the final result of the check run. ATTEMPT means this is a result of a double check attempt.

sequenceIdstring nullable

The sequence ID of the check run. This is used to group check runs with multiple attempts together.

traceIdstring nullable required

OpenTelemetry trace ID associated with this check result. null when no trace was recorded for this run (e.g. tracing not enabled in the runner).

errorGroupIdsstring[] nullable

IDs of the error groups associated with this check result. Always an array: empty when the result has no associated error groups, single-element when there is one (typical for API/URL/TCP/ICMP checks), or multi-element for Playwright and multistep checks that can produce multiple distinct errors per run. Use these IDs to fetch the corresponding error group via the error-groups endpoint.

Example response

{
  "apiCheckResult": {
    "assertions": [
      {
        "source": "STATUS_CODE",
        "target": 200
      }
    ],
    "request": {
      "method": "GET",
      "url": "https://api.checklyhq.com"
    },
    "response": {
      "status": 200,
      "statusText": "OK",
      "body": "<title> Checkly Public API </title>"
    }
  },
  "browserCheckResult": {
    "type": "PLAYWRIGHT",
    "pages": [
      {
        "url": "https://www.checklyhq.com/",
        "webVitals": {
          "CLS": {
            "score": "GOOD",
            "value": 0.000146484375
          }
        }
      }
    ],
    "playwrightTestVideos": [
      "https://api.checklyhq.com/v1/assets/checkRunData/eu-central-1/00000000-0000-0000-0000-0000000000/00000000-0000-0000-0000-0000000000/1675691025832/visit-page-and-take-screenshot-1675691043856.webm"
    ],
    "errors": [],
    "endTime": 1648573423995,
    "startTime": 1648573423994,
    "runtimeVersion": "2023.09",
    "playwrightTestTraces": [
      "https://api.checklyhq.com/v1/assets/checkRunData/eu-central-1/00000000-0000-0000-0000-0000000000/00000000-0000-0000-0000-0000000000/1675691025832/visit-page-and-take-screenshot.zip"
    ],
    "playwrightTestJsonReportFile": "https://api.checklyhq.com/v1/assets/checkRunData/eu-central-1/00000000-0000-0000-0000-0000000000/00000000-0000-0000-0000-0000000000/1675691025832/report.json"
  },
  "multiStepCheckResult": {
    "errors": [],
    "endTime": 1648573423995,
    "startTime": 1648573423994,
    "runtimeVersion": "2023.09",
    "playwrightTestTraces": [
      "https://api.checklyhq.com/v1/assets/checkRunData/eu-central-1/00000000-0000-0000-0000-0000000000/00000000-0000-0000-0000-0000000000/1675691025832/visit-page-and-take-screenshot.zip"
    ],
    "playwrightTestJsonReportFile": "https://api.checklyhq.com/v1/assets/checkRunData/eu-central-1/00000000-0000-0000-0000-0000000000/00000000-0000-0000-0000-0000000000/1675691025832/report.json"
  },
  "agenticCheckResult": {
    "summary": "The homepage loaded correctly and all assertions passed.",
    "assertions": [
      {
        "condition": "The homepage returns an HTTP 200 status",
        "passed": true,
        "actual": "200",
        "expected": "200"
      }
    ],
    "suggestions": [
      {
        "summary": "Monitor the checkout flow end-to-end",
        "prompt": "Sign in and verify the checkout page loads",
        "promptReplacement": "Sign in with {{TEST_USER_EMAIL}} and verify the checkout page loads",
        "secrets": [
          "TEST_USER_EMAIL",
          "TEST_USER_PASSWORD"
        ],
        "category": "credentials"
      }
    ],
    "steps": [
      {
        "type": "tool_call",
        "name": "http_request",
        "timestamp": "2026-04-06T14:15:22.000Z",
        "sequenceNumber": 3
      }
    ]
  },
  "tracerouteCheckResult": {
    "totalHops": 12,
    "finalHopLatency": {
      "avgMs": 24.1,
      "bestMs": 22,
      "worstMs": 31.4
    },
    "response": {
      "hostname": "api.checklyhq.com",
      "resolvedIp": "104.18.7.36",
      "totalHops": 12,
      "truncationReason": "max-hops",
      "protocol": "TCP",
      "probeProtocol": "TCP"
    }
  },
  "grpcCheckResult": {
    "grpcStatusCode": 14,
    "healthStatus": 2,
    "timingPhases": {
      "dns": 1.2,
      "connect": 16.8,
      "total": 90
    },
    "response": {
      "grpcMode": "BEHAVIOR",
      "host": "grpc.example.com",
      "resolvedIp": "10.0.0.4",
      "port": 443,
      "grpcMethod": "grpc.health.v1.Health/Check",
      "grpcStatusCode": 14,
      "grpcStatusMessage": "connection refused",
      "healthStatusLabel": "NOT_SERVING"
    }
  },
  "sslCheckResult": {
    "tlsVersion": "TLS 1.3",
    "cipherSuite": "TLS_AES_256_GCM_SHA384",
    "daysUntilExpiry": 12,
    "handshakeTimeMs": 48.2,
    "baselineVerdict": "FAIL",
    "baselineGrade": "C",
    "failureCategory": "expired",
    "response": {
      "resolvedIp": "104.18.7.36",
      "protocol": "TLS 1.3",
      "cipherSuite": "TLS_AES_256_GCM_SHA384",
      "handshakeTimeMs": 48.2,
      "daysUntilExpiry": 12,
      "ocspStatus": "good",
      "chainTrustReason": "missing_intermediate",
      "chainTrustDetail": "the server did not send the intermediate certificate for issuer \"Acme Intermediate CA\"; add it to the chain.",
      "incompleteChain": true,
      "missingIntermediate": "Acme Intermediate CA"
    }
  },
  "resultType": "FINAL",
  "sequenceId": "2dbfa2a3-5477-45ea-ac33-ee55b8ea66ff",
  "traceId": "a1b2c3d4e5f67890abcdef0123456789",
  "errorGroupIds": [
    "883af87b-ac7c-44e3-9376-b4bece04e788"
  ]
}