# Validation (https://developer.godaddy.com/en/docs/references/rest/ans/validation)

***

title: Validation
description: ''
full: true
\_openapi:
toc:

* depth: 2
  title: Trigger ACME validation
  url: '#trigger-acme-validation'
* depth: 2
  title: Verify DNS record configuration
  url: '#verify-dns-record-configuration'
  structuredData:
  headings:
  * content: Trigger ACME validation
    id: trigger-acme-validation
  * content: Verify DNS record configuration
    id: verify-dns-record-configuration
    contents:
  * content: >
    Initiates validation of domain control. The AHP calls this after
    placing

    the ACME challenge token at the specified location (DNS or HTTP).

    The RA validates domain control, which is required before issuing both

    server and identity certificates. A single domain validation is used

    for both certificates.

    The RA will automatically determine which validation method to use
    based

    on the registration configuration and what is discoverable.
    heading: trigger-acme-validation
  * content: >
    Verifies that all required DNS records have been configured correctly.

    The RA knows which records are required based on the registration

    and will check for all four required records (HTTPS, TLSA, \_ans,
    \_ra-badge).

    This is the final step for external domain registration.
    heading: verify-dns-record-configuration

***

## POST /v1/agents/{agentId}/verify-acme

Trigger ACME validation

Initiates validation of domain control. The AHP calls this after placing
the ACME challenge token at the specified location (DNS or HTTP).

The RA validates domain control, which is required before issuing both
server and identity certificates. A single domain validation is used
for both certificates.

The RA will automatically determine which validation method to use based
on the registration configuration and what is discoverable.


### Path parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `agentId` | string | yes | Unique identifier of the agent |

### Responses

**202** — Validation successful, certificates pending

Content-Type: `application/json`

Schema:

- object — Response containing Status information
  - `completedSteps`: array
      - items:
  - `createdAt`: string <date-time>
  - `expiresAt`: string <date-time> — Registration attempt expiry
  - `pendingSteps`: array
      - items:
  - `phase`: string
    - enum: "INITIALIZATION", "DOMAIN_VALIDATION", "CERTIFICATE_ISSUANCE", "DNS_PROVISIONING", "COMPLETED"
  - `status`: string — Status of an agent in its registration and operational lifecycle
    - enum: "PENDING_VALIDATION", "PENDING_DNS", "ACTIVE", "FAILED", "EXPIRED", "REVOKED"
  - `updatedAt`: string <date-time>

**401** — Authentication failed

Content-Type: `application/json`

Schema:

- object
  - `code` (required): string — Application-specific error code for client-side error handling
  - `details`: object
  - `message` (required): string
  - `status` (required): string
    - enum: "ERROR"

**403** — Authorization failed

Content-Type: `application/json`

Schema:

- object
  - `code` (required): string — Application-specific error code for client-side error handling
  - `details`: object
  - `message` (required): string
  - `status` (required): string
    - enum: "ERROR"

**404** — Agent not found

Content-Type: `application/json`

Schema:

- object
  - `code` (required): string — Application-specific error code for client-side error handling
  - `details`: object
  - `message` (required): string
  - `status` (required): string
    - enum: "ERROR"

**422** — Validation failed

Content-Type: `application/json`

Schema:

- object
  - `code` (required): string — Application-specific error code for client-side error handling
  - `details`: object
  - `message` (required): string
  - `status` (required): string
    - enum: "ERROR"

**500** — Internal server error

Content-Type: `application/json`

Schema:

- object
  - `code` (required): string — Application-specific error code for client-side error handling
  - `details`: object
  - `message` (required): string
  - `status` (required): string
    - enum: "ERROR"

## POST /v1/agents/{agentId}/verify-dns

Verify DNS record configuration

Verifies that all required DNS records have been configured correctly.
The RA knows which records are required based on the registration
and will check for all four required records (HTTPS, TLSA, _ans, _ra-badge).
This is the final step for external domain registration.


### Path parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `agentId` | string | yes | Unique identifier of the agent |

### Responses

**202** — DNS verified, registration active

Content-Type: `application/json`

Schema:

- object — Response containing Status information
  - `completedSteps`: array
      - items:
  - `createdAt`: string <date-time>
  - `expiresAt`: string <date-time> — Registration attempt expiry
  - `pendingSteps`: array
      - items:
  - `phase`: string
    - enum: "INITIALIZATION", "DOMAIN_VALIDATION", "CERTIFICATE_ISSUANCE", "DNS_PROVISIONING", "COMPLETED"
  - `status`: string — Status of an agent in its registration and operational lifecycle
    - enum: "PENDING_VALIDATION", "PENDING_DNS", "ACTIVE", "FAILED", "EXPIRED", "REVOKED"
  - `updatedAt`: string <date-time>

**401** — Authentication failed

Content-Type: `application/json`

Schema:

- object
  - `code` (required): string — Application-specific error code for client-side error handling
  - `details`: object
  - `message` (required): string
  - `status` (required): string
    - enum: "ERROR"

**403** — Authorization failed

Content-Type: `application/json`

Schema:

- object
  - `code` (required): string — Application-specific error code for client-side error handling
  - `details`: object
  - `message` (required): string
  - `status` (required): string
    - enum: "ERROR"

**404** — Agent not found

Content-Type: `application/json`

Schema:

- object
  - `code` (required): string — Application-specific error code for client-side error handling
  - `details`: object
  - `message` (required): string
  - `status` (required): string
    - enum: "ERROR"

**422** — DNS records not found or incorrect

Content-Type: `application/json`

Schema:

- object
  - `incorrectRecords`: array
      - items:
          - `expected`: string
          - `found`: string
          - `record`: object
              - `name` (required): string — Full DNS record name
              - `priority`: integer — For HTTPS records
              - `purpose`: string — Purpose of this DNS record
                - enum: "DISCOVERY", "TRUST", "CERTIFICATE_BINDING", "BADGE"
              - `required`: boolean — Whether this record is required
              - `ttl`: integer
              - `type` (required): string
                - enum: "HTTPS", "TLSA", "TXT"
              - `value` (required): string — Record value to set
  - `missingRecords`: array
      - items:
          - `name` (required): string — Full DNS record name
          - `priority`: integer — For HTTPS records
          - `purpose`: string — Purpose of this DNS record
            - enum: "DISCOVERY", "TRUST", "CERTIFICATE_BINDING", "BADGE"
          - `required`: boolean — Whether this record is required
          - `ttl`: integer
          - `type` (required): string
            - enum: "HTTPS", "TLSA", "TXT"
          - `value` (required): string — Record value to set
  - `status`: string
    - enum: "ERROR"

**500** — Internal server error

Content-Type: `application/json`

Schema:

- object
  - `code` (required): string — Application-specific error code for client-side error handling
  - `details`: object
  - `message` (required): string
  - `status` (required): string
    - enum: "ERROR"
