---
updatedAt: 2026-06-04T19:58:43.000Z
agentTools:
  projectIndex: https://docs.wristband.dev/llms.txt
---

# Deactivate Custom Domain

Deactivates the specified custom domain.

### Required Permissions

Below is the list of required permissions needed to interact with this API.
For each permission, the allowed permission boundaries are also specified.

| Permission                          | Boundary              | Description                                                                                                                               |
| ----------------------------------- | --------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
| **custom-domain:manage-activation** | Application           | The subject can deactivate custom domains under the application to which the subject belongs.                                             |
|                                     | Tenant                | The subject can deactivate custom domains associated with the tenant to which the subject belongs.                                        |
|                                     | Tenant Inclusion List | The subject can deactivate custom domains associated with tenants specified in the tenant inclusion list.                                 |
|                                     | Tenant Exclusion List | The subject can deactivate custom domains associated with tenants in the subject's application that are not on the tenant exclusion list. |

# OpenAPI definition

```json
{
  "openapi": "3.1.0",
  "info": {
    "title": "Resource Management APIs",
    "version": "1.0.0",
    "description": "Resource Management APIs",
    "license": {
      "name": "Private",
      "url": "https://wristband.dev/terms/"
    },
    "termsOfService": "https://wristband.dev/terms/",
    "contact": {
      "name": "Wristband Support",
      "email": "support@wristband.dev",
      "url": "https://wristband.dev/contact/"
    }
  },
  "servers": [
    {
      "url": "https://{application_vanity_domain}",
      "description": "Wristband application scoped URL.",
      "variables": {
        "application_vanity_domain": {
          "default": "yourapp-yourorg.us.wristband.dev",
          "description": "Wristband vanity domain scoped to a specific application."
        }
      }
    }
  ],
  "tags": [
    {
      "name": "Custom Domains",
      "description": "Custom Domains",
      "x-displayName": "Custom Domains"
    }
  ],
  "paths": {
    "/api/v1/custom-domains/{customDomainId}/deactivate": {
      "parameters": [
        {
          "$ref": "#/components/parameters/Resource_Management_APIs_CustomDomainId"
        }
      ],
      "post": {
        "summary": "Deactivate Custom Domain",
        "operationId": "deactivateCustomDomainV1",
        "tags": [
          "Custom Domains"
        ],
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Resource_Management_APIs_CustomDomain"
                },
                "examples": {
                  "Example 1": {
                    "$ref": "#/components/examples/Resource_Management_APIs_CustomDomain"
                  }
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/Resource_Management_APIs_400-default"
          },
          "401": {
            "$ref": "#/components/responses/Resource_Management_APIs_401"
          },
          "403": {
            "$ref": "#/components/responses/Resource_Management_APIs_403"
          },
          "404": {
            "$ref": "#/components/responses/Resource_Management_APIs_404-custom-domain-not-found"
          },
          "405": {
            "$ref": "#/components/responses/Resource_Management_APIs_405"
          },
          "406": {
            "$ref": "#/components/responses/Resource_Management_APIs_406"
          },
          "500": {
            "$ref": "#/components/responses/Resource_Management_APIs_500"
          },
          "503": {
            "$ref": "#/components/responses/Resource_Management_APIs_503"
          }
        },
        "security": [
          {
            "Resource_Management_APIs_BearerAuth": []
          }
        ]
      }
    }
  },
  "components": {
    "securitySchemes": {
      "Resource_Management_APIs_BearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "JWT"
      }
    },
    "parameters": {
      "Resource_Management_APIs_CustomDomainId": {
        "name": "customDomainId",
        "description": "The ID of the custom domain",
        "in": "path",
        "required": true,
        "schema": {
          "type": "string",
          "example": "jayovsssgbgbpk47ihblujcm2e",
          "minLength": 1,
          "maxLength": 26
        }
      }
    },
    "schemas": {
      "Resource_Management_APIs_id": {
        "type": "string",
        "minLength": 1,
        "maxLength": 26,
        "example": "pl4a4aa4jzydksmrf3jnu5yfcw",
        "description": "Globally unique Id of the resource.",
        "readOnly": true
      },
      "Resource_Management_APIs_api-error": {
        "title": "ApiError",
        "type": "object",
        "description": "API error object",
        "x-examples": {
          "Example 1": {
            "code": "invalid_request",
            "message": "The request was invalid",
            "ticket": "11t7n71hi5e6t"
          }
        },
        "properties": {
          "type": {
            "type": "string",
            "example": "base_error",
            "minLength": 1,
            "description": "The type of the API error.",
            "readOnly": true
          },
          "code": {
            "type": "string",
            "example": "invalid_request",
            "minLength": 1,
            "description": "A code identifying the error that occurred.",
            "readOnly": true
          },
          "message": {
            "type": "string",
            "example": "The request was invalid",
            "description": "A free text message describing the error.  This error message is only meant to help developers understand the cause of the error.  It should not be used for programmatic purposes.",
            "readOnly": true
          },
          "ticket": {
            "type": "string",
            "example": "11t7n71hi5e6t",
            "description": "Ticket that can help correlate the error to the backend",
            "readOnly": true
          },
          "details": {
            "type": "object",
            "description": "A map of details about the error. The keys are defined by the API.",
            "additionalProperties": {},
            "example": {
              "attemptsRemaining": 4
            }
          }
        },
        "required": [
          "type",
          "code"
        ]
      },
      "Resource_Management_APIs_constraint-violations-api-error": {
        "title": "ConstraintViolationsApiError",
        "description": "An API error that occurred due to a constraint violation",
        "allOf": [
          {
            "$ref": "#/components/schemas/Resource_Management_APIs_api-error"
          },
          {
            "type": "object",
            "readOnly": true,
            "required": [
              "violations"
            ],
            "properties": {
              "violations": {
                "type": "object",
                "readOnly": true,
                "required": [
                  "code"
                ],
                "properties": {
                  "code": {
                    "type": "string",
                    "description": "A code identifying the constraint violation.",
                    "minLength": 1,
                    "example": "too_long"
                  },
                  "constraintAttributes": {
                    "type": "object",
                    "description": "A map of constraint attribute values.",
                    "additionalProperties": {
                      "type": "string"
                    },
                    "example": {
                      "maxLength": "10"
                    }
                  }
                }
              }
            }
          }
        ],
        "x-examples": {
          "Example 1": {
            "type": "constraint_violations_error",
            "code": "message_body_constraint_violations",
            "message": "The request contained invalid fields",
            "ticket": "11t7n71hi5e6t",
            "violations": {
              "field1": {
                "code": "too_long",
                "constraintAttributes": {
                  "maxLength": "10"
                }
              },
              "field2": {
                "code": "not_null"
              }
            }
          }
        }
      },
      "Resource_Management_APIs_createOwnerId": {
        "description": "[Required on Create] The ID of the owner of the resource.",
        "type": "string",
        "minLength": 1,
        "maxLength": 26,
        "example": "d7aml4q5lza3fdi2gavzdliouy"
      },
      "Resource_Management_APIs_CustomDomain": {
        "title": "Custom Domain",
        "description": "Custom Domain",
        "type": "object",
        "x-tags": [
          "Models"
        ],
        "properties": {
          "id": {
            "$ref": "#/components/schemas/Resource_Management_APIs_id"
          },
          "ownerType": {
            "$ref": "#/components/schemas/Resource_Management_APIs_createOwnerType"
          },
          "ownerId": {
            "$ref": "#/components/schemas/Resource_Management_APIs_createOwnerId"
          },
          "domainName": {
            "description": "[Required on Create] The custom domain name.  This value must be a subdomain of a valid public suffix and can't end with `wristband.dev`. The domain name must be globally unique (case-insensitive).",
            "type": "string",
            "pattern": "hostname",
            "minLength": 1,
            "maxLength": 100,
            "example": "auth.custom.com"
          },
          "status": {
            "description": "The status of the custom domain.  In order to send requests to the custom domain it must have a status of `VERIFIED` or `VERIFIED_WITH_ERRORS`.",
            "type": "string",
            "enum": [
              "UNVERIFIED",
              "VERIFIED",
              "VERIFIED_WITH_ERRORS"
            ],
            "minLength": 1,
            "maxLength": 45,
            "readOnly": true,
            "example": "VERIFIED"
          },
          "isActive": {
            "description": "Boolean indicating if the custom domain is active.  When a custom domain is active it will be used in the following places:\n  * For redirects to Wristband hosted pages\n  * For action links in emails\n  * For the issuer URL inside access and ID tokens\n  * For the default OAuth 2 and SIWA IdP redirect URLs\n  * For the default SAML 2 SP URLs.\n  * For the endpoint URLs returned from the `/.well-known/openid-configuration` API.\n\nNote, a custom domain can only be activated if it has a state of `VERIFIED` or `VERIFIED_WITH_ERRORS`.  Also, only one custom domain can be active for a single owner at a time.",
            "type": "boolean",
            "readOnly": true,
            "example": true
          },
          "dnsRecords": {
            "description": "The DNS records associated to the custom domain.  All DNS records must have a status of `VERIFIED` in order for the custom domain to have a status of `VERIFIED`.",
            "type": "array",
            "readOnly": true,
            "uniqueItems": true,
            "items": {
              "$ref": "#/components/schemas/Resource_Management_APIs_DnsRecord"
            }
          },
          "metadata": {
            "$ref": "#/components/schemas/Resource_Management_APIs_CustomDomainMetadata"
          }
        },
        "example": {
          "id": "a4jzydksmrf3jnu5yfcwpl4a4a",
          "ownerType": "APPLICATION",
          "ownerId": "4a4aa4jzydksmrf3jnu5yfcwpl",
          "domainName": "auth.custom.com",
          "status": "VERIFIED",
          "isActive": true,
          "dnsRecords": [
            {
              "name": "_wb-verification.auth.custom.com",
              "recordType": "TXT",
              "value": "verification-code",
              "status": "VERIFIED"
            },
            {
              "name": "auth.custom.com",
              "recordType": "CNAME",
              "value": "custom-domains.wristband.dev",
              "status": "VERIFIED"
            },
            {
              "name": "*.auth.custom.com",
              "recordType": "CNAME",
              "value": "custom-domains.wristband.dev",
              "status": "VERIFIED"
            },
            {
              "name": "_acme-challenge.auth.custom.com",
              "recordType": "CNAME",
              "value": "auth.custom.com.dcv.wristband.dev",
              "status": "VERIFIED"
            }
          ],
          "metadata": {
            "lastModifiedTime": "2016-06-13T19:49:31.686Z",
            "creationTime": "2016-06-13T19:49:31.686Z",
            "lastVerificationTime": "2016-06-13T19:49:31.686Z"
          }
        }
      },
      "Resource_Management_APIs_CustomDomainMetadata": {
        "title": "Custom Domain Metadata",
        "description": "Custom Domain Metadata",
        "type": "object",
        "readOnly": true,
        "x-tags": [
          "Models"
        ],
        "properties": {
          "lastModifiedTime": {
            "type": "string",
            "format": "date-time",
            "example": "2016-06-13T19:49:31.686Z",
            "description": "The time at which the custom domain was last modified",
            "readOnly": true
          },
          "creationTime": {
            "type": "string",
            "format": "date-time",
            "example": "2016-06-13T19:49:31.686Z",
            "description": "The time at which the custom domain was created",
            "readOnly": true
          },
          "lastVerificationTime": {
            "type": "string",
            "format": "date-time",
            "example": "2016-06-13T19:49:31.686Z",
            "description": "The time at which the custom domain was last verified.",
            "readOnly": true
          }
        },
        "example": {
          "lastModifiedTime": "2016-06-13T19:49:31.686Z",
          "creationTime": "2016-06-13T19:49:31.686Z",
          "lastVerificationTime": "2016-06-13T19:49:31.686Z"
        }
      },
      "Resource_Management_APIs_DnsRecord": {
        "title": "DNS Record",
        "description": "DNS Record",
        "type": "object",
        "readOnly": true,
        "x-tags": [
          "Models"
        ],
        "properties": {
          "name": {
            "description": "The name of the DNS record.",
            "type": "string",
            "minLength": 1,
            "maxLength": 253,
            "readOnly": true,
            "example": "_wb-verification.mail.custom.io"
          },
          "recordType": {
            "description": "The type of the DNS record.",
            "type": "string",
            "enum": [
              "CNAME",
              "TXT"
            ],
            "minLength": 1,
            "maxLength": 45,
            "readOnly": true,
            "example": "TXT"
          },
          "value": {
            "description": "The DNS record value.",
            "type": "string",
            "minLength": 1,
            "maxLength": 512,
            "readOnly": true,
            "example": "v=spf1 include:_spf.wristband.dev ~all"
          },
          "status": {
            "description": "The status of the DNS record.  If the record can be resolved using a DNS lookup and has the correct value then its status will be set to `VERIFIED`.",
            "type": "string",
            "enum": [
              "UNVERIFIED",
              "VERIFIED"
            ],
            "minLength": 1,
            "maxLength": 45,
            "readOnly": true,
            "example": "VERIFIED"
          },
          "isActive": {
            "description": "Boolean indicating if the DNS record is actively being used.  In order for an email domain to have a status of `VERIFIED`, all its associated active DNS records must have a status of `VERIFIED`.",
            "type": "boolean",
            "readOnly": true,
            "example": true
          }
        },
        "example": {
          "name": "_wb-verification.mail.custom.io",
          "recordType": "TXT",
          "value": "v=spf1 include:_spf.wristband.dev ~all",
          "status": "VERIFIED",
          "isActive": true
        }
      },
      "Resource_Management_APIs_createOwnerType": {
        "description": "[Required on Create] The type of the owner of the resource.",
        "type": "string",
        "enum": [
          "APPLICATION",
          "TENANT"
        ],
        "minLength": 1,
        "maxLength": 30,
        "example": "APPLICATION"
      }
    },
    "examples": {
      "Resource_Management_APIs_CustomDomain": {
        "description": "Basic example of a custom domain object with all fields present.",
        "value": {
          "id": "a4jzydksmrf3jnu5yfcwpl4a4a",
          "ownerType": "APPLICATION",
          "ownerId": "4a4aa4jzydksmrf3jnu5yfcwpl",
          "domainName": "auth.custom.com",
          "status": "VERIFIED",
          "isActive": true,
          "dnsRecords": [
            {
              "name": "_wb-verification.auth.custom.com",
              "recordType": "TXT",
              "value": "verification-code",
              "status": "VERIFIED"
            },
            {
              "name": "auth.custom.com",
              "recordType": "CNAME",
              "value": "custom-domains.wristband.dev",
              "status": "VERIFIED"
            },
            {
              "name": "*.auth.custom.com",
              "recordType": "CNAME",
              "value": "custom-domains.wristband.dev",
              "status": "VERIFIED"
            },
            {
              "name": "_acme-challenge.auth.custom.com",
              "recordType": "CNAME",
              "value": "auth.custom.com.dcv.wristband.dev",
              "status": "VERIFIED"
            }
          ],
          "metadata": {
            "lastModifiedTime": "2016-06-13T19:49:31.686Z",
            "creationTime": "2016-06-13T19:49:31.686Z",
            "lastVerificationTime": "2016-06-13T19:49:31.686Z"
          }
        }
      }
    },
    "responses": {
      "Resource_Management_APIs_401": {
        "description": "Unauthorized",
        "headers": {
          "WWW-Authenticate": {
            "description": "Includes details on the failed authentication condition. This header is set in accordance with the [OAuth2 specification](https://datatracker.ietf.org/doc/html/rfc6750#section-3).",
            "schema": {
              "type": "string",
              "example": "Bearer error=\"invalid_token\", error_description=\"The provided access token was invalid\""
            }
          }
        },
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Resource_Management_APIs_api-error"
            },
            "examples": {
              "code - unauthenticated": {
                "value": {
                  "type": "base_error",
                  "code": "invalid_access_token",
                  "message": "The provided access token was invalid",
                  "ticket": "1u0d0edhwbjsd"
                }
              }
            }
          }
        }
      },
      "Resource_Management_APIs_403": {
        "description": "Forbidden",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Resource_Management_APIs_api-error"
            },
            "examples": {
              "code - unauthorized": {
                "value": {
                  "type": "base_error",
                  "code": "unauthorized",
                  "message": "The request failed authorization",
                  "ticket": "11t7n71hi5e6t"
                }
              }
            }
          }
        }
      },
      "Resource_Management_APIs_405": {
        "description": "Method Not Allowed",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Resource_Management_APIs_api-error"
            },
            "examples": {
              "code - method_not_supported": {
                "value": {
                  "type": "base_error",
                  "code": "method_not_supported",
                  "message": "The specified HTTP method is not supported",
                  "ticket": "11t7n71hi5e6t"
                }
              }
            }
          }
        }
      },
      "Resource_Management_APIs_406": {
        "description": "Not Acceptable",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Resource_Management_APIs_api-error"
            },
            "examples": {
              "code - not_acceptable": {
                "value": {
                  "type": "base_error",
                  "code": "not_acceptable",
                  "message": "The Accept header was invalid",
                  "ticket": "11t7n71hi5e6t"
                }
              }
            }
          }
        }
      },
      "Resource_Management_APIs_500": {
        "description": "Internal Server Error",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Resource_Management_APIs_api-error"
            },
            "examples": {
              "code - internal_server_failure ": {
                "value": {
                  "type": "base_error",
                  "code": "internal_server_failure",
                  "message": "An unexpected error occurred while processing the request",
                  "ticket": "11t7n71hi5e6t"
                }
              }
            }
          }
        }
      },
      "Resource_Management_APIs_503": {
        "description": "Service Unavailable",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Resource_Management_APIs_api-error"
            },
            "examples": {
              "code - service_unavailable": {
                "value": {
                  "type": "base_error",
                  "code": "service_unavailable",
                  "message": "The service is currently unavailable",
                  "ticket": "11t7n71hi5e6t"
                }
              }
            }
          }
        }
      },
      "Resource_Management_APIs_400-default": {
        "description": "Bad Request",
        "content": {
          "application/json": {
            "schema": {
              "oneOf": [
                {
                  "$ref": "#/components/schemas/Resource_Management_APIs_api-error"
                },
                {
                  "$ref": "#/components/schemas/Resource_Management_APIs_constraint-violations-api-error"
                }
              ]
            },
            "examples": {
              "code - invalid_request": {
                "value": {
                  "type": "base_error",
                  "code": "invalid_request",
                  "message": "The request was invalid",
                  "ticket": "11t7n71hi5e6t"
                }
              },
              "code - request_constraint_violations": {
                "value": {
                  "type": "constraint_violations_error",
                  "code": "message_body_constraint_violations",
                  "message": "The message body contained invalid fields",
                  "ticket": "11t7n71hi5e6t",
                  "violations": {
                    "field1": {
                      "code": "too_long",
                      "constraintAttributes": {
                        "maxLength": 10
                      }
                    },
                    "field2": {
                      "code": "not_null"
                    }
                  }
                }
              }
            }
          }
        }
      },
      "Resource_Management_APIs_404-custom-domain-not-found": {
        "description": "Example response",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Resource_Management_APIs_api-error"
            },
            "examples": {
              "code - custom_domain_not_found": {
                "value": {
                  "type": "base_error",
                  "code": "custom_domain_not_found",
                  "message": "Custom domain could not be found",
                  "ticket": "11t7n71hi5e6t"
                }
              }
            }
          }
        }
      }
    }
  },
  "x-tagGroups": [
    {
      "name": "Resource Management APIs",
      "tags": [
        "Applications",
        "Auth Factors",
        "Auth Sessions",
        "Auth Session Policies",
        "Bot Detection Policies",
        "Custom Claims",
        "Custom Domains",
        "Email Brandings",
        "Email Domains",
        "Email Policies",
        "External IdP Profiles",
        "External IdP Tokens",
        "Identity Providers",
        "IdP Attribute Mappings",
        "IdP Role Mappings",
        "MFA Policies",
        "OAuth2 Clients",
        "Page Brandings",
        "Password Policies",
        "Permissions",
        "Permission Boundaries",
        "Permission Groups",
        "Refresh Tokens",
        "Remembered Tenants",
        "Roles",
        "Role Assignment Policies",
        "Signing Keys",
        "Tenants",
        "Users",
        "User Schemas",
        "Vanity Domains",
        "Webhook Policies",
        "Workflow Policies"
      ]
    }
  ]
}
```