---
title: "Purchase domains and mailboxes as managed email-sending infrastructure"
method: POST
path: "/v1/domain"
tags: ["domain"]
---

# Purchase domains and mailboxes as managed email-sending infrastructure

`POST /v1/domain`

Place an order to purchase domains and mailboxes as managed email-sending infrastructure. Each domain gets one or more mailboxes provisioned by the chosen ESP.

<strong>Full purchase flow:</strong> <code>GET /v1/domain/search</code> → <code>GET /v1/domain/plans</code> → optional <code>POST /v1/domain/generate-mailbox-names</code> → <code>POST /v1/domain</code> → <code>GET /v1/domain</code>.

<strong>Payment:</strong> Paid orders return a <code>checkoutUrl</code> (Paddle/Stripe). <code>isFreeOrder: true</code> skips payment — only <code>orderId</code> returned.

<strong>Provisioning:</strong> Async — poll <code>GET /v1/domain</code> until <code>status</code> is no longer <code>inProgress</code>.

<code>redirectUrl</code> is a bare domain — <code>"acmecorp.com"</code> valid, <code>"https://acmecorp.com"</code> rejected. <code>phoneNumber</code> must be E.164 format. <code>country</code> must be ISO alpha-2.

## Request body

- PurchaseDomainDto
  - `domainOwnerFirstname` string, required — Registrant first name. 1–50 characters.
  - `domainOwnerLastname` string, required — Registrant last name. 1–50 characters.
  - `companyName` string, required — Registrant organisation name.
  - `address` string, required — Registrant street address.
  - `city` string — Registrant city.
  - `state` string — Registrant state or province.
  - `country` string, required — Registrant country. ISO alpha-2 code (e.g. "US", "IN").
  - `zipcode` string, required — Postal code. Must be valid for the given country.
  - `phoneNumber` string, required — Registrant phone in E.164 format — + + country code + number (e.g. "+14155551234").
  - `emailServiceProvider` 'Google' | 'Microsoft' | 'Azure', required — The provider used to provision mailboxes. Determines pricing and infrastructure.
  - `planType` 'quarterly' | 'annualFlexi' | 'annualFixed' — Billing cycle for mailbox subscriptions. "quarterly" (default), "annualFlexi", or "annualFixed". NOTE: Azure only supports "quarterly" — passing any other value returns a 400 error.
  - `domains` PurchaseDomainItemDto[], required — One entry per domain to purchase. Minimum 1.
    - `name` string, required — Domain name to register (e.g. "tryoutreachteam.com"). 3–254 chars. No protocol prefix.
    - `redirectUrl` string, required — Forward Domain — bare domain only, no http:// or https:// prefix. HTTP visitors are forwarded here. 3–254 chars.
    - `mailboxes` PurchaseDomainMailboxDto[], required — One entry per mailbox to create on this domain. Minimum 1.
      - `firstname` string, required — Mailbox owner's first name (used as sender display name). 1–50 chars. Note: field is 'firstname' (lowercase 'n').
      - `lastname` string, required — Mailbox owner's last name. 1–50 chars.
      - `email` string, required — Full email address to create (e.g. "john.smith@tryoutreachteam.com"). Must use the parent domain.
      - `profilePicId` number, required — Numeric ID of a pre-uploaded profile picture from POST /v1/domain/profile-picture/upload. Pass 0 for no picture.
  - `isReplacement` boolean — Set true to fulfil this order using replacement-slot credits from a previously cancelled or expired order.
  - `isFreeOrder` boolean — Set true to use free-tier domain/mailbox credits on the account.

## Response `201`

Domain purchased successfully

## Other responses

- `400` — 4000: Failed to purchase domain<br><br>

---

[API](https://skmtc.dev/saleshandy/apis/develop-with-saleshandy.md) · [All operations](https://skmtc.dev/saleshandy/apis/develop-with-saleshandy/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/saleshandy/develop-with-saleshandy/revisions/fdaa0f2dcdfb/schema)
