---
title: "DNS steps for the customer's actual DNS provider."
method: GET
path: "/v1/domains/{id}/instructions"
tags: ["Domains"]
---

# DNS steps for the customer's actual DNS provider.

`GET /v1/domains/{id}/instructions`

## Request

- Base URL: `https://api.domainee.dev`
- URL: `https://api.domainee.dev/v1/domains/{id}/instructions`
- Auth: HTTP bearer

Fingerprints the DNS provider from the zone's public NS records and returns steps written for it: the right record type for this position and provider, the record name written the way that provider's form wants it (@ vs blank vs the full domain), where the record editor lives in its UI, and the provider-specific gotchas that silently break a connection. Also reports whether the provider supports one-click Domain Connect, in which case domainConnect.applyUrl sends the customer to approve the change at their own provider. Does live NS and Domain Connect lookups, so it is a separate endpoint rather than a field on the domain resource. Never fails: an unrecognised provider returns provider.detected=false with correct generic steps.

## Query parameters

- `redirect_uri` string
- `state` string

## Response `200`

Provider-aware connect instructions.

- object
  - `instructions` object
    - `hostname` string
    - `provider` object
      - `id` string
      - `name` string
      - `detected` boolean
    - `apex` boolean
    - `method` 'a' | 'cname'
    - `methodReason` string
    - `records` object[]
      - `type` 'A' | 'CNAME'
      - `name` string
      - `value` string
      - `ttl` integer
    - `steps` string[]
    - `quirks` string[]
    - `dashboardUrl` string
    - `domainConnect` object: One-click setup via Domain Connect when the customer's provider supports it and has adopted Domainee's template. supported=false carries a reason instead; always render steps regardless, since coverage is far from universal.
      - `supported` boolean
      - `reason` 'no_discovery_record' | 'settings_unavailable' | 'no_sync_support' | 'template_not_adopted' | 'lookup_failed'
      - `providerId` string
      - `providerName` string
      - `providerDisplayName` string: The provider's own display name when it publishes one. Prefer it over providerName in UI.
      - `applyUrl` string: Send the customer here to approve the change at their own DNS provider.
      - `width` integer
      - `height` integer
      - `urlControlPanel` string

## Other responses

- `401`: Missing, malformed, revoked, or expired Bearer token.
- `404`: No such object in this workspace.

---

[API](https://skmtc.dev/domainee/apis/domainee-api.md) · [All operations](https://skmtc.dev/domainee/apis/domainee-api/llms.txt) · [OpenAPI document](https://skmtc.dev/domainee/apis/domainee-api/revisions/756d54434372?raw)
