Skip to main content

Verify Domain

Check a domain's DNS records now, without waiting for the periodic check, and return the result. Call it after publishing the records from Create Domain.

The check runs before the response is sent, so the status in the response is the outcome. DNS changes can take a while to propagate; if the domain is still pending, wait a few minutes and call it again. A domain that is already verified is returned as it is.

A failed domain does not recover: its records did not validate within the verification window (around 72 hours). Delete it and register it again to get new records.

Endpoint​

POST /email/domains/:id/verify

Returns: 200 OK

Headers​

HeaderValueRequired
AuthorizationBearer <your-api-key>Yes

Path Parameters​

ParameterTypeDescription
idstringThe domain ID

No request body.

Response​

{
"id": "01957e3a-4b5c-7d8e-9f0a-1b2c3d4e5f6a",
"name": "mail.acme.com",
"status": "verified",
"verified_at": "2026-03-08T12:20:00.000Z",
"created_at": "2026-03-08T12:00:00.000Z",
"records": [
{
"type": "CNAME",
"name": "4hbfxq3v2nkd6wz5ymtj7ra2ue3lc5po._domainkey.mail.acme.com",
"value": "4hbfxq3v2nkd6wz5ymtj7ra2ue3lc5po.dkim.amazonses.com",
"purpose": "dkim",
"required": true,
"status": "verified"
},
{
"type": "CNAME",
"name": "s7kq2mwx9pzr4tbv6ny3hd8cgj5fa2le._domainkey.mail.acme.com",
"value": "s7kq2mwx9pzr4tbv6ny3hd8cgj5fa2le.dkim.amazonses.com",
"purpose": "dkim",
"required": true,
"status": "verified"
},
{
"type": "CNAME",
"name": "zt5c8rjd2wqy7mhn4xkb9vp3ga6fe2us._domainkey.mail.acme.com",
"value": "zt5c8rjd2wqy7mhn4xkb9vp3ga6fe2us.dkim.amazonses.com",
"purpose": "dkim",
"required": true,
"status": "verified"
},
{
"type": "TXT",
"name": "mail.acme.com",
"value": "v=spf1 include:amazonses.com ~all",
"purpose": "spf",
"required": false,
"status": "verified"
},
{
"type": "TXT",
"name": "_dmarc.mail.acme.com",
"value": "v=DMARC1; p=none;",
"purpose": "dmarc",
"required": false,
"status": "pending"
}
]
}

The fields are the same as in Get Domain.


Examples​

curl -X POST "https://api.arsel.sa/v1/email/domains/01957e3a-4b5c-7d8e-9f0a-1b2c3d4e5f6a/verify" \
-H "Authorization: Bearer $ARSEL_API_KEY"

Rate Limit​

This endpoint allows 10 requests per 60-second window per organization, separate from the default limit.

Error Responses​

A parent or subdomain of the domain has since been verified by another organization.

{
"status_code": 400,
"name": "domain_unavailable",
"message": "This domain cannot be verified because a related domain is already verified by another organization."
}