---
title: "Which of a custom domain’s DNS records are in place, and who hosts its DNS"
method: GET
path: "/api/computers/{id}/domains/{domainId}/dns-check"
tags: ["public-urls"]
---

# Which of a custom domain’s DNS records are in place, and who hosts its DNS

`GET /api/computers/{id}/domains/{domainId}/dns-check`

## Request

- Base URL: `https://www.orgo.ai`
- URL: `https://www.orgo.ai/api/computers/{id}/domains/{domainId}/dns-check`
- Auth: HTTP bearer

For a domain whose DNS is elsewhere. The records are looked up at the domain’s own nameservers (no cache in between), so a record shows here as soon as the provider serves it. zone is the domain’s DNS zone (example.com for app.example.com) and each record’s host is relative to it ("@" for the zone itself), the form most DNS providers ask for. status: ok, missing, or wrong (found lists what is there instead). provider names the DNS host, with a link to its DNS settings and tips (id other, named by the nameservers’ own domain, when it is not one Orgo knows; null when no nameservers answer). extra lists what would get in the way: another A or AAAA record at the name (some visitors would reach the old address), or a CAA record that leaves out Let’s Encrypt (no HTTPS certificate). A domain bought through Orgo answers provider orgo (Orgo DNS), where Orgo set the records. Changes nothing; POST /verify turns the domain on. 30 checks a minute per account.

## Path parameters

- `id` string, required
- `domainId` string, uuid, required

## Response `200`

The check.

- DnsCheck
  - `zone` string, nullable, required: The domain’s DNS zone, found from its nameservers; null when none answer.
  - `provider` object, nullable, required: Who hosts the zone’s DNS, read from its nameservers; null when none answer.
    - `id` 'cloudflare' | 'godaddy' | 'namecheap' | 'porkbun' | 'squarespace' | 'route53' | 'vercel' | 'google' | 'gandi' | 'namecom' | 'ionos' | 'digitalocean' | 'netlify' | 'orgo' | 'other'
    - `name` string
    - `dashboard_url` string, nullable: Where the DNS records are edited.
    - `tips` string[]: What to watch for at this provider.
  - `records` object[], required
    - `type` 'TXT' | 'CNAME' | 'A', required
    - `name` string, required
    - `host` string, required: Relative to zone; "@" for the zone itself.
    - `value` string, required
    - `status` 'ok' | 'missing' | 'wrong', required
    - `found` string[], required: What the name has now.
  - `extra` object[], required: Records that get in the way.
    - `type` 'A' | 'AAAA' | 'CAA', required
    - `value` string, required
    - `problem` string, required
  - `checked_at` string, date-time, required

## Other responses

- `400`: A computer custom domains cannot serve (CUSTOM_DOMAINS_UNSUPPORTED).
- `401`: Unauthenticated.
- `403`: No access to this computer, view-only access, or a share-link guest.
- `404`: Not found on this computer, or custom domains are not enabled for this account (CUSTOM_DOMAINS_NOT_ENABLED).
- `429`: Too many checks this minute (RATE_LIMITED, with retry_after; Retry-After too).
- `500`: The check failed (DNS_CHECK_FAILED). Try again.

## Changes

- **2026-11-01** `60e768a2bb9d`: 6 info
  - added the optional property `docs_url` to the response with the `400` status
  - added the optional property `docs_url` to the response with the `429` status
  - added the optional property `next` to the response with the `400` status
  - added the optional property `next` to the response with the `429` status
  - …2 more
- **2026-10-22** `a506f6169bb5`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/orgo/apis/orgo-api/changes/api/computers/:id/domains/:domainId/dns-check/get.md)

---

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