---
title: "Diagnose custom domain DNS"
method: POST
path: "/api/v1/cvms/{cvm_id}/customize-domain-diagnose"
tags: ["CVMs"]
---

# Diagnose custom domain DNS

`POST /api/v1/cvms/{cvm_id}/customize-domain-diagnose`

Verify DNS records for custom domain configuration. Checks CNAME pointing to CVM, TXT records for app verification, and CAA records.

## Path parameters

- `cvm_id` string, required

## Request body

- DiagnoseDomainsRequest — Request for diagnosing custom domain DNS configuration.
  - `domains` DomainCheckRequest[], required — List of domain and port pairs to check
    - `domain` string, required — Domain name to diagnose (e.g., app.example.com)
    - `port` integer, required — Port number the domain routes to

## Response `200`

Successful Response

- DiagnosisResponse — Response containing diagnosis results for all requested domains.
  - `results` DomainDiagnosisResult[], required — Diagnosis results in request order
    - `domain` string, required — Domain name checked
    - `port` integer, required — Port number checked
    - `records` DnsRecordResult[], required — DNS record check results
      - `record_type` string, required — Record type: CNAME or TXT
      - `query_name` string, required — Domain name queried
      - `expected_value` string, required — Expected record value
      - `actual_value` string, nullable — Actual value found, null if missing
      - `is_valid` boolean, required — True if actual matches expected
      - `is_deprecated` boolean — True if this record format is deprecated
      - `warning_message` string, nullable — Deprecation or migration warning
    - `is_valid` boolean, required — True if all required records (CNAME, TXT) are correct
    - `caa_check` CaaCheckResult — CAA record check result (informational, not required for validation).
      - `caa_records` string[], required — Raw CAA DNS records found
      - `accounturi` string, nullable — Account URI extracted from CAA record
      - `acme_fetches` AcmeFetchResult[], required — ACME endpoint query attempts
        - `url` string, required — ACME endpoint URL queried
        - `http_ok` boolean, required — True if HTTP 200 response received
        - `uri` string, nullable — Account URI from response body
        - `status_code` integer, nullable — HTTP status code returned
        - `error` string, nullable — Error message if request failed
      - `expected_uri` string, nullable — Expected URI from ACME account
      - `is_match` boolean, required — True if CAA accounturi matches ACME account
      - `info_message` string, nullable — Additional context or guidance

## Other responses

- `400` — Invalid request or multiple CVMs with same name
- `401` — Not authenticated
- `403` — No access to this CVM
- `404` — CVM not found
- `422` — Validation Error

---

[API](https://skmtc.net/phala/apis/phala-cloud-api.md) · [All operations](https://skmtc.net/phala/apis/phala-cloud-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/phala/phala-cloud-api/versions/83c6ae62e860/schema)
