Your AWS SES. Your dedicated Mailat. See how it works
Documentation

Create domains

Request, response and authentication details for your Mailat instance.

← All API operations
POST/api/v1/domains

Create adds a new domain POST /api/v1/domains

Authentication & compatibility

Use a scoped bearer API key with domains:manage. The key is bound to its user and organization.

SES email workflow and its stored mailbox/configuration data. Provider actions require configured AWS permissions and verified owned domains; receiving is opt-in.

Contract 2026-10-04. Your running instance's /api/v1/openapi.json is authoritative for its deployed release.

Request

Set MAILAT_BASE_URL to your instance origin (without /api/v1) and MAILAT_TOKEN to an appropriate credential. Replace path placeholders and example data before running. These examples do not execute in this page.

cURL request
curl --request POST "$MAILAT_BASE_URL/api/v1/domains" \
  --header "Authorization: Bearer $MAILAT_TOKEN" \
  --header 'Content-Type: application/json' \
  --data '{
  "name": "example.com"
}'

Request body (required)

application/json

bodyobjectrequired
Fields · model.CreateDomainRequest
namestringrequired

Responses

HTTP statuses and body shapes below come from the pinned contract. Not every shared error applies to every request. Retain the original idempotency key when retrying a send.

200 · Success
Header: X-RateLimit-Remaininginteger

Remaining requests in this API key's current minute window (present for API-key authentication).

minimum: 0

application/json

responseobject
Fields
codeintegerrequired
dataobject
Fields
dnsRecordsarray
Each itemall of · nullable
Variant 1object
Fields · model.DomainDNSRecord
createdAtstring (date-time)
domainIdinteger (int64)
hostnamestring
idinteger (int64)
priorityall of · nullable
Variant 1integer (int64)
recordTypestring

MX, TXT, CNAME

updatedAtstring (date-time)
valuestring
verifiedboolean
verifiedAtall of · nullable
Variant 1string (date-time)
domainall of · nullable
Variant 1object
Fields · model.Domain
createdAtstring (date-time)
dkimPublicKeystring
dkimSelectorstring
dkimVerifiedboolean
dmarcVerifiedboolean
emailProviderstring

ses, smtp

idinteger (int64)
mxVerifiedboolean
namestring
orgIdinteger (int64)
receivingEnabledboolean
receivingRuleNamestring
receivingRuleSetNamestring
receivingS3Bucketstring
receivingSetupAtall of · nullable
Variant 1string (date-time)
receivingSnsTopicArnstring
sesDkimTokensarray

SES Easy DKIM tokens

Each itemstring
sesIdentityArnstring

SES identity ARN

sesVerifiedboolean

SES domain verification status

spfVerifiedboolean
statusstring

pending, active, suspended

updatedAtstring (date-time)
uuidstring
verificationTokenstring
verifiedAtall of · nullable
Variant 1string (date-time)
messagestringrequired
400 · Invalid input

application/json

responseobject
Fields
codeintegerrequired
messagestringrequired
401 · Missing, expired or revoked authentication

application/json

responseobject
Fields
codeintegerrequired
messagestringrequired
403 · Insufficient permission

application/json

responseobject
Fields
codeintegerrequired
messagestringrequired
404 · Resource not found

application/json

responseobject
Fields
codeintegerrequired
messagestringrequired
409 · Conflict or changed idempotency payload

application/json

responseobject
Fields
codeintegerrequired
messagestringrequired
410 · Recovery cursor expired; resynchronize

application/json

responseobject
Fields
codeintegerrequired
messagestringrequired
429 · Rate limit exceeded; respect Retry-After
Header: Retry-Afterinteger

Seconds until the next fixed-minute request window.

minimum: 1

application/json

responseobject
Fields
codeintegerrequired
messagestringrequired
500 · Internal failure; retain the idempotency key

application/json

responseobject
Fields
codeintegerrequired
messagestringrequired
Download the full OpenAPI contract