# Remove custom domain

Remove a custom domain from a dashboard and clean up provisioned infrastructure.

Source: https://statusdashboard.com/docs/api/status-dashboards/dashboards/domains/custom-domain/delete

`DELETE /app/dashboards/{id}/domains/custom-domain`

Removes the custom domain from a dashboard. Requires **admin** role.

This endpoint works in any `customDomainStatus`, including `awaiting_dns`. Removal is always asynchronous: a cleanup job is queued and `customDomainStatus` is set to `removing` until custom domain fields are cleared. The response is `204 No Content` immediately; poll [Get dashboard domains](/docs/api/status-dashboards/dashboards/domains/get) until `customDomain` is absent.

Calling DELETE again while status is `removing` returns `204` and re-queues cleanup (safe if a prior cleanup enqueue failed).

After removal completes, you can set a new custom domain via [Update dashboard domains](/docs/api/status-dashboards/dashboards/domains/update).

***

## Path parameters
| Parameter | Description                |
| --------- | -------------------------- |
| `id`      | The UUID of the dashboard. |

***

## Request
See [API Basics](/docs/api) for required headers.

This endpoint takes no request body.

***

## Sample request
```bash
curl -X DELETE https://api.statusdashboard.com/app/dashboards/a1b2c3d4-e5f6-7890-abcd-ef1234567890/domains/custom-domain \
  -H "Authorization: Bearer bcf847abf5c6:def456"
```

## Sample response
**Status: `204 No Content`**

No response body. Poll [Get dashboard domains](/docs/api/status-dashboards/dashboards/domains/get) until `customDomain` is absent. While cleanup runs, `customDomainStatus` is `removing`.

***

## Error responses
| Status | When                                                                 |
| ------ | -------------------------------------------------------------------- |
| `403`  | Insufficient permissions.                                            |
| `404`  | Dashboard not found or does not belong to the caller's organization. |
