---
title: "Connect a custom domain"
method: POST
path: "/projects/{slug}/domains"
tags: ["Publishing"]
---

# Connect a custom domain

`POST /projects/{slug}/domains`

Register a custom domain for the project's team and return the DNS records to configure. Point the project at it with updateProjectUrl once DNS is set up. Requires a paid plan.

## Path parameters

- `slug` string, required

## Request body

- object
  - `hostname` string, required — The domain to connect, without protocol or 'www'.

## Response `200`

Domain connected

- object
  - `success` boolean, required
  - `domain` object, required
    - `id` string, required
    - `hostname` string, required
  - `dns` object, nullable, required
    - `verified` boolean, required
    - `misconfigured` boolean, required
    - `certPending` boolean, required
    - `recommendedRecords` object[], required
  - `next` string, required

## Other responses

- `400` — Invalid domain format
- `403` — Paid plan required
- `409` — Domain already taken

## Changes

> 4 revisions in range; 1 could not be searched.

- **2026-07-31** `3c9385e85622` — 1 info
  - added the required property `dns/certPending` to the response with the `200` status

[Change history](https://skmtc.dev/faces/apis/faces-api/changes/projects/:slug/domains/post.md)

---

[API](https://skmtc.dev/faces/apis/faces-api.md) · [All operations](https://skmtc.dev/faces/apis/faces-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/faces/faces-api/revisions/83197d741969/schema)
