---
title: "Verify Domain"
method: POST
path: "/domains/{id}/verify"
tags: ["Domains"]
---

# Verify Domain

`POST /domains/{id}/verify`

## Request

- Base URL: `https://api.supersend.io/v2`
- URL: `https://api.supersend.io/v2/domains/{id}/verify`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/supersend/apis/supersend-api/docs/domains/:id/verify/post.ts> (a function with typed inputs; its response is checked against the schema)

Where a domain stands on the way to sending inboxes. For a connected domain waiting on its
owner's nameserver change, looks the nameservers up live first. Returns the nameservers to set
(`nameservers.set_to`), whether they're live (`nameservers.verified`), the domain's inboxes,
and `next`.

`stage` is one of: `connected` (nothing to do until inboxes are bought), `preparing_nameservers`
(inboxes paid; nameservers ready in a few minutes), `awaiting_nameservers` (set the nameservers
shown at the registrar), `ready` (inboxes being created or live), `setting_up` (bought through
SuperSend, still registering), `unavailable` (cancelled, expired or failed).

## Path parameters

- `id` string, required

## Response `200`

Domain setup

- DomainSetupResponse
  - `success` boolean
  - `request_id` string
  - `data` DomainSetup
    - `object` string
    - `id` string, uuid
    - `name` string
    - `managed` 'internal' | 'external': internal = bought through SuperSend; external = connected (registered elsewhere)
    - `status` string
    - `team_id` string, uuid, nullable
    - `team` object, nullable
      - `id` string, uuid
      - `name` string
    - `stage` 'connected' | 'preparing_nameservers' | 'awaiting_nameservers' | 'ready' | 'setting_up' | 'unavailable'
    - `nameservers` object
      - `change_required` boolean: The owner must change the domain's nameservers to `set_to` at the registrar.
      - `set_to` string[], nullable
      - `current` string[], nullable: Nameservers last seen in DNS.
      - `verified` boolean
      - `verified_at` string, date-time, nullable
    - `mailboxes` object
      - `total` integer
      - `active` integer
      - `in_progress` integer
      - `failed` integer
      - `items` object[]
        - `email` string
        - `provider` 'google' | 'outlook' | 'azure' | 'smtp'
        - `status` 'pending' | 'processing' | 'active' | 'error'
    - `next` string: The one thing to do next, in plain words.
    - `already_connected` boolean: Connect only. The domain was already in the organization.
    - `check` object: Verify only.
      - `checked_at` string, date-time
      - `looked_up` boolean: Nameservers were looked up live in this call.
      - `error` string

## Other responses

- `401`: Unauthorized - Invalid or missing API key
- `403`: Forbidden - Access denied
- `404`: Not Found - Resource does not exist

## Changes

- **2026-10-07** `b531caea83bd`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/supersend/apis/supersend-api/changes/domains/:id/verify/post.md)

---

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