---
title: "One-shot DNS setup: zone file, copy-paste commands, provider detection, and every record with host, zone, value_strings."
method: GET
path: "/domains/{id}/setup"
tags: ["domains"]
---

# One-shot DNS setup: zone file, copy-paste commands, provider detection, and every record with host, zone, value_strings.

`GET /domains/{id}/setup`

## Request

- Base URL: `https://api.agentisend.com`
- URL: `https://api.agentisend.com/domains/{id}/setup`
- Auth: HTTP bearer

## Path parameters

- `id` string, required: Domain id (UUID) or name.

## Response `200`

Success

- GetDomainsByIdSetupReply
  - `domain` string, required
  - `zone` string, required
  - `detected` boolean, required
  - `provider` object, nullable, required
    - `id` string, required
    - `name` string, required
    - `dnsConsoleUrl` string, required
  - `nameservers` string[], required
  - `provider_hints` object, required
    - `cloudflare` string, required
    - `route53` string, required
    - `namecheap` string, required
    - `godaddy` string, required
  - `records` object[], required
    - `record` string, required
    - `name` string, required
    - `name_relative` string, required
    - `host` string, required
    - `type` string, required
    - `value` string, required
    - `value_strings` string[], required
    - `value_bind` string, required
    - `ttl` integer, required
    - `priority` integer, nullable, required
    - `required` boolean, required
    - `action` 'add' | 'edit' | 'none' | 'check', required: add: publish value. edit: a record of this kind is already there (current) — change it to value instead of adding a second. none: already in place. check: the current records could not be read; see note.
    - `current` string, nullable, required
    - `note` string, nullable, required
  - `zone_file` string, required
  - `commands` object, required
    - `cloudflare` object[], required
    - `route53` object, required
    - `gcloud` string[], required
  - `deep_link` string, nullable, required

## Other responses

- `400`: The request is malformed or a field failed validation. Codes: validation_error, invalid_idempotency_key, invalid_cursor, plan_not_purchasable, stripe_signature_invalid, support_upload_rejected, sign_in_check_required.
- `401`: No usable credential was sent. Codes: missing_api_key, session_required, mfa_required.
- `403`: The credential may not do this, or the account or key is stopped. Codes: sending_domain_blocked, young_domain_held, domain_sending_disabled, domain_not_verified, onboarding_recipient_not_a_member, onboarding_sender_unavailable, account_suspended, account_sandboxed, human_action_required, csrf_origin_rejected, charge_not_this_account, invalid_api_key, restricted_api_key, insufficient_role, invite_email_mismatch, domain_scope_violation, dedicated_ip_assigned_by_us, approval_required, staff_review_required, trust_paused, kill_switch_active.
- `404`: Nothing with this id exists on the account. Codes: billing_customer_missing, not_found, session_expired, support_ticket_not_found.
- `429`: A rate, quota or ramp ceiling was reached. Codes: onboarding_daily_cap_reached, trust_throttled, invite_limit_reached, rate_ceiling_exceeded, daily_quota_exceeded, monthly_quota_exceeded, rate_limit_exceeded, support_rate_limited.
- `500`: Something failed on our side. Codes: internal_server_error.

---

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