Support

End-to-end workflow

View as Markdown

Complete workflow for buying and configuring a domain — search, quote, register, add DNS, verify. Runnable start-to-finish in under 5 minutes.

What you'll build

A complete end-to-end workflow: search for an available domain, lock a price with a quote, register it (with idempotency for retry safety), add a DNS record, and verify. Every step is copy-paste runnable in curl, Node, Python, or Go.

Overview

Rendering diagram...

Prerequisites: a GoDaddy account with a payment method on file, a Personal Access Token with domains.domain:read, domains.registration:write, and domains.dns:update scopes, and the CLI or curl. Export the token:

export GODADDY_PAT="<GODADDY_PAT>"
export BASE="https://api.godaddy.com"

Check availability

GET /v3/domains/check-availability returns availability and indicative pricing for a domain.

curl -s "$BASE/v3/domains/check-availability?domain=example.com" \
  -H "Authorization: Bearer $GODADDY_PAT"

Response shape:

{
  "domain": "example.com",
  "available": true,
  "prices": [
    { "term": "YEAR", "period": 1, "price": { "currencyCode": "USD", "value": 1199 }, "renewalPrice": { "currencyCode": "USD", "value": 2299 } },
    { "term": "YEAR", "period": 2, "price": { "currencyCode": "USD", "value": 3098 }, "renewalPrice": { "currencyCode": "USD", "value": 4598 }, "firstTermPrice": { "currencyCode": "USD", "value": 799 } }
  ]
}

Get a registration quote

POST /v3/domains/registration-quotes locks the price. The returned quoteToken guarantees the price you see is the price you'll pay when you execute registration.

curl -s -X POST "$BASE/v3/domains/registration-quotes" \
  -H "Authorization: Bearer $GODADDY_PAT" \
  -H "Content-Type: application/json" \
  -d '{"domain": "example.com", "period": 1}'

Register the domain

POST /v3/domains/registrations executes the registration. Send an Idempotency-Key header — if the request times out or returns 5xx, replay with the same key and the server dedupes.

Charges real money

This call charges the account's payment profile. Verify the domain name and quoted price before executing.

curl -s -X POST "$BASE/v3/domains/registrations" \
  -H "Authorization: Bearer $GODADDY_PAT" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
    "quoteToken": "qt_abc123...",
    "domain": "example.com",
    "period": 1,
    "consent": {
      "agreedAt": "2026-07-07T10:30:00.000Z",
      "agreementTypes": ["API_DPA"]
    }
  }'

Returns 201 Created with the order ID and domain metadata.

Add a DNS record

POST /v3/domains/zones/{zone}/dns-records adds a record. Common first step: an A record pointing the apex at your web server.

curl -s -X POST "$BASE/v3/domains/zones/example.com/dns-records" \
  -H "Authorization: Bearer $GODADDY_PAT" \
  -H "Content-Type: application/json" \
  -d '{"type": "A", "name": "@", "data": "192.0.2.1", "ttl": 600}'

Verify propagation

Confirm the record was accepted by the API, then confirm it's answering at a public resolver.

  1. Read the zone back through the API. The new record should appear in items[].

    curl -s "$BASE/v3/domains/zones/example.com/dns-records?type=A" \
      -H "Authorization: Bearer $GODADDY_PAT"
  2. Query a public resolver. Global propagation completes within seconds; the delay end-users see depends on their local resolver's TTL cache.

    dig +short A example.com
    # 192.0.2.1

What's next

  • Add more DNS records (CNAME, MX, TXT) via the same endpoint — see the DNS how-to
  • Set up domain forwarding to redirect apex-www or subdomains — see Forwarding
  • Manage renewals and auto-renew — see Renewals
  • Lock the domain against unauthorized transfer — see Registry lock

Agent & Automation Notes

PermissionsPayment Profile, DNS Management
Scopesdomains.domain:read, domains.registration:write, domains.dns:update
Rate limit60 req/min per credential
IdempotentNo
DestructiveYes — confirm before executing
On failureRegistration is NOT idempotent without Idempotency-Key header. On any partial success, GET the domain first before retrying. Real money changes hands — be sure you want to do this before executing.

Last updated on

How is this guide?

On this page