---
title: "Latest checks for an asset"
method: GET
path: "/v1/checks/latest"
tags: ["Checks"]
---

# Latest checks for an asset

`GET /v1/checks/latest`

## Request

- Base URL: `https://api.merlonix.com`
- URL: `https://api.merlonix.com/v1/checks/latest`
- Auth: HTTP bearer

The most recent SSL, DNS, and (when enabled) uptime check for an asset.

## Query parameters

- `asset_id` string, uuid, required

## Response `200`

Latest SSL + DNS + uptime check (each null when none exists).

- object
  - `ssl` SslCheck, required
    - `kind` 'ssl', required
    - `id` integer, required
    - `tenant_id` string, uuid, required
    - `asset_id` string, uuid, required
    - `checked_at` string, date-time, required
    - `status` 'valid' | 'expiring_soon' | 'expired' | 'invalid' | 'unreachable' | 'error' | 'inconclusive', required
    - `not_before` string, date-time, nullable, required
    - `not_after` string, date-time, nullable, required
    - `days_until_expiry` integer, nullable, required
    - `issuer` string, nullable, required
    - `subject` string, nullable, required
    - `response_ms` integer, nullable, required
    - `tls_version` string, nullable, required
    - `cipher_suite` string, nullable, required
    - `cipher_strength` 'strong' | 'acceptable' | 'weak' | 'null', nullable, required
    - `chain_length` integer, nullable, required
    - `chain_complete` boolean, nullable, required
    - `chain_issues` string[], nullable, required
    - `posture_observed` boolean, nullable, required
    - `posture_unobserved_reason` string, nullable, required
  - `dns` DnsCheck, required
    - `kind` 'dns', required
    - `id` integer, required
    - `tenant_id` string, uuid, required
    - `asset_id` string, uuid, required
    - `checked_at` string, date-time, required
    - `record_type` string, required
    - `resolver` string, required
    - `records_found` unknown, required
    - `drift_detected` boolean, required
    - `drift_summary` string, nullable, required
    - `status` 'ok' | 'drift' | 'nxdomain' | 'servfail' | 'timeout' | 'error', required
    - `response_ms` integer, nullable, required
    - `cname_observed` boolean, required: Whether this check observed the CNAME delegation at all. False on any row written before 2026-08-19 — it does NOT mean the hostname publishes no CNAME.
    - `cname_chain` object[], required: Hops from the monitored hostname to the name that finally answered. Empty when observed and none is published.
      - `from` string, required
      - `to` string, required
    - `cname_target` string, nullable, required: The first hop target — the CNAME record published in the customer own zone, and the only hop delegation alerts key on.
  - `uptime` UptimeCheck
    - `kind` 'uptime', required
    - `id` integer, required
    - `tenant_id` string, uuid, required
    - `asset_id` string, uuid, required
    - `checked_at` string, date-time, required
    - `up` boolean, required
    - `status_code` integer, nullable, required
    - `response_time_ms` integer, required: Total round-trip (body fully read), ms.
    - `ttfb_ms` integer, nullable, required: Time-to-first-byte (response headers received), ms; null when unmeasured. No DNS/TCP/TLS phase breakdown is available on CF Workers.
    - `keyword_found` boolean, nullable, required
    - `error` string, nullable, required
    - `consecutive_failures` integer, required
    - `final_url` string, nullable, required: Final URL after at most one redirect hop (TD-935).
    - `redirect_ok` boolean, nullable, required: Redirect-target assertion outcome; null when not configured.

## Other responses

- `400`: Error — canonical envelope with a trace_id.
- `401`: Error — canonical envelope with a trace_id.
- `404`: Error — canonical envelope with a trace_id.
- `429`: Error — canonical envelope with a trace_id.

---

[API](https://skmtc.dev/merlonix/apis/merlonix-public-api.md) · [All operations](https://skmtc.dev/merlonix/apis/merlonix-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/merlonix/apis/merlonix-public-api/revisions/2192584bdfcd?raw)
