---
title: "Update an asset"
method: PATCH
path: "/v1/assets/{id}"
tags: ["Assets"]
---

# Update an asset

`PATCH /v1/assets/{id}`

## Request

- Base URL: `https://api.merlonix.com`
- URL: `https://api.merlonix.com/v1/assets/{id}`
- Auth: HTTP bearer

Update mutable fields of an asset (label, client, check interval, enabled checks, active state). Requires a `write`-scoped key.

## Path parameters

- `id` string, uuid, required

## Request body

- AssetUpdate: Request body for updating an asset (all fields optional; TD-925).
  - `label` string, nullable
  - `client_name` string, nullable
  - `client_id` string, uuid, nullable
  - `check_interval_sec` integer
  - `ssl_enabled` boolean
  - `dns_enabled` boolean
  - `domain_enabled` boolean: Toggle monitored domain-expiry (RDAP) checks.
  - `dnsbl_enabled` boolean: Toggle monitored DNS-blocklist (DNSBL) checks.
  - `dns_security_enabled` boolean: Toggle monitored DNSSEC + DANE/TLSA posture checks (informational).
  - `security_headers_enabled` boolean: Toggle the monitored HTTP security-header check (informational).
  - `email_auth_enabled` boolean: Toggle the monitored email-auth (SPF/DMARC/MTA-STS/BIMI) posture check.
  - `ct_watch_enabled` boolean: Toggle Certificate-Transparency rogue/shadow-cert monitoring. Paid monitoring tiers only (team/agency/compliance).
  - `agent_readiness_enabled` boolean: Toggle monitored Agent-Readiness checks.
  - `mcp_health_enabled` boolean: Toggle monitored MCP-server health checks.
  - `heartbeat_enabled` boolean: Toggle the inbound heartbeat (dead-man's-switch) monitor.
  - `heartbeat_period_sec` integer: Expected heartbeat interval in seconds.
  - `heartbeat_grace_sec` integer: Tolerance in seconds before a missed beat is declared dead.
  - `port_enabled` boolean: Toggle the outbound TCP-port monitor.
  - `port_check_port` integer: TCP port to probe on the asset's hostname.
  - `psi_enabled` boolean: Toggle the PageSpeed Insights (Lighthouse) performance monitor. Paid monitoring tiers only (team/agency/compliance).
  - `psi_check_url` string, uri, nullable: Optional override URL to measure with PageSpeed Insights; null clears it.
  - `health_enabled` boolean: Toggle the application-health monitor. Paid monitoring tiers only (team/agency/compliance).
  - `health_check_url` string, uri, nullable: JSON health endpoint to poll; null clears it.
  - `health_check_config` object, nullable: TD-941 application-health config ({ headers?, stale_after_sec? }); null clears it.
  - `crawl_enabled` boolean: Toggle the broken-links / mixed-content crawler. Paid monitoring tiers only (team/agency/compliance).
  - `crawl_root_url` string, uri, nullable: Optional crawl root URL; null clears the override.
  - `injection_scan_enabled` boolean: Toggle the prompt-injection / hidden-text scan. Paid monitoring tiers only (team/agency/compliance).
  - `uptime_check_url` string, uri, nullable
  - `is_active` boolean
  - `paused_reason` string, nullable
  - `vendor_dependencies` string[]

## Response `200`

The updated asset.

- object
  - `asset` Asset, required
    - `id` string, uuid, required
    - `tenant_id` string, uuid, required
    - `attestation_id` string, uuid, nullable, required
    - `asset_type` 'domain' | 'hostname' | 'certificate' | 'dns_record', required
    - `hostname` string, required
    - `label` string, nullable, required
    - `client_name` string, nullable, required
    - `client_id` string, uuid, nullable, required
    - `check_interval_sec` integer, required
    - `ssl_enabled` boolean, required
    - `dns_enabled` boolean, required
    - `uptime_enabled` boolean, required
    - `domain_enabled` boolean, required
    - `dnsbl_enabled` boolean, required
    - `dns_security_enabled` boolean, required
    - `security_headers_enabled` boolean, required
    - `email_auth_enabled` boolean, required
    - `ct_watch_enabled` boolean, required
    - `agent_readiness_enabled` boolean, required
    - `mcp_health_enabled` boolean, required
    - `heartbeat_enabled` boolean, required
    - `heartbeat_period_sec` integer, nullable, required
    - `heartbeat_grace_sec` integer, nullable, required
    - `heartbeat_token` string, nullable, required
    - `port_enabled` boolean, required
    - `port_check_port` integer, nullable, required
    - `psi_enabled` boolean, required
    - `psi_check_url` string, nullable, required
    - `last_psi_at` string, date-time, nullable, required
    - `health_enabled` boolean, required
    - `health_check_url` string, nullable, required
    - `health_check_config` object, nullable, required: TD-941 application-health monitor config ({ headers?, stale_after_sec? }); null when not configured.
    - `crawl_enabled` boolean, required
    - `crawl_root_url` string, nullable, required
    - `last_crawl_at` string, date-time, nullable, required
    - `injection_scan_enabled` boolean, required
    - `injection_scan_last_at` string, date-time, nullable, required
    - `uptime_check_url` string, nullable, required
    - `uptime_check_config` object, nullable, required: TD-935 structured uptime probe config (method/headers/body/expected_status/keyword_match/expected_final_url); null when uptime is not configured.
    - `is_active` boolean, required
    - `paused_reason` string, nullable, required
    - `vendor_dependencies` string[], required
    - `created_at` string, date-time, required
    - `updated_at` string, date-time, required
    - `last_checked_at` string, date-time, nullable, required

## Other responses

- `400`: Error — canonical envelope with a trace_id.
- `401`: Error — canonical envelope with a trace_id.
- `402`: Error — canonical envelope with a trace_id.
- `403`: 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)
