---
title: "Update domain contacts"
method: PATCH
path: "/domains/{name}/dns/contacts"
tags: ["domain-contacts"]
---

# Update domain contacts

`PATCH /domains/{name}/dns/contacts`

Update the contacts associated with the specified domain. You can update any combination of owner, admin, tech, and billing contacts. Use `$preview=true` to validate without applying changes.

## Path parameters

- `name` string, required

## Query parameters

- `$preview` boolean, required

## Request body

- DomainContactUpdatesRequestBody — Update contact assignments for domain roles. Each role accepts either an existing contact ID or inline contact fields to create a new contact. Only include roles you want to update — omitted roles remain unchanged.
  - `owner` DomainOwnerContactRequestBody — Provide EITHER an existing contact `id` (format: `ct-<uuid>`) OR the full set of inline contact fields to create a new contact. When `id` is provided, all other fields are ignored. When `id` is absent, the following fields are required: firstName, lastName, countryCode, street, city, postalCode, stateProvince, phone, email. For the owner (registrant) contact, an optional `tldData` field can provide TLD-specific data (e.g., CIRA requirements for .ca domains) when creating a new contact.
    - `tldData` DomainOwnerContactTldSpecificRequestBody — TLD-specific owner contact data. Currently only `.ca` (CIRA) is supported. Include the relevant TLD key only when registering a domain under that TLD.
      - `ca` DomainContactCiraRequestBody — CIRA-specific data required for .ca domain registration. All fields are required.
        - `registrantAgreementAcknowledged` true, required — Must be `true` to acknowledge the CIRA registrant agreement. Submitting `false` will fail validation.
        - `preferredLanguageCode` 'en_US' | 'fr_CA' | 'en' | 'fr', required — CIRA preferred language code
        - `canadianPresenceRequirement` 'CCT' | 'LGR' | 'RES' | 'ABO' | 'CCO' | 'ASS' | 'PRT' | 'TDM' | 'TRD' | 'PLT' | 'TRS' | 'LAM' | 'EDU' | 'HOP' | 'GOV' | 'INB' | 'OMK' | 'MAJ', required — CIRA Canadian Presence Requirement category
    - `id` string — Existing contact ID. When provided, all other fields are ignored.
    - `firstName` string
    - `lastName` string
    - `organization` string
    - `countryCode` string — ISO 3166-1 alpha-2 country code (e.g., "US", "CA", "GB"). Required when creating a new contact.
    - `street` string
    - `city` string
    - `postalCode` string — Postal/ZIP code. Validated against the provided countryCode. Required when creating a new contact.
    - `stateProvince` string — State or province. Validated against the provided countryCode. Required when creating a new contact.
    - `phone` ContactPhoneRequestBody — Phone number with international dialing prefix.
      - `number` string, required — Phone number digits (numeric string, 6-14 characters).
      - `dialingPrefix` string, required — International dialing prefix (e.g., "+1" for US/CA, "+44" for UK).
    - `email` string, email
  - `admin` DomainContactRequestBody — Provide EITHER an existing contact `id` (format: `ct-<uuid>`) OR the full set of inline contact fields to create a new contact. When `id` is provided, all other fields are ignored. When `id` is absent, the following fields are required: firstName, lastName, countryCode, street, city, postalCode, stateProvince, phone, email.
    - `id` string — Existing contact ID. When provided, all other fields are ignored.
    - `firstName` string
    - `lastName` string
    - `organization` string
    - `countryCode` string — ISO 3166-1 alpha-2 country code (e.g., "US", "CA", "GB"). Required when creating a new contact.
    - `street` string
    - `city` string
    - `postalCode` string — Postal/ZIP code. Validated against the provided countryCode. Required when creating a new contact.
    - `stateProvince` string — State or province. Validated against the provided countryCode. Required when creating a new contact.
    - `phone` ContactPhoneRequestBody — Phone number with international dialing prefix.
      - `number` string, required — Phone number digits (numeric string, 6-14 characters).
      - `dialingPrefix` string, required — International dialing prefix (e.g., "+1" for US/CA, "+44" for UK).
    - `email` string, email
  - `tech` DomainContactRequestBody — Provide EITHER an existing contact `id` (format: `ct-<uuid>`) OR the full set of inline contact fields to create a new contact. When `id` is provided, all other fields are ignored. When `id` is absent, the following fields are required: firstName, lastName, countryCode, street, city, postalCode, stateProvince, phone, email.
    - `id` string — Existing contact ID. When provided, all other fields are ignored.
    - `firstName` string
    - `lastName` string
    - `organization` string
    - `countryCode` string — ISO 3166-1 alpha-2 country code (e.g., "US", "CA", "GB"). Required when creating a new contact.
    - `street` string
    - `city` string
    - `postalCode` string — Postal/ZIP code. Validated against the provided countryCode. Required when creating a new contact.
    - `stateProvince` string — State or province. Validated against the provided countryCode. Required when creating a new contact.
    - `phone` ContactPhoneRequestBody — Phone number with international dialing prefix.
      - `number` string, required — Phone number digits (numeric string, 6-14 characters).
      - `dialingPrefix` string, required — International dialing prefix (e.g., "+1" for US/CA, "+44" for UK).
    - `email` string, email
  - `billing` DomainContactRequestBody — Provide EITHER an existing contact `id` (format: `ct-<uuid>`) OR the full set of inline contact fields to create a new contact. When `id` is provided, all other fields are ignored. When `id` is absent, the following fields are required: firstName, lastName, countryCode, street, city, postalCode, stateProvince, phone, email.
    - `id` string — Existing contact ID. When provided, all other fields are ignored.
    - `firstName` string
    - `lastName` string
    - `organization` string
    - `countryCode` string — ISO 3166-1 alpha-2 country code (e.g., "US", "CA", "GB"). Required when creating a new contact.
    - `street` string
    - `city` string
    - `postalCode` string — Postal/ZIP code. Validated against the provided countryCode. Required when creating a new contact.
    - `stateProvince` string — State or province. Validated against the provided countryCode. Required when creating a new contact.
    - `phone` ContactPhoneRequestBody — Phone number with international dialing prefix.
      - `number` string, required — Phone number digits (numeric string, 6-14 characters).
      - `dialingPrefix` string, required — International dialing prefix (e.g., "+1" for US/CA, "+44" for UK).
    - `email` string, email

## Response `200`

Contact update operation created

- DomainContactUpdatesOperationResponse
  - `@type` 'unstoppabledomains.com/partner.v3.DomainContactOperationResult', required
  - `operation` OperationCheckResponse, required
    - `@type` 'unstoppabledomains.com/partner.v3.Operation', required
    - `id` string, required — Operation ID
    - `status` 'PREVIEW' | 'QUEUED' | 'PROCESSING' | 'FAILED' | 'COMPLETED' | 'CANCELLED' | 'AWAITING_UPDATES', required
    - `type` 'ADMIN_GENERIC' | 'DOMAIN_ADMIN_UPDATE' | 'DOMAIN_RENEW' | 'ACCOUNT_UPDATE' | 'DOMAIN_DNS_RECORD_CREATE' | 'DOMAIN_DNS_RECORD_UPDATE' | 'DOMAIN_DNS_RECORD_DELETE' | 'DOMAIN_DNS_RECORD_BATCH' | 'DOMAIN_DNS_SECURITY_ENABLE' | 'DOMAIN_DNS_SECURITY_DELETE' | 'DOMAIN_DNS_NAME_SERVER_UPDATE' | 'DOMAIN_HOSTING_UPDATE' | 'DOMAIN_HOSTING_DISABLE' | 'DOMAIN_TRANSFER_OUT' | 'DOMAIN_TRANSFER_OUT_TOGGLE' | 'DOMAIN_FLAGS_UPDATE' | 'DOMAIN_CONTACTS_UPDATE' | 'CONTACT_CREATE' | 'DOMAIN_SUGGESTION_CREATE' | 'DOMAIN_SUGGESTION_REFRESH' | 'DOMAIN_ADMIN_DNS_ZONE_MIGRATE', required
    - `domain` string
    - `createdAtTimestamp` number, required
    - `lastUpdatedTimestamp` number, required
    - `validUntilTimestamp` number
    - `dependencies` PlatformOperationDependency[], required — List of platform operation dependencies that make up this operation
      - union — A platform operation dependency. Discriminated by the `type` field — each type has its own `parameters` and `result` shape.
        - PlatformOperationDomainRegister — Registers a new domain with the specified owner contact and optional role contacts
          - `id` string, required
          - `@type` 'unstoppabledomains.com/partner.v3.PlatformOperation', required
          - `status` 'PREVIEW' | 'QUEUED' | 'PROCESSING' | 'FAILED' | 'COMPLETED' | 'CANCELLED' | 'AWAITING_UPDATES', required — Status of a platform operation dependency
          - `type` 'DOMAIN_REGISTER', required
          - `parameters` object, required
            - `owner` ContactAssignment, required — Reference to an existing or newly created contact
              - …
            - `contacts` NonRegistrantContacts — Non-registrant contact role assignments (admin, billing, tech)
              - …
            - `period` integer — Registration period in years
          - `error` OperationDependencyError — Error details for a failed operation dependency
            - `code` string, required — Error code identifying the failure type
            - `message` string, required — Human-readable error description
        - PlatformOperationDomainDnsRenew — Renews a domain for the specified period
          - `id` string, required
          - `@type` 'unstoppabledomains.com/partner.v3.PlatformOperation', required
          - `status` 'PREVIEW' | 'QUEUED' | 'PROCESSING' | 'FAILED' | 'COMPLETED' | 'CANCELLED' | 'AWAITING_UPDATES', required — Status of a platform operation dependency
          - `type` 'DOMAIN_DNS_RENEW', required
          - `parameters` object, required
            - `period` integer, required — Renewal period in years
          - `error` OperationDependencyError — Error details for a failed operation dependency
            - `code` string, required — Error code identifying the failure type
            - `message` string, required — Human-readable error description
        - PlatformOperationDnsRecordCreate — Creates a new DNS record for the domain
          - `id` string, required
          - `@type` 'unstoppabledomains.com/partner.v3.PlatformOperation', required
          - `status` 'PREVIEW' | 'QUEUED' | 'PROCESSING' | 'FAILED' | 'COMPLETED' | 'CANCELLED' | 'AWAITING_UPDATES', required — Status of a platform operation dependency
          - `type` 'DNS_RECORD_CREATE', required
          - `parameters` object, required
            - `subName` string — Subdomain name (empty for apex domain)
            - `type` 'A' | 'AAAA' | 'ALIAS' | 'CAA' | 'CNAME' | 'DNSKEY' | 'DS' | 'HTTPS' | 'IPSECKEY' | 'MX' | 'NAPTR' | 'NS' | 'PTR' | 'SOA' | 'SPF' | 'SRV' | 'SSHFP' | 'SVCB' | 'TLSA' | 'TXT', required
            - `values` string[], required
            - `ttl` integer, required — Time-to-live in seconds
          - `result` object
            - `id` string, required — ID of the created DNS record
          - `error` OperationDependencyError — Error details for a failed operation dependency
            - `code` string, required — Error code identifying the failure type
            - `message` string, required — Human-readable error description
        - PlatformOperationDnsRecordUpdate — Updates an existing DNS record
          - `id` string, required
          - `@type` 'unstoppabledomains.com/partner.v3.PlatformOperation', required
          - `status` 'PREVIEW' | 'QUEUED' | 'PROCESSING' | 'FAILED' | 'COMPLETED' | 'CANCELLED' | 'AWAITING_UPDATES', required — Status of a platform operation dependency
          - `type` 'DNS_RECORD_UPDATE', required
          - `parameters` object, required
            - `id` string, required — DNS record ID to update
            - `values` string[]
            - `ttl` integer — Time-to-live in seconds
          - `error` OperationDependencyError — Error details for a failed operation dependency
            - `code` string, required — Error code identifying the failure type
            - `message` string, required — Human-readable error description
        - PlatformOperationDnsRecordDelete — Deletes a DNS record
          - `id` string, required
          - `@type` 'unstoppabledomains.com/partner.v3.PlatformOperation', required
          - `status` 'PREVIEW' | 'QUEUED' | 'PROCESSING' | 'FAILED' | 'COMPLETED' | 'CANCELLED' | 'AWAITING_UPDATES', required — Status of a platform operation dependency
          - `type` 'DNS_RECORD_DELETE', required
          - `parameters` object, required
            - `id` string, required — DNS record ID to delete
          - `error` OperationDependencyError — Error details for a failed operation dependency
            - `code` string, required — Error code identifying the failure type
            - `message` string, required — Human-readable error description
        - PlatformOperationDomainSetNameServers — Sets the nameservers for a domain (external nameservers or revert to UD-managed)
          - `id` string, required
          - `@type` 'unstoppabledomains.com/partner.v3.PlatformOperation', required
          - `status` 'PREVIEW' | 'QUEUED' | 'PROCESSING' | 'FAILED' | 'COMPLETED' | 'CANCELLED' | 'AWAITING_UPDATES', required — Status of a platform operation dependency
          - `type` 'DOMAIN_SET_NAMESERVERS', required
          - `parameters` object, required
            - `items` string[] — Nameserver hostnames
          - `error` OperationDependencyError — Error details for a failed operation dependency
            - `code` string, required — Error code identifying the failure type
            - `message` string, required — Human-readable error description
        - PlatformOperationDomainDnsSecuritySetDnssec — Configures DNSSEC DS records at the registry for a domain
          - `id` string, required
          - `@type` 'unstoppabledomains.com/partner.v3.PlatformOperation', required
          - `status` 'PREVIEW' | 'QUEUED' | 'PROCESSING' | 'FAILED' | 'COMPLETED' | 'CANCELLED' | 'AWAITING_UPDATES', required — Status of a platform operation dependency
          - `type` 'DOMAIN_DNS_SECURITY_SET_DNSSEC', required
          - `parameters` object, required
            - `domain` string — Domain name
          - `error` OperationDependencyError — Error details for a failed operation dependency
            - `code` string, required — Error code identifying the failure type
            - `message` string, required — Human-readable error description
        - PlatformOperationDomainDnsSecurityDeleteDnssec — Removes DNSSEC DS records from the registry for a domain
          - `id` string, required
          - `@type` 'unstoppabledomains.com/partner.v3.PlatformOperation', required
          - `status` 'PREVIEW' | 'QUEUED' | 'PROCESSING' | 'FAILED' | 'COMPLETED' | 'CANCELLED' | 'AWAITING_UPDATES', required — Status of a platform operation dependency
          - `type` 'DOMAIN_DNS_SECURITY_DELETE_DNSSEC', required
          - `parameters` object, required
            - `domain` string — Domain name
          - `error` OperationDependencyError — Error details for a failed operation dependency
            - `code` string, required — Error code identifying the failure type
            - `message` string, required — Human-readable error description
        - PlatformOperationDomainDnsSecurityUpdateZone — Updates the DNS zone configuration for DNSSEC signing
          - `id` string, required
          - `@type` 'unstoppabledomains.com/partner.v3.PlatformOperation', required
          - `status` 'PREVIEW' | 'QUEUED' | 'PROCESSING' | 'FAILED' | 'COMPLETED' | 'CANCELLED' | 'AWAITING_UPDATES', required — Status of a platform operation dependency
          - `type` 'DOMAIN_DNS_SECURITY_UPDATE_ZONE', required
          - `parameters` object, required
            - `domain` string — Domain name
          - `error` OperationDependencyError — Error details for a failed operation dependency
            - `code` string, required — Error code identifying the failure type
            - `message` string, required — Human-readable error description
        - PlatformOperationDomainFlagLockUpdate — Updates domain flag lock settings (e.g., transfer lock, delete lock)
          - `id` string, required
          - `@type` 'unstoppabledomains.com/partner.v3.PlatformOperation', required
          - `status` 'PREVIEW' | 'QUEUED' | 'PROCESSING' | 'FAILED' | 'COMPLETED' | 'CANCELLED' | 'AWAITING_UPDATES', required — Status of a platform operation dependency
          - `type` 'DOMAIN_FLAG_LOCK_UPDATE', required
          - `parameters` object, required
            - `locks` DomainFlagLocks — Map of domain flag names to boolean lock values. Keys are DomainFlagType values.
            - `policyLocks` DomainFlagLocks — Map of domain flag names to boolean lock values. Keys are DomainFlagType values.
          - `error` OperationDependencyError — Error details for a failed operation dependency
            - `code` string, required — Error code identifying the failure type
            - `message` string, required — Human-readable error description
        - PlatformOperationDomainDnsContactSet — Updates contact role assignments for the domain
          - `id` string, required
          - `@type` 'unstoppabledomains.com/partner.v3.PlatformOperation', required
          - `status` 'PREVIEW' | 'QUEUED' | 'PROCESSING' | 'FAILED' | 'COMPLETED' | 'CANCELLED' | 'AWAITING_UPDATES', required — Status of a platform operation dependency
          - `type` 'DOMAIN_DNS_CONTACT_SET', required
          - `parameters` object, required
            - `owner` ContactAssignment — Reference to an existing or newly created contact
              - …
            - `admin` ContactAssignment — Reference to an existing or newly created contact
              - …
            - `billing` ContactAssignment — Reference to an existing or newly created contact
              - …
            - `tech` ContactAssignment — Reference to an existing or newly created contact
              - …
          - `error` OperationDependencyError — Error details for a failed operation dependency
            - `code` string, required — Error code identifying the failure type
            - `message` string, required — Human-readable error description
        - PlatformOperationContactCreate — Creates a new contact for use in domain registration or management
          - `id` string, required
          - `@type` 'unstoppabledomains.com/partner.v3.PlatformOperation', required
          - `status` 'PREVIEW' | 'QUEUED' | 'PROCESSING' | 'FAILED' | 'COMPLETED' | 'CANCELLED' | 'AWAITING_UPDATES', required — Status of a platform operation dependency
          - `type` 'CONTACT_CREATE', required
          - `parameters` object, required
            - `purposes` ContactPurpose[], required — Intended roles for this contact
          - `result` object
            - `id` string, required — ID of the created contact
          - `error` OperationDependencyError — Error details for a failed operation dependency
            - `code` string, required — Error code identifying the failure type
            - `message` string, required — Human-readable error description
        - PlatformOperationWebhookCreate — Creates a webhook subscription
          - `id` string, required
          - `@type` 'unstoppabledomains.com/partner.v3.PlatformOperation', required
          - `status` 'PREVIEW' | 'QUEUED' | 'PROCESSING' | 'FAILED' | 'COMPLETED' | 'CANCELLED' | 'AWAITING_UPDATES', required — Status of a platform operation dependency
          - `type` 'WEBHOOK_CREATE', required
          - `parameters` object, required
            - `url` string, required — Webhook callback URL
            - `type` 'OPERATION_FINISHED' | 'OPERATION_ACTION_REQUIRED' | 'OPERATION_CREATED', required
          - `result` object
            - `id` string, required — ID of the created webhook
          - `error` OperationDependencyError — Error details for a failed operation dependency
            - `code` string, required — Error code identifying the failure type
            - `message` string, required — Human-readable error description
        - PlatformOperationWebhookDelete — Deletes a webhook subscription
          - `id` string, required
          - `@type` 'unstoppabledomains.com/partner.v3.PlatformOperation', required
          - `status` 'PREVIEW' | 'QUEUED' | 'PROCESSING' | 'FAILED' | 'COMPLETED' | 'CANCELLED' | 'AWAITING_UPDATES', required — Status of a platform operation dependency
          - `type` 'WEBHOOK_DELETE', required
          - `parameters` object, required
            - `id` string, required — Webhook ID to delete
          - `error` OperationDependencyError — Error details for a failed operation dependency
            - `code` string, required — Error code identifying the failure type
            - `message` string, required — Human-readable error description

## Other responses

- `400` — Invalid request
- `401` — Authentication required
- `403` — Insufficient permissions
- `404` — Resource not found
- `500` — Internal server error

---

[API](https://skmtc.net/unstoppabledomains/apis/reseller-api.md) · [All operations](https://skmtc.net/unstoppabledomains/apis/reseller-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/unstoppabledomains/reseller-api/revisions/e0ac88d02fe7/schema)
