---
title: "Register a custom domain"
method: POST
path: "/v1/domains"
tags: ["domains"]
---

# Register a custom domain

`POST /v1/domains`

## Request

- Base URL: `https://api.replylayer.ai`
- URL: `https://api.replylayer.ai/v1/domains`
- Auth: HTTP bearer

## Request body

- object
  - `domain` string, required
  - `self_hosted_config` object
    - `imap` object, required
      - `host` string, required
      - `password` string, required
      - `port` integer, required
      - `security` 'starttls' | 'tls', required
      - `username` string, required
    - `network_mode` 'public' | 'tailnet', required
    - `smtp` object, required
      - `host` string, required
      - `password` string, required
      - `port` integer, required
      - `security` 'starttls' | 'tls', required
      - `username` string, required
  - `transport_mode` 'mailgun' | 'ses' | 'self_hosted'

## Response `201`

Created

- object

## Other responses

- `400`: Validation error
- `401`: Missing or invalid API key (code: UNAUTHORIZED)
- `403`: Forbidden
- `409`: Conflict
- `429`: Rate limited (code: RATE_LIMITED)
- `500`: Internal error (code: INTERNAL_ERROR)

---

[API](https://skmtc.dev/replylayer/apis/replylayer-api.md) · [All operations](https://skmtc.dev/replylayer/apis/replylayer-api/llms.txt) · [OpenAPI document](https://skmtc.dev/replylayer/apis/replylayer-api/revisions/2cae6fbd127e?raw)
