# Replace a DNS record (https://developer.godaddy.com/en/docs/references/rest/domains/v3/replace-dns-record)

---
title: Replace a DNS record
description: Fully replaces an existing DNS record identified by recordId.
full: true
---

Full description

Fully replaces an existing DNS record identified by recordId. All writable fields (name, type, data, ttl) must be supplied; partial updates are not supported. Changes are applied synchronously. GoDaddy-managed records (SOA, NS) are read-only and return 409 when targeted.

## PUT /zones/{zone}/dns-records/{recordId}

Replace a DNS record

Fully replaces an existing DNS record identified by recordId. All writable fields (name, type, data, ttl) must be supplied; partial updates are not supported. Changes are applied synchronously. GoDaddy-managed records (SOA, NS) are read-only and return 409 when targeted.

### Path parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `zone` | string | yes | The domain name in punycode A-label form (for example, example.com). For IDNs, use the punycode representation. |
| `recordId` | string | yes | Server-assigned DNS record identifier within the zone. |

### Header parameters

| Name | Type | Required | Description |
|------|------|----------|-------------|
| `X-Request-Id` | unknown | no | Optional client-generated request correlation identifier, propagated across services and returned in the response X-Request-Id header. |

### Request body (required)

Content-Type: `application/json`

```json
{
  "name": "@",
  "type": "A",
  "data": "192.0.2.1",
  "ttl": 3600
}
```

Schema:

- schema reference: `#/components/schemas/DNSRecord`

### Responses

**200** — DNS record replaced.

Content-Type: `application/json`

Schema:

- schema reference: `#/components/schemas/DNSRecord`

**400** — Malformed request syntax, missing required field, or invalid field type.

Content-Type: `application/json`

Schema:

- schema reference: `#/x-ext/21ae8c5`

**401** — Authentication credentials are missing or invalid.

Content-Type: `application/json`

Schema:

- schema reference: `#/x-ext/21ae8c5`

**403** — Authenticated identity is not authorized to perform this operation.

Content-Type: `application/json`

Schema:

- schema reference: `#/x-ext/21ae8c5`

**404** — The requested resource was not found.

Content-Type: `application/json`

Schema:

- schema reference: `#/x-ext/21ae8c5`

**409** — Conflict — the request cannot be completed in the current state. Used for quote lifecycle errors (quote_expired, quote_consumed), domain state conflicts such as domain_already_exists, and immutable DNS records (dns_record_not_mutable) such as GoDaddy-managed SOA and NS records.

Content-Type: `application/json`

Schema:

- schema reference: `#/x-ext/21ae8c5`

**422** — Semantically invalid request — valid structure but violates a business rule, such as an ineligible contact, unsupported TLD, non-renewable domain status, or quote_mismatch (e.g. iscCode or acknowledgedFees that do not match the locked quote).

Content-Type: `application/json`

Schema:

- schema reference: `#/x-ext/21ae8c5`

**429** — Too many requests — rate limit exceeded.

Content-Type: `application/json`

Schema:

- schema reference: `#/x-ext/21ae8c5`

**Security:** requires `bearerAuth`.
