Domains
Manage domains, DNS records and verification for email sending
Register domains for email sending, manage DNS records required for authentication, and verify your domain settings. Each added domain includes automatically generated DNS records for proper email delivery.
Add Domain
Register a new domain for email sending with automatically generated DNS records.
Request Header
POST https://api.cm.com/email/configuration/v1/configuration/add-domain
Content-Type: application/json
| Header Name | Type | Required | Description |
|---|---|---|---|
| Content-Type | string | Yes | Must be "application/json" |
Request Body
{
"accountId": "903e1cef-84b3-4500-a9a5-b2ca219f76f5",
"emailAddress": "[email protected]"
}
accountId: "903e1cef-84b3-4500-a9a5-b2ca219f76f5"
emailAddress: "[email protected]"
Response Body
Successful Response (200)
{
"status": 200,
"message": "Success",
"success": true,
"domainConfig": {
"id": 97,
"accountId": "903e1fcf-84b3-4511-a9a5-b2cb219f76f5",
"domain": "example.com",
"createdOn": "2025-10-16T10:41:24.432089Z",
"modifiedOn": null,
"deletedOn": null,
"dnsRecords": [],
"isValid": false
}
}
status: 200
message: "Success"
success: true
domainConfig:
id: 97
accountId: "903e1fcf-84b3-4511-a9a5-b2cb219f76f5"
domain: "example.com"
createdOn: "2025-10-16T10:41:24.432089Z"
modifiedOn: null
deletedOn: null
dnsRecords: []
isValid: false
Error Responses
Invalid Request (400)
{
"status": 400,
"message": "Invalid Address",
"success": false,
"domainConfig": null
}
status: 400
message: "Invalid Address"
success: false
domainConfig: null
Invalid Account (400)
{
"status": 400,
"message": "Invalid Account Id token",
"success": false,
"domainConfig": null
}
status: 400
message: "Invalid Account Id token"
success: false
domainConfig: null
Internal Error (500)
{
"status": 500,
"message": "Failed to create domain",
"success": false,
"domainConfig": null
}
status: 500
message: "Failed to create domain"
success: false
domainConfig: null
Get Domains
Retrieve all domain configurations for a specific logical account.
Request Header
GET https://api.cm.com/email/configuration/v1/configuration/accounts/{logicalAccountId}
| Parameter | Type | Required | Description |
|---|---|---|---|
| logicalAccountId | UUID | Yes | The logical account identifier |
Response Body
Successful Response (200)
{
"status": 200,
"message": "Success",
"success": true,
"domains": [
{
"id": 97,
"accountId": "73f79df6-d256-4d8d-ba0c-354fee8987b2",
"domain": "xyz.com",
"createdOn": "2025-10-16T10:41:24.432089",
"modifiedOn": null,
"deletedOn": null,
"dnsRecords": [
{
"host": "cm273f79df6d2564d8dba0c354fee8987b2._domainkey.xyz.com",
"type": "CNAME",
"value": "73f79df6d2564d8dba0c354fee8987b2cm2._domainkey.email.cmtest.nl."
},
{
"host": "cm73f79df6d2564d8dba0c354fee8987b2.xyz.com",
"type": "CNAME",
"value": "73f79df6d2564d8dba0c354fee8987b2.email.cmtest.nl."
},
{
"host": "cm173f79df6d2564d8dba0c354fee8987b2._domainkey.xyz.com",
"type": "CNAME",
"value": "73f79df6d2564d8dba0c354fee8987b2cm1._domainkey.email.cmtest.nl."
}
],
"isValid": false
},
{
"id": 94,
"accountId": "903e1cef-84b3-4500-a9a5-b2ca219f76f5",
"domain": "abc.com",
"createdOn": "2025-10-14T12:35:05.728919",
"modifiedOn": null,
"deletedOn": null,
"dnsRecords": [
{
"host": "cm2903e1cef84b34500a9a5b2ca219f76f5._domainkey.nl.com",
"type": "CNAME",
"value": "903e1cef84b34500a9a5b2ca219f76f5cm2._domainkey.email.cmtest.nl."
},
{
"host": "cm903e1cef84b34500a9a5b2ca219f76f5.nl.com",
"type": "CNAME",
"value": "903e1cef84b34500a9a5b2ca219f76f5.email.cmtest.nl."
},
{
"host": "cm1903e1cef84b34500a9a5b2ca219f76f5._domainkey.nl.com",
"type": "CNAME",
"value": "903e1cef84b34500a9a5b2ca219f76f5cm1._domainkey.email.cmtest.nl."
}
],
"isValid": false
}
]
}
status: 200
message: "Success"
success: true
domains:
- id: 97
accountId: "73f79df6-d256-4d8d-ba0c-354fee8987b2"
domain: "xyz.com"
createdOn: "2025-10-16T10:41:24.432089"
modifiedOn: null
deletedOn: null
dnsRecords:
- host: "cm273f79df6d2564d8dba0c354fee8987b2._domainkey.xyz.com"
type: "CNAME"
value: "73f79df6d2564d8dba0c354fee8987b2cm2._domainkey.email.cmtest.nl."
- host: "cm73f79df6d2564d8dba0c354fee8987b2.xyz.com"
type: "CNAME"
value: "73f79df6d2564d8dba0c354fee8987b2.email.cmtest.nl."
- host: "cm173f79df6d2564d8dba0c354fee8987b2._domainkey.xyz.com"
type: "CNAME"
value: "73f79df6d2564d8dba0c354fee8987b2cm1._domainkey.email.cmtest.nl."
isValid: false
- id: 94
accountId: "903e1cef-84b3-4500-a9a5-b2ca219f76f5"
domain: "abc.com"
createdOn: "2025-10-14T12:35:05.728919"
modifiedOn: null
deletedOn: null
dnsRecords:
- host: "cm2903e1cef84b34500a9a5b2ca219f76f5._domainkey.nl.com"
type: "CNAME"
value: "903e1cef84b34500a9a5b2ca219f76f5cm2._domainkey.email.cmtest.nl."
- host: "cm903e1cef84b34500a9a5b2ca219f76f5.nl.com"
type: "CNAME"
value: "903e1cef84b34500a9a5b2ca219f76f5.email.cmtest.nl."
- host: "cm1903e1cef84b34500a9a5b2ca219f76f5._domainkey.nl.com"
type: "CNAME"
value: "903e1cef84b34500a9a5b2ca219f76f5cm1._domainkey.email.cmtest.nl."
isValid: false
Error Responses
Invalid Logical Account - Error Response (400)
{
"status": 400,
"message": "Invalid accountId. AccountId cannot be empty",
"domains": [],
"success": false
}
status: 400
message: "Invalid accountId. AccountId cannot be empty"
domains: []
success: false
Internal Error - Error Response (500)
{
"status": 500,
"message": "Unable to get the domain config",
"domains": [],
"success": false
}
status: 500
message: "Unable to get the domain config"
domains: []
success: false
Get DNS Records
Retrieve DNS records for a specific domain within an account.
Request Header
GET https://api.cm.com/email/configuration/v1/configuration/accounts/{logicalAccountId}/domains/{domainId}
| Parameter | Type | Required | Description |
|---|---|---|---|
| logicalAccountId | UUID | Yes | The logical account identifier |
| domainId | integer | Yes | The domain identifier |
Response Body
Successful Response (200)
{
"status": 200,
"message": "Success",
"success": true,
"dnsRecords": [
{
"id": 223,
"fromDomain": 97,
"host": "cm2903e1cef84b34500a9a5b2ca219f76f5._domainkey.xyz.com",
"type": "CNAME",
"value": "903e1cef84b34500a9a5b2ca219f76f5cm2._domainkey.email.cmtest.nl.",
"isValid": false
},
{
"id": 224,
"fromDomain": 97,
"host": "cm903e1cef84b34500a9a5b2ca219f76f5.xyz.com",
"type": "CNAME",
"value": "903e1cef84b34500a9a5b2ca219f76f5.email.cmtest.nl.",
"isValid": false
},
{
"id": 225,
"fromDomain": 97,
"host": "cm1903e1cef84b34500a9a5b2ca219f76f5._domainkey.xyz.com",
"type": "CNAME",
"value": "903e1cef84b34500a9a5b2ca219f76f5cm1._domainkey.email.cmtest.nl.",
"isValid": false
}
]
}
status: 200
message: "Success"
success: true
dnsRecords:
- id: 223
fromDomain: 97
host: "cm2903e1cef84b34500a9a5b2ca219f76f5._domainkey.xyz.com"
type: "CNAME"
value: "903e1cef84b34500a9a5b2ca219f76f5cm2._domainkey.email.cmtest.nl."
isValid: false
- id: 224
fromDomain: 97
host: "cm903e1cef84b34500a9a5b2ca219f76f5.xyz.com"
type: "CNAME"
value: "903e1cef84b34500a9a5b2ca219f76f5.email.cmtest.nl."
isValid: false
- id: 225
fromDomain: 97
host: "cm1903e1cef84b34500a9a5b2ca219f76f5._domainkey.xyz.com"
type: "CNAME"
value: "903e1cef84b34500a9a5b2ca219f76f5cm1._domainkey.email.cmtest.nl."
isValid: false
Error Responses
Error Response (404)
{
"status": 404,
"message": "Unable to fetch DNS records",
"success": false
}
status: 404
message: "Unable to fetch DNS records"
success: false
Delete Domain
Remove a domain configuration and all associated DNS records.
Request Header
DELETE https://api.cm.com/email/configuration/v1/configuration/accounts/{logicalAccountId}/domains/{domainId}
| Parameter | Type | Required | Description |
|---|---|---|---|
| domainId | integer | Yes | The domain identifier to delete |
Response Body
Successful Response (200)
{
"status": 200,
"message": "Success",
"success": true
}
status: 200
message: "Success"
success: true
Error Responses
Invalid Domain ID (400)
{
"status": 400,
"message": "Unable to delete the domain",
"success": false
}
status: 400
message: "Unable to delete the domain"
success: false
Domain Not Found (404)
{
"status": 404,
"message": "Invalid domainId. Domain not found",
"success": false
}
status: 404
message: "Invalid domainId. Domain not found"
success: false
Verify Domain Configuration
Verify domain ownership and DNS record configuration to ensure proper email delivery setup.
Request Header
POST https://api.cm.com/email/configuration/v1/dns/accounts/{logicalAccountId}/verify?domain={domain}
Content-Type: application/json
| Parameter | Type | Required | Description |
|---|---|---|---|
| logicalAccountId | UUID | Yes | The logical account identifier |
| Parameter | Type | Required | Description |
|---|---|---|---|
| domain | string | Yes | Domain name to verify (e.g., "example.com") |
| Header Name | Type | Required | Description |
|---|---|---|---|
| Authorization | string | Yes | Valid authorization token |
Response Body
Successful Response (200)
{
"status": 200,
"message": "Success",
"success": true,
"dnsEntries": [
{
"host": "cm903e1cef84b34500a9a5b2ca219f76f5.xyz.com",
"value": "903e1cef84b34500a9a5b2ca219f76f5.email.cmtest.nl.",
"isValid": false,
"type": "CNAME"
},
{
"host": "cm1903e1cef84b34500a9a5b2ca219f76f5._domainkey.xyz.com",
"value": "903e1cef84b34500a9a5b2ca219f76f5cm1._domainkey.email.cmtest.nl.",
"isValid": false,
"type": "CNAME"
},
{
"host": "cm2903e1cef84b34500a9a5b2ca219f76f5._domainkey.xyz.com",
"value": "903e1cef84b34500a9a5b2ca219f76f5cm2._domainkey.email.cmtest.nl.",
"isValid": false,
"type": "CNAME"
}
]
}
status: 200
message: "Success"
success: true
dnsEntries:
- host: "cm903e1cef84b34500a9a5b2ca219f76f5.xyz.com"
value: "903e1cef84b34500a9a5b2ca219f76f5.email.cmtest.nl."
isValid: false
type: "CNAME"
- host: "cm1903e1cef84b34500a9a5b2ca219f76f5._domainkey.xyz.com"
value: "903e1cef84b34500a9a5b2ca219f76f5cm1._domainkey.email.cmtest.nl."
isValid: false
type: "CNAME"
- host: "cm2903e1cef84b34500a9a5b2ca219f76f5._domainkey.xyz.com"
value: "903e1cef84b34500a9a5b2ca219f76f5cm2._domainkey.email.cmtest.nl."
isValid: false
type: "CNAME"
Partial Verification Response (200)
When some DNS records are not yet properly configured:
{
"status": 200,
"message": "Success",
"success": true,
"dnsEntries": [
{
"host": "cm903e1cef84b34500a9a5b2ca219f76f5.xyz.com",
"value": "903e1cef84b34500a9a5b2ca219f76f5.email.cmtest.nl.",
"isValid": false,
"type": "CNAME"
},
{
"host": "cm1903e1cef84b34500a9a5b2ca219f76f5._domainkey.xyz.com",
"value": "903e1cef84b34500a9a5b2ca219f76f5cm1._domainkey.email.cmtest.nl.",
"isValid": true,
"type": "CNAME"
},
{
"host": "cm2903e1cef84b34500a9a5b2ca219f76f5._domainkey.xyz.com",
"value": "903e1cef84b34500a9a5b2ca219f76f5cm2._domainkey.email.cmtest.nl.",
"isValid": false,
"type": "CNAME"
}
]
}
status: 200
message: "Success"
success: true
dnsEntries:
- host: "cm903e1cef84b34500a9a5b2ca219f76f5.xyz.com"
value: "903e1cef84b34500a9a5b2ca219f76f5.email.cmtest.nl."
isValid: false
type: "CNAME"
- host: "cm1903e1cef84b34500a9a5b2ca219f76f5._domainkey.xyz.com"
value: "903e1cef84b34500a9a5b2ca219f76f5cm1._domainkey.email.cmtest.nl."
isValid: true
type: "CNAME"
- host: "cm2903e1cef84b34500a9a5b2ca219f76f5._domainkey.xyz.com"
value: "903e1cef84b34500a9a5b2ca219f76f5cm2._domainkey.email.cmtest.nl."
isValid: false
type: "CNAME"
Error Responses
Domain Verification Failed (400)
{
"status": 400,
"message": "unable to verify domain",
"success": false,
"dnsEntries": []
}
status: 400
message: "unable to verify domain"
success: false
dnsEntries: []
Unauthorized Access (401)
{
"status": 401,
"message": "Access denied - insufficient permissions",
"success": false,
"dnsEntries": []
}
status: 401
message: "Access denied - insufficient permissions"
success: false
dnsEntries: []
Domain Not Found (400)
{
"status": 401,
"essage": "Domain not found or not configured for this account",
"success": false,
"dnsEntries": []
}
status: 401
message: "Domain not found or not configured for this account"
success: false
dnsEntries: []
Domain Verification Process
- Add Domain: Submit domain configuration with your account ID
- DNS Records Generated: System automatically creates three CNAME records
- Add DNS Records: Add the generated CNAME records to your domain's DNS settings
- Wait for Propagation: Allow time for DNS changes to propagate (5 minutes to 48 hours)
- Verify Domain: Use the verification endpoint to check DNS record configuration
- Check Results: Review verification response to see which records are valid
- Retry if Needed: Re-run verification after additional propagation time if some records show as invalid
- Email Sending: Domain is ready for email sending once all records show
"isValid": true
Common Issues and Solutions
| Issue | Cause | Solution |
|---|---|---|
All records show isValid: false | DNS records not yet added or propagated | Wait for DNS propagation (5 min - 48 hours) and retry |
| Some records valid, others invalid | Partial DNS configuration or caching | Check DNS provider settings and wait for full propagation |
| Verification endpoint returns 400 | Domain not found in account | Ensure domain was properly added to account first |
Example Use Cases
Register Company Domain
Setting up a primary company domain for email sending:
{
"accountId": "903e1cef-84b3-4500-a9a5-b2ca219f76f5",
"emailAddress": "[email protected]"
}
accountId: "903e1cef-84b3-4500-a9a5-b2ca219f76f5"
emailAddress: "[email protected]"
Add Subdomain for Marketing
Adding a subdomain specifically for marketing campaigns:
{
"accountId": "903e1cef-84b3-4500-a9a5-b2ca219f76f5",
"emailAddress": "[email protected]"
}
accountId: "903e1cef-84b3-4500-a9a5-b2ca219f76f5"
emailAddress: "[email protected]"
Multi-Domain Setup
Managing multiple domains for different business units:
- Main Website:
company.com - Support Portal:
support.company.com - Marketing Campaigns:
promo.company.com - Customer Portal:
portal.company.com
Each domain will receive the same three CNAME records (with domain-specific hostnames) but pointing to the same account-specific email infrastructure, ensuring consistent email delivery across all business units.
Updated 16 days ago