---
title: "Update a domain"
method: PATCH
path: "/domains/{id}"
tags: ["Domains"]
---

# Update a domain

`PATCH /domains/{id}`

## Request

- Base URL: `https://shipmail.to/api/v1`
- URL: `https://shipmail.to/api/v1/domains/{id}`
- Auth: one of:
  - HTTP bearer
  - OAuth 2 (authorization code, authorization URL `https://shipmail.to/api/auth/oauth2/authorize`, token URL `https://shipmail.to/api/auth/oauth2/token`)

Update domain settings such as the catch-all mailbox. Catch-all may target any active mailbox in the same organization, including one on another domain.

## Headers

- `X-Shipmail-Organization` string

## Request body

- UpdateDomainRequest
  - `catch_all_mailbox_id` string, uuid, nullable, required: Active mailbox ID in the same organization to receive catch-all email, or null to disable. The mailbox may use another domain.

## Response `200`

Updated domain.

- Domain
  - `object` 'domain', required
  - `id` string, required
  - `name` string, required
  - `status` 'pending' | 'verifying' | 'verified' | 'failed' | 'degraded', required
  - `managed_by` 'external' | 'shipmail', required: Whether the domain is managed externally or registered through Shipmail.
  - `dns_provider` string, nullable, required
  - `mx_verified` boolean, required
  - `spf_verified` boolean, required
  - `dkim_verified` boolean, required
  - `dmarc_verified` boolean, required: Whether the DMARC record was last seen as valid.
  - `dmarc_managed_externally` boolean, required: True if a non-shipmail DMARC record is already published for this domain.
  - `outbound_verified` boolean, required
  - `catch_all_mailbox_id` string, nullable, required: Active mailbox in the same organization receiving unmatched addresses, or null when catch-all is disabled. The mailbox may use another domain.
  - `verified_at` string, date-time, nullable, required
  - `created_at` string, date-time, required
  - `updated_at` string, date-time, required
  - `registration` DomainRegistrationInfo
    - `expires_at` string, date-time, required
    - `auto_renew` boolean, required
    - `renewal_price` number, required
    - `privacy_enabled` boolean, required
    - `currency` string, required
    - `registered_at` string, date-time, required

## Other responses

- `404`: Resource not found.
- `422`: Validation failed.
- `429`: Rate limit exceeded.

---

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