---
title: "Add custom domain"
method: POST
path: "/api/v1/domain/custom"
tags: ["Domains"]
---

# Add custom domain

`POST /api/v1/domain/custom`

Add custom domain.

Auth: Required (bearer token).
Scope: Organization-scoped in authenticated context.
Side effects: May mutate server state.

## Headers

- `Accept` string

## Response `201`

Created

- DNSSetupResponse — DNSSetupResponse schema
  - `data` object, nullable
    - `created_at` string, date-time
    - `deleted_at` string, date-time, nullable
    - `dns_provider` string, nullable
    - `id` string, uuid
    - `name` string
    - `organization_id` string, uuid
    - `status` string
    - `target_subdomain` string, nullable
    - `type` string
    - `updated_at` string, date-time
    - `user_id` string, uuid
    - `verification_token` string, nullable
  - `dns_provider` string
  - `instructions` object[]
    - `description` string
    - `name` string
    - `record_type` string
    - `value` string
  - `message` string
  - `status` string

## Other responses

- `400` — Bad Request _(validation or deserialization error)_
- `500` — Internal Server Error _(panics)_
- `default`

## Changes

- **2026-04-26** `09f18af670c4` — 3 breaking, 1 warning, 4 info
  - the request property `name` became required
  - the `name` request property's minLength was increased from `0` to `3`
  - removed the success response with the status `200`
  - the `name` request property's maxLength was set to `255`
  - …4 more
- **2026-04-02** `2beb810c5221` — 24 warning, 13 info
  - removed the optional property `detail` from the response with the `400` status (media type: application/json)
  - removed the optional property `detail` from the response with the `400` status (media type: application/xml)
  - removed the optional property `detail` from the response with the `500` status (media type: application/json)
  - removed the optional property `detail` from the response with the `500` status (media type: application/xml)
  - …33 more
- **2026-03-26** `e34b00e45318` — 8 breaking, 4 warning, 25 info
  - removed the required property `code` from the response with the `400` status (media type: application/json)
  - removed the required property `code` from the response with the `400` status (media type: application/xml)
  - removed the required property `code` from the response with the `500` status (media type: application/json)
  - removed the required property `code` from the response with the `500` status (media type: application/xml)
  - …33 more
- …earlier changes not shown

[Full history](https://skmtc.dev/nixopus/apis/openapi/changes/api/v1/domain/custom/post.md)

---

[API](https://skmtc.dev/nixopus/apis/openapi.md) · [All operations](https://skmtc.dev/nixopus/apis/openapi/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/nixopus/openapi/revisions/c5bacaea7239/schema)
