Guide
Verify a sending domain
Add a sending domain, publish the returned DNS requirements, then ask the API to verify the domain readiness state.
1. Create the domain
POST /v1/domains accepts one required field: domain_name. The API normalizes valid domain names and returns verification records.
curl -X POST "https://api.ctct.dev/v1/domains" \
-H "Authorization: Bearer <API_KEY>" \
-H "Content-Type: application/json" \
-d '{"domain_name":"<DOMAIN>"}'
2. Publish DNS records
The response includes verification_records. Publish each required record with your DNS provider. Records include the check kind, record type, host, expected value, status, and remediation hint when one is available.
{
"domain_id": "dom_...",
"domain_name": "<DOMAIN>",
"status": "pending",
"verification_records": [
{
"check_kind": "dkim",
"record_type": "CNAME",
"host": "ctct1._domainkey.<DOMAIN>",
"expected_value": "100._domainkey.dkim1.ccsend.com",
"status": "pending",
"required": true
},
{
"check_kind": "dkim",
"record_type": "CNAME",
"host": "ctct2._domainkey.<DOMAIN>",
"expected_value": "200._domainkey.dkim2.ccsend.com",
"status": "pending",
"required": true
}
]
}
3. Refresh verification
After DNS has propagated, call POST /v1/domains/{domain_id}:verify. The request returns 202 Accepted with the latest domain status and DNS observations.
curl -X POST "https://api.ctct.dev/v1/domains/<DOMAIN_ID>:verify" \ -H "Authorization: Bearer <API_KEY>"
Domain status fields
| Field | Meaning |
|---|---|
| status | Public readiness state such as pending, checking, verified, or failed. |
| dkim_status | DKIM DNS requirement status. |
| return_path_status | Return-path DNS requirement status. |
| dmarc_status | DMARC DNS requirement status. |
| last_failure_message | Human-readable failure detail when verification cannot complete. |
DNS note: the API returns host and expected value data. TTL is managed by your DNS provider and is not currently returned by the public domain model.