---
title: "Release a custom domain from an owned node's app"
method: DELETE
path: "/api/nodes/{node_id}/services/{service}/domains/{domain}"
tags: ["nodes"]
---

# Release a custom domain from an owned node's app

`DELETE /api/nodes/{node_id}/services/{service}/domains/{domain}`

## Request

- Base URL: `https://app.nerdit.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://app.nerdit.ai/api/nodes/{node_id}/services/{service}/domains/{domain}`
- Auth: none declared

Release one name. Idempotent on the node: ``removed: false`` is normal.

The same pipeline the bind runs, minus the body. One extra rule on the
way out: the daemon echoes its ``<refused>`` sentinel for a name that did
not validate, and this route renders that as ``null`` rather than as
something a reader could mistake for a name.

## Path parameters

- `service` string, required
- `domain` string, required
- `node_id` string, uuid, required

## Response `200`

Successful Response

- DomainReleasedView: ``DELETE`` answer. Idempotent: ``removed: false`` is a normal outcome.
  - `service_name` string, required
  - `domain` string, nullable, required
  - `removed` boolean, required

## Other responses

- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not Found
- `409`: Conflict
- `422`: Unprocessable Content
- `502`: Bad Gateway

---

[API](https://skmtc.dev/nerdit/apis/nerdit-cloud-web.md) · [All operations](https://skmtc.dev/nerdit/apis/nerdit-cloud-web/llms.txt) · [OpenAPI document](https://skmtc.dev/nerdit/apis/nerdit-cloud-web/revisions/06e3b44b58be?raw)
