---
title: "Get custom domain status"
method: GET
path: "/api/v1/domains/{id}"
tags: ["Domains"]
---

# Get custom domain status

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

## Request

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

status is pending until SPF, DKIM, DMARC, MX, and the verify record match, then verified. Includes mail, status_detail, per-record status, found, hint, and warnings. hint is null when that record is valid or no specific mistake was found.

## Path parameters

- `id` string, required

## Response `200`

Domain

- Domain
  - `object` 'domain'
  - `id` string, required
  - `domain` string, required
  - `status` 'pending' | 'verified', required
  - `status_detail` string, required
  - `mail` object, required
    - `receiving` boolean, required
    - `sending` boolean, required
    - `inboxes` boolean, required
  - `records` DomainRecord[], required
    - `role` 'mx' | 'spf' | 'dkim' | 'dmarc' | 'verify', required
    - `type` 'MX' | 'TXT' | 'CNAME', required
    - `host` string, required
    - `value` string, required
    - `priority` integer
    - `status` 'valid' | 'missing' | 'invalid', required
    - `found` string[], required
    - `hint` DomainRecordHint, required: What to change for a record that is missing or invalid. Null on the record when it is valid or no specific mistake was found.
      - `code` 'duplicated_suffix' | 'wrong_host' | 'wrong_type' | 'wrong_token' | 'value_typo' | 'multiple_spf' | 'mx_priority' | 'other_provider_mx', required
      - `message` string, required: One short sentence describing what to change.
      - `found_at` string: Host where the value was found, when that host is not the one Cooper asked for.
  - `warnings` DomainWarning[], required: Empty when nothing else is wrong. existing_mail_provider means this hostname already has MX records that are not Cooper or Cloudflare Email Routing. Pointing MX at Cooper would move that mail, so the message suggests a subdomain such as agents.example.com.
    - `code` 'existing_mail_provider', required
    - `message` string, required
    - `provider` string: Present when the existing MX host is a recognized provider.
  - `created_at` string, date-time
  - `verified_at` string, date-time, nullable
  - `last_checked_at` string, date-time, nullable

## Other responses

- `404`: domain_not_found

---

[API](https://skmtc.dev/cooperemail/apis/cooper-email-api.md) · [All operations](https://skmtc.dev/cooperemail/apis/cooper-email-api/llms.txt) · [OpenAPI document](https://skmtc.dev/cooperemail/apis/cooper-email-api/revisions/6d800a7b3e33?raw)
