---
title: "Verify sending domain"
method: POST
path: "/websites/{domain}/verify"
tags: ["Websites"]
---

# Verify sending domain

`POST /websites/{domain}/verify`

Runs a fresh DNS and provider verification and returns normalized aggregate, SPF, DKIM, and MAIL FROM status and diagnostics.

## Path parameters

- `domain` string, required

## Response `200`

Verification completed

- 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 DNS and the selected home transport are both ready.
    - `readiness` object
      - `dnsVerified` boolean
      - `readyToSend` boolean
      - `status` 'setup_required' | 'verifying_dns' | 'activating_transport' | 'ready' | 'blocked'
      - `reason` string, nullable
      - `homeTransport` 'ses' | 'mta'
      - `homeTransportReady` boolean — Whether the selected home transport is fully available. It can be false while readyToSend stays true, when sends are temporarily deferred and retried instead of rejected.
      - `homeSesRegion` string — The single selected SES region for this domain.
    - `message` string — Creation or setup summary when returned by a mutating operation.
    - `dnsRecords` object, nullable
    - `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
  - `verified` boolean — Fresh DNS verification verdict. This does not by itself mean the home transport is ready.
  - `readyToSend` boolean — Whether DNS and the selected home transport are both ready.
  - `message` string
  - `discarded` boolean

## Other responses

- `400` — Verification cannot start because setup is incomplete
- `401` — Unauthorized
- `404` — Domain not found

## Changes

- **2026-08-05** `894c177f8c53` — 4 info
  - added the optional property `readyToSend` to the response with the `200` status
  - added the optional property `website/dnsVerified` to the response with the `200` status
  - added the optional property `website/readiness` to the response with the `200` status
  - added the optional property `website/readyToSend` to the response with the `200` status
- **2026-08-02** `36f92fc0caa2` — 2 breaking
  - the response property `success` became optional for the status `400`
  - the response property `success` became optional for the status `401`
- **2026-07-14** `83e7fd773745` — 7 info
  - added the optional property `details` to the response with the `404` status
  - added the optional property `website/message` to the response with the `200` status
  - added the required property `code` to the response with the `404` status
  - added the required property `description` to the response with the `404` status
  - …3 more
- **2026-07-12** `d103f2b71fca` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/sequenzy/apis/sequenzy-api/changes/websites/:domain/verify/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/e5f6099ca35e/schema)
