Domain

Purchase Email Infrastructure

POST /v1/domain

POST/v1/domain
POST
/v1/domain

Purchase domains and mailboxes as managed email-sending infrastructure

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.

Full purchase flow: GET /v1/domain/searchGET /v1/domain/plans → optional POST /v1/domain/generate-mailbox-namesPOST /v1/domainGET /v1/domain.

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

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

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

Authorization

x-api-key<token>

API key for Open API authentication

In: header

Request Body

application/jsonRequired

domainOwnerFirstnamestring

Registrant first name. 1–50 characters.

Example: "John"Minimum length: 1Maximum length: 50

domainOwnerLastnamestring

Registrant last name. 1–50 characters.

Example: "Smith"Minimum length: 1Maximum length: 50

companyNamestring

Registrant organisation name.

Example: "Acme Corp"

addressstring

Registrant street address.

Example: "123 Market Street"

citystring

Registrant city.

Example: "San Francisco"

statestring

Registrant state or province.

Example: "CA"

countrystring

Registrant country. ISO alpha-2 code (e.g. "US", "IN").

Example: "US"

zipcodestring

Postal code. Must be valid for the given country.

Example: "94105"

phoneNumberstring

Registrant phone in E.164 format — + + country code + number (e.g. "+14155551234").

Example: "+14155551234"

emailServiceProviderstring

The provider used to provision mailboxes. Determines pricing and infrastructure.

Example: "Google"Value in: "Google" | "Microsoft" | "Azure"

planTypestring

Billing cycle for mailbox subscriptions. "quarterly" (default), "annualFlexi", or "annualFixed". NOTE: Azure only supports "quarterly" — passing any other value returns a 400 error.

Example: "quarterly"Value in: "quarterly" | "annualFlexi" | "annualFixed"

domainsarray<object>

One entry per domain to purchase. Minimum 1.

isReplacementboolean

Set true to fulfil this order using replacement-slot credits from a previously cancelled or expired order.

Example: false

isFreeOrderboolean

Set true to use free-tier domain/mailbox credits on the account.

Example: false

Responses

201
Domain purchased successfully

Request

curl -X POST \
  "https://open-api.saleshandy.com/v1/domain" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "domainOwnerFirstname": "John",
  "domainOwnerLastname": "Smith",
  "companyName": "Acme Corp",
  "address": "123 Market Street",
  "city": "San Francisco",
  "state": "CA",
  "country": "US",
  "zipcode": "94105",
  "phoneNumber": "+14155551234",
  "emailServiceProvider": "Google",
  "planType": "quarterly",
  "domains": [
    {
      "name": "tryoutreachteam.com",
      "redirectUrl": "acmecorp.com",
      "mailboxes": [
        {
          "firstname": "John",
          "lastname": "Smith",
          "email": "[email protected]",
          "profilePicId": 0
        }
      ]
    }
  ],
  "isReplacement": false,
  "isFreeOrder": false
}'

Response

No response body