Unstoppable Domains DNS Management API

Manage DNS records, nameservers, and hosting configurations for owned domains (requires authentication)

OpenAPI Specification

unstoppable-domains-dns-management-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Web3 Partner API v3 account DNS Management API
  version: 3.0.0
  contact:
    name: Unstoppable Domains (Partner Engineering)
    email: partnerengineering@unstoppabledomains.com
  description: "# Feature Overview\nThe Web3 Partner API v3 provides you with the ability to lookup, register and manage Web3 domains. The API exposes a RESTful interface for interacting with Web3 domains and the Unstoppable Domains registry.\n- Lookup Domains: Search for specific domains or find suggested alternatives, to determine pricing, availability and on-chain details\n- Registering Domains: Secure domains into your dedicated Custody wallets to maintain the domains on the blockchain\n- Manage Domains: Update records on the blockchain or transfer the domain to external owners, all through a simple API interface\n\n## Custody Solution\nThe API takes the hassle of Web3 out of the equation. Unstoppable Domains will handle all blockchain interactions and concepts, while Partners simply use a RESTful API for managing domains.\n\nSince the domains will be in custody of the Partner, through Unstoppable Domains, the Partner is empowered to make any and all changes to the domains on behalf of their users.\n\nUnder the hood, Unstoppable Domains will manage dedicated custodial wallets for Partner-owned domains. These wallets are not shared between Partners and will uniquely identify the Partner on the various supported blockchains.\n\nShould the need arise to remove domains from custody, this is supported by changing the owner of domains to external owners.\n\n## Payments\nThe API will keep track of a running balance of charges and Unstoppable Domains will periodically invoice Partners to settle that balance. This empowers Partners to build payment processing in a way that works best for them.\n\n\n## Blockchain Support\nDomain details can be viewed across all of our supported blockchains:\n- Ethereum (ETH)\n- Polygon PoS (MATIC)\n- Base (BASE)\n\nDomains can **only be managed on Polygon PoS (MATIC) and Base (BASE)**. Domains on Ethereum (ETH) are readonly, but management support is coming soon.\n\n# Important Concepts\nThe API has some important concepts, in addition to Web3 Domains, that provide added utility, consistency and information.\n\n## Domain Ownership Type\nWeb3 domains exist on the supported Blockchains, and are owned by wallet addresses associated with those Blockchains. \nWe take ownership a step further, to provide improved security and reliability, by including an owner `type` in our ownership data.\nThe result is that a Domain's owner is defined by two values: `address` and `type`\n\nThe owner `type` can be one of the following:\n- `NONE`: Either the domain has never been owned or belongs to a \"burn\" address\n- `UD`: Owned by Unstoppable Domains\n- `SELF`: Domain belongs to a wallet addressed associated with your account, indicating you are able to manage it via the API\n- `EXTERNAL`: Owner doesn't qualify as any of the above. Changing to an `EXTERNAL` owner will result in the domain belonging to an address outside of the management of Unstoppable Domains and we will have no way to recover it.\n\nBy defining an owner in two parts (`address` and `type`) we ensure any irreversible action, such as transferring ownership, is deliberate and intended by requiring both the `address` and `type` in the request.\n\n## Operations\nAll interactions with the API that initiate changes will create an Operation for tracking that change.\nOperations can complete immediately or run in the background over the course of several minutes, depending on the Operation type and current conditions on the Blockchain.\n\nOperations include dependencies that represent the smaller units of work associated with the overall operation. These dependencies can also be tracked through the API and each have their own status and metadata.\n\nYour integration should properly handle and anticipate all of the following possible statuses for Operations and their dependencies:\n- `QUEUED` : The Operation has not started processing yet, but should be started shortly\n- `PROCESSING` : The Operation has started, often involving sending transactions to the Blockchain\n- `SIGNATURE_REQUIRED`: The operation is awaiting a signature in order to continue processing. This is only relevant to Self-Custody domain management.\n- `COMPLETED` : The Operation has finished processing successfully\n- `FAILED` : The Operation has finished processing and has either fully or partially failed\n- `CANCELLED` : The Operation has been cancelled, usually due to a failure with a sibling dependency\n\nSee the [Operations](/openapi/partner/v3/#tag/operations) API for additional information.\n\n## Wallets\nDomains ownership on the Blockchain is handled by associating a Domain with an \"address\". These addresses are typically managed by Wallets (usually in the form of an application on your computer or mobile device) that manage the private key for the public \"address\".\n\nThe API provides endpoints for creating/managing Wallets within your account to enable you to handle Domain ownership distribution in whatever way works for you. Any Domain that is owned by one of your account's Wallets is fully in your control to manage.\n\nSee the [Wallets](/openapi/partner/v3/#tag/wallets) API for additional information.\n\n# Get Access\nSee our quickstart guide for getting your Partner API key: [Set up Partner API Access](https://docs.unstoppabledomains.com/domain-distribution-and-management/quickstart/retrieve-an-api-key/)\n\nIf you have any questions, contact our [Partner Engineering Team](mailto:partnerengineering@unstoppabledomains.com?subject=Partner%20API%20v3%20Inquiry) to help with API access or learn more.\n"
servers:
- url: https://api.unstoppabledomains.com/partner/v3
  description: Production
- url: https://api.ud-sandbox.com/partner/v3
  description: Sandbox
security:
- bearer: []
tags:
- name: DNS Management
  description: Manage DNS records, nameservers, and hosting configurations for owned domains (requires authentication)
paths:
  /mcp/v1/actions/ud_dns_records_list:
    post:
      operationId: dnsRecordsList
      summary: List DNS records for a domain
      description: List all DNS records for a domain in your portfolio. Supports filtering by record type and subdomain, with pagination.
      tags:
      - DNS Management
      security:
      - bearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - domain
              properties:
                domain:
                  type: string
                  description: Domain name (e.g., "example.com")
                type:
                  type: string
                  description: Filter by record type (A, AAAA, CNAME, MX, TXT, NS)
                subName:
                  type: string
                  description: Filter by subdomain ("@" for root, "www", "*" for wildcard)
                cursor:
                  type: string
                  description: Pagination cursor
      responses:
        '200':
          description: DNS records list
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DnsRecordsListResponse'
        '401':
          description: Authentication required
  /mcp/v1/actions/ud_dns_record_add:
    post:
      operationId: dnsRecordAdd
      summary: Add DNS records (bulk)
      description: Add DNS records to one or more domains. Supports A, AAAA, CNAME, MX, TXT, NS, SRV, and CAA record types. Bulk operations up to 50 records.
      tags:
      - DNS Management
      security:
      - bearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - records
              properties:
                records:
                  type: array
                  minItems: 1
                  maxItems: 50
                  description: Array of DNS record configurations (1-50)
                  items:
                    type: object
                    required:
                    - domain
                    - type
                    - values
                    properties:
                      domain:
                        type: string
                        description: Domain name (e.g., "example.com")
                      type:
                        type: string
                        description: Record type (A, AAAA, CNAME, MX, TXT, NS, SRV, CAA)
                      subName:
                        type: string
                        default: '@'
                        description: Subdomain ("@" for root, "www", "*" for wildcard)
                      values:
                        type: array
                        items:
                          type: string
                        description: Record values
                      ttl:
                        type: number
                        default: 3600
                        description: Time-to-live in seconds (60-86400)
                upsertMode:
                  type: string
                  enum:
                  - append
                  - replace
                  - disallowed
                  description: Global setting for how to handle existing records
      responses:
        '200':
          description: Bulk operation result
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkDnsOperationResponse'
        '401':
          description: Authentication required
  /mcp/v1/actions/ud_dns_record_update:
    post:
      operationId: dnsRecordUpdate
      summary: Update DNS records (bulk)
      description: Update existing DNS records on one or more domains. Bulk operations up to 50 records.
      tags:
      - DNS Management
      security:
      - bearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - records
              properties:
                records:
                  type: array
                  minItems: 1
                  maxItems: 50
                  description: Array of record update configurations (1-50)
                  items:
                    type: object
                    required:
                    - domain
                    - recordId
                    - values
                    properties:
                      domain:
                        type: string
                        description: Domain name
                      recordId:
                        type: string
                        description: Record ID from ud_dns_records_list
                      values:
                        type: array
                        items:
                          type: string
                        description: New record values
                      ttl:
                        type: number
                        default: 3600
                        description: 'Time-to-live in seconds (60-86400). Default: 3600'
      responses:
        '200':
          description: Bulk operation result
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkDnsOperationResponse'
        '401':
          description: Authentication required
  /mcp/v1/actions/ud_dns_record_remove:
    post:
      operationId: dnsRecordRemove
      summary: Remove DNS records (bulk)
      description: Remove specific DNS records by ID from one or more domains. Bulk operations up to 50 records.
      tags:
      - DNS Management
      security:
      - bearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - records
              properties:
                records:
                  type: array
                  minItems: 1
                  maxItems: 50
                  description: Array of record removal configurations (1-50)
                  items:
                    type: object
                    required:
                    - domain
                    - recordId
                    properties:
                      domain:
                        type: string
                        description: Domain name
                      recordId:
                        type: string
                        description: Record ID to remove
      responses:
        '200':
          description: Bulk operation result
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkDnsOperationResponse'
        '401':
          description: Authentication required
  /mcp/v1/actions/ud_dns_records_remove_all:
    post:
      operationId: dnsRecordsRemoveAll
      summary: Remove all DNS records (bulk)
      description: Remove ALL user-created DNS records from one or more domains. Requires explicit confirmation. Bulk operations up to 50 domains.
      tags:
      - DNS Management
      security:
      - bearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - domains
              - confirmDeleteAll
              properties:
                domains:
                  type: array
                  minItems: 1
                  maxItems: 50
                  description: Array of domains to remove all records from (1-50)
                  items:
                    type: object
                    required:
                    - name
                    properties:
                      name:
                        type: string
                        description: Domain name
                confirmDeleteAll:
                  type: boolean
                  const: true
                  description: Must be exactly true to confirm this destructive operation
      responses:
        '200':
          description: Bulk operation result
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkDnsOperationResponse'
        '401':
          description: Authentication required
  /mcp/v1/actions/ud_dns_nameservers_list:
    post:
      operationId: dnsNameserversList
      summary: List nameservers for a domain
      description: List current nameservers and check if using UD defaults or custom nameservers.
      tags:
      - DNS Management
      security:
      - bearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - domain
              properties:
                domain:
                  type: string
                  description: Domain name
                includeDnssec:
                  type: boolean
                  description: Include DNSSEC info
      responses:
        '200':
          description: Nameservers list
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DnsNameserversListResponse'
        '401':
          description: Authentication required
  /mcp/v1/actions/ud_dns_nameservers_set_custom:
    post:
      operationId: dnsNameserversSetCustom
      summary: Set custom nameservers (bulk)
      description: Configure external nameservers (e.g., Cloudflare, Route 53) for one or more domains. Supports up to 50 domains per request.
      tags:
      - DNS Management
      security:
      - bearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - domains
              properties:
                domains:
                  type: array
                  items:
                    type: object
                    required:
                    - name
                    - nameservers
                    properties:
                      name:
                        type: string
                        description: Domain name
                      nameservers:
                        type: array
                        items:
                          type: string
                        minItems: 2
                        maxItems: 12
                        description: Nameserver hostnames
                      dnssec:
                        type: object
                        description: Optional DNSSEC DS records
                  minItems: 1
                  maxItems: 50
                  description: Array of domain configurations
      responses:
        '200':
          description: Bulk operation result
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkDnsOperationResponse'
        '401':
          description: Authentication required
  /mcp/v1/actions/ud_dns_nameservers_set_default:
    post:
      operationId: dnsNameserversSetDefault
      summary: Reset to UD default nameservers (bulk)
      description: Switch back to Unstoppable Domains default nameservers for one or more domains. Supports up to 50 domains per request.
      tags:
      - DNS Management
      security:
      - bearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - domains
              properties:
                domains:
                  type: array
                  items:
                    type: object
                    required:
                    - name
                    properties:
                      name:
                        type: string
                        description: Domain name
                  minItems: 1
                  maxItems: 50
                  description: Array of domains
      responses:
        '200':
          description: Bulk operation result
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkDnsOperationResponse'
        '401':
          description: Authentication required
  /mcp/v1/actions/ud_dns_hosting_list:
    post:
      operationId: dnsHostingList
      summary: List hosting configurations
      description: List hosting/forwarding configurations (redirects, reverse proxy, hosted sites, UD Profile).
      tags:
      - DNS Management
      security:
      - bearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - domain
              properties:
                domain:
                  type: string
                  description: Domain name
                cursor:
                  type: string
                  description: Pagination cursor
      responses:
        '200':
          description: Hosting configurations
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DnsHostingListResponse'
        '401':
          description: Authentication required
  /mcp/v1/actions/ud_dns_hosting_add:
    post:
      operationId: dnsHostingAdd
      summary: Add hosting configuration (bulk)
      description: 'Configure hosting for one or more domains: for-sale listing page, permanent redirect (301), temporary redirect (302), or reverse proxy. Supports up to 50 domains per request.'
      tags:
      - DNS Management
      security:
      - bearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - domains
              properties:
                domains:
                  type: array
                  items:
                    type: object
                    required:
                    - name
                    - type
                    properties:
                      name:
                        type: string
                        description: Domain name
                      type:
                        type: string
                        enum:
                        - LISTING_PAGE
                        - REDIRECT_301
                        - REDIRECT_302
                        - REVERSE_PROXY
                        description: Hosting type
                      targetUrl:
                        type: string
                        description: Destination URL (required for REDIRECT_301, REDIRECT_302, REVERSE_PROXY)
                      subName:
                        type: string
                        description: Subdomain to configure
                      forceCompatibility:
                        type: boolean
                        description: Auto-configure UD nameservers if needed
                  minItems: 1
                  maxItems: 50
                  description: Array of domain hosting configurations
      responses:
        '200':
          description: Bulk operation result
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkDnsOperationResponse'
        '401':
          description: Authentication required
  /mcp/v1/actions/ud_dns_hosting_remove:
    post:
      operationId: dnsHostingRemove
      summary: Remove hosting configuration (bulk)
      description: Remove hosting/forwarding configuration from one or more domains. Supports up to 50 domains per request.
      tags:
      - DNS Management
      security:
      - bearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - domains
              properties:
                domains:
                  type: array
                  items:
                    type: object
                    required:
                    - name
                    properties:
                      name:
                        type: string
                        description: Domain name
                      subName:
                        type: string
                        description: Subdomain to remove
                      deleteAll:
                        type: boolean
                        description: Remove ALL hosting configs for this domain
                  minItems: 1
                  maxItems: 50
                  description: Array of domains to remove hosting from
                confirmDeleteAll:
                  type: boolean
                  enum:
                  - true
                  description: 'Must be true when any domain has deleteAll: true'
      responses:
        '200':
          description: Bulk operation result
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkDnsOperationResponse'
        '401':
          description: Authentication required
  /mcp/v1/actions/ud_domain_pending_operations:
    post:
      operationId: domainPendingOperations
      summary: Get pending operations for multiple domains
      description: Check status of DNS operations across multiple domains. Use to track changes and verify completion after bulk operations.
      tags:
      - DNS Management
      security:
      - bearerAuth: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - domains
              properties:
                domains:
                  type: array
                  items:
                    type: object
                    required:
                    - name
                    properties:
                      name:
                        type: string
                        description: Domain name
                  minItems: 1
                  maxItems: 50
                  description: Array of domains to check for pending operations
                includeCompleted:
                  type: boolean
                  description: Include completed operations (last 24h)
      responses:
        '200':
          description: Pending operations for all domains
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PendingOperationsResponse'
        '401':
          description: Authentication required
components:
  schemas:
    DnsRecordsListResponse:
      type: object
      properties:
        domain:
          type: string
        records:
          type: array
          items:
            type: object
            properties:
              id:
                type:
                - string
                - 'null'
                description: Record ID (may be undefined for system records)
              type:
                type: string
                enum:
                - A
                - AAAA
                - CNAME
                - MX
                - TXT
                - NS
                - SRV
                - CAA
              subName:
                type:
                - string
                - 'null'
                description: Record subdomain (relative name)
              values:
                type: array
                items:
                  type: string
                description: Record values
              ttl:
                type: number
                description: Time to live in seconds
              readonly:
                type: boolean
                description: Whether this record is read-only and cannot be modified
              readonlyReasons:
                type: array
                items:
                  type: string
                description: Reasons why the record is read-only
        pagination:
          type: object
          properties:
            hasMore:
              type: boolean
            nextCursor:
              type:
              - string
              - 'null'
        dnsStatus:
          type:
          - object
          - 'null'
          description: Present when DNS is not managed by UD. Explains the current DNS configuration state.
          properties:
            configured:
              type: boolean
              description: Whether nameservers are set up for this domain
            provider:
              type:
              - string
              - 'null'
              enum:
              - ud
              - external
              description: 'DNS provider: "ud" for UD-managed, "external" for third-party'
            message:
              type: string
              description: Human-readable explanation and suggested next steps
    PendingOperationsResponse:
      type: object
      description: Bulk response for pending operations across multiple domains
      properties:
        results:
          type: array
          items:
            type: object
            properties:
              domain:
                type: string
                description: Domain name
              success:
                type: boolean
                description: Whether the lookup succeeded
              hasPendingOperations:
                type: boolean
                description: Whether any operations are still in progress
              operations:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: string
                      description: Operation ID
                    type:
                      type: string
                      description: Operation type
                    status:
                      type: string
                      description: UserOperationStatus string, e.g. PENDING, PENDING_SIGNATURE, COMPLETED, FAILED
                    createdAt:
                      type: string
                    updatedAt:
                      type: string
                    originOperationId:
                      type:
                      - string
                      - 'null'
                      description: ID of the originating operation, if any
                    errorCode:
                      type:
                      - string
                      - 'null'
                      description: Error code if the operation failed, otherwise null
              error:
                type: string
                description: Error message (if lookup failed)
        successCount:
          type: number
          description: Number of domains successfully queried
        failureCount:
          type: number
          description: Number of domains that failed lookup
        summary:
          type: object
          description: Aggregate summary across all domains
          properties:
            totalPendingCount:
              type: number
              description: Total pending operations across all domains
            domainsWithPending:
              type: array
              items:
                type: string
              description: List of domain names with pending operations
    BulkDnsOperationResponse:
      type: object
      description: Response for bulk DNS operations (nameservers, hosting). Contains results per domain with success/failure tracking.
      properties:
        results:
          type: array
          items:
            type: object
            properties:
              domain:
                type: string
                description: Domain name
              success:
                type: boolean
                description: Whether the operation succeeded
              operationId:
                type: string
                description: Track with ud_domain_pending_operations (if successful)
              nameservers:
                type: array
                items:
                  type: string
                description: Configured nameservers (for nameserver operations)
              hasDnssec:
                type: boolean
                description: Whether DNSSEC is configured (for nameserver operations)
              config:
                type: object
                description: Hosting config (for hosting operations)
                properties:
                  type:
                    type: string
                  subName:
                    type:
                    - string
                    - 'null'
                  targetUrl:
                    type:
                    - string
                    - 'null'
              subName:
                type: string
                description: Subdomain removed (for hosting remove operations)
              deletedAll:
                type: boolean
                description: Whether all configs were removed (for hosting remove)
              error:
                type: string
                description: Error message (if failed)
        successCount:
          type: number
          description: Number of successful operations
        failureCount:
          type: number
          description: Number of failed operations
    DnsNameserversListResponse:
      type: object
      properties:
        domain:
          type: string
        nameservers:
          type: array
          items:
            type: string
          description: List of nameserver hostnames
        isUsingDefaultNameservers:
          type: boolean
          description: True if using UD default nameservers
        dnssec:
          type:
          - object
          - 'null'
          properties:
            enabled:
              type: boolean
            records:
              type: array
              items:
                type: object
                properties:
                  keyTag:
                    type: number
                  algorithm:
                    type: number
                  digestType:
                    type: number
                  digest:
                    type: string
    DnsHostingListResponse:
      type: object
      properties:
        domain:
          type: string
        configs:
          type: array
          items:
            type: object
            properties:
              type:
                type: string
                enum:
                - GCS_HOSTED
                - 

# --- truncated at 32 KB (32 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/unstoppable-domains/refs/heads/main/openapi/unstoppable-domains-dns-management-api-openapi.yml