# Create a DNS record for a zone (https://developer.godaddy.com/en/docs/references/rest/domains/v3/create-dns-record)

---
title: Create a DNS record for a zone
description: Creates a new DNS record in the GoDaddy-managed zone.
full: true
---

Full description

> Creates a new DNS record in the GoDaddy-managed zone. Changes are applied synchronously; no operation polling required.

## POST /zones/{zone}/dns-records

Create a DNS record for a zone

Creates a new DNS record in the GoDaddy-managed zone. Changes are applied synchronously; no operation polling required.


### 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. |

### 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

**201** — DNS record created.

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`.
