---
title: "Add sending domain"
method: POST
path: "/websites"
tags: ["Websites"]
---

# Add sending domain

`POST /websites`

Adds a sending domain to the authenticated company and returns the SPF, DKIM, MAIL FROM, and inbound DNS records required for setup.

## Request body

- object
  - `domain` string, required — Domain to add.

## Response `200`

Website added

- object
  - `success` boolean
  - `website` Website
    - `id` string
    - `domain` string
    - `status` 'not_started' | 'pending' | 'verified' | 'failed' | 'misconfigured' — Stored DNS verification status. This does not imply that a sending transport is ready.
    - `dnsVerified` boolean — Whether the customer DNS records are verified.
    - `readyToSend` boolean — Whether the domain is fully ready to send (DNS verified and activation finished).
    - `readiness` object — Customer-facing sending readiness. When readyToSend is false, reason says why; dns_* reasons describe your DNS records, while activation reasons resolve on Sequenzy's side.
      - `status` 'setup_required' | 'verifying_dns' | 'activating' | 'ready' | 'blocked'
      - `reason` 'dns_not_started' | 'dns_pending' | 'dns_failed' | 'activation_pending' | 'activation_failed' | 'sending_unavailable', nullable
    - `message` string — Creation or setup summary when returned by a mutating operation.
    - `dnsRecords` object, nullable — The DNS records to publish and their per-record verification status (DKIM, SPF, DMARC, MAIL FROM).
    - `dkim` object — Normalized DKIM type, status, and diagnostics.
    - `spf` object — Normalized SPF status, expected record, and diagnostics.
    - `mailFrom` object — Normalized custom MAIL FROM MX status and diagnostics.
    - `lastVerifiedAt` string, date-time, nullable
    - `nextVerificationAt` string, date-time, nullable
    - `createdAt` string, date-time

## Other responses

- `400` — Validation or provisioning error
- `401` — Unauthorized
- `403` — Provisioning forbidden
- `404` — Provisioning resource not found
- `409` — Domain conflict
- `500` — Website could not be added

## Changes

- **2026-08-19** `ba3a29c6eb33` — 5 info
  - added the optional property `retryable` to the response with the `400` status
  - added the optional property `retryable` to the response with the `401` status
  - added the optional property `retryable` to the response with the `403` status
  - added the optional property `retryable` to the response with the `404` status
  - …1 more
- **2026-08-16** `6fd2903b91ce` — 5 info
  - added the optional property `code` to the response with the `400` status
  - added the optional property `code` to the response with the `401` status
  - added the optional property `code` to the response with the `403` status
  - added the optional property `code` to the response with the `404` status
  - …1 more
- **2026-08-10** `16ad4f8e3d97` — 12 warning, 1 info
  - removed the optional property `website/readiness/dnsVerified` from the response with the `200` status
  - removed the optional property `website/readiness/homeSesRegion` from the response with the `200` status
  - removed the optional property `website/readiness/homeTransport` from the response with the `200` status
  - removed the optional property `website/readiness/homeTransportReady` from the response with the `200` status
  - …9 more
- …earlier changes not shown

[Full history](https://skmtc.dev/sequenzy/apis/sequenzy-api/changes/websites/post.md)

---

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