You need a domain you own (e.g. example.com) and an Excloud API token. Get a token with exc apikey create or from the console.

export TOKEN=eyJhbGciOi...

1. Create the zone

curl -sS -X POST https://dns.excloud.in/dns/zone/create \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name": "example.com"}'

The response includes four nameservers (ns1.excloud.in etc.). Copy them.

2. Delegate at your registrar

In your registrar’s control panel (GoDaddy, Cloudflare, Namecheap, …), set the nameservers for the domain to the four values from step 1. Propagation typically completes within an hour but can take up to 48.

Sanity check:

dig +short NS example.com

When that returns the Excloud nameservers, you’re delegated.

3. Add an A record

curl -sS -X POST https://dns.excloud.in/dns/record/create \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "zone_name": "example.com",
    "type": "A",
    "name": "api",
    "ttl": 300,
    "records": ["203.0.113.10"]
  }'

Verify:

dig +short api.example.com

4. (Optional) The same in Terraform

resource "excloud_dns_zone" "example" {
  name = "example.com"
}

resource "excloud_dns_record" "api" {
  zone_name = excloud_dns_zone.example.name
  type      = "A"
  name      = "api"
  ttl       = 300
  records   = ["203.0.113.10"]
}

output "nameservers" {
  value = excloud_dns_zone.example.nameservers
}

terraform apply, then set the output nameservers at your registrar.

Next

  • Zones — deletion, listing, delegation gotchas.
  • Records — every record type and its payload shape.