Domains
Every Domains endpoint.
/v1/domainsList domains
Every domain this tenant owns, with each capability's status. `dns_records` is omitted here; fetch a single domain for those.
Auth: apiKey or jwt
Parameters
| Name | In | Required | Description |
|---|---|---|---|
| page | query | optional | |
| limit | query | optional |
Responses
200 : Default Response
| Field | Type | Required | Description |
|---|---|---|---|
| data | array | required | |
| data[].capabilities.receiving | object | required · nullable | |
| data[].capabilities.receiving.enabled | boolean | required | |
| data[].capabilities.receiving.mx_found_value | string | required · nullable | |
| data[].capabilities.receiving.mx_status | string | required | |
| data[].capabilities.receiving.status | string | required | |
| data[].capabilities.receiving.txt_found_value | string | required · nullable | |
| data[].capabilities.receiving.txt_status | string | required | |
| data[].capabilities.receiving.verification_token | string | required · nullable | |
| data[].capabilities.receiving.verified_at | string | required · nullable | |
| data[].capabilities.sending | object | required · nullable | |
| data[].capabilities.sending.click_tracking | boolean | required | |
| data[].capabilities.sending.dkim_found_value | string | required · nullable | |
| data[].capabilities.sending.dkim_public_key | string | required · nullable | |
| data[].capabilities.sending.dkim_selector | string | required · nullable | |
| data[].capabilities.sending.dkim_status | string | required | |
| data[].capabilities.sending.dmarc_found_value | string | required · nullable | |
| data[].capabilities.sending.dmarc_status | string | required | |
| data[].capabilities.sending.enabled | boolean | required | |
| data[].capabilities.sending.open_tracking | boolean | required | |
| data[].capabilities.sending.return_path_found_value | string | required · nullable | |
| data[].capabilities.sending.return_path_status | string | required | |
| data[].capabilities.sending.spf_found_value | string | required · nullable | |
| data[].capabilities.sending.spf_status | string | required | |
| data[].capabilities.sending.status | string | required | |
| data[].capabilities.sending.track_found_value | string | required · nullable | |
| data[].capabilities.sending.track_status | string | required | |
| data[].capabilities.sending.verified_at | string | required · nullable | |
| data[].created_at | string | required · nullable | |
| data[].id | string | required | |
| data[].name | string | required | |
| data[].updated_at | string | required · nullable | |
| pagination.limit | number | required | |
| pagination.page | number | required | |
| pagination.pages | number | required | |
| pagination.total | number | required |
curl https://api.zsender.io/v1/domains \
-H "Authorization: Bearer $ZSENDER_API_KEY"/v1/domainsCreate a domain
Registers a domain and returns its DNS records to publish. Omitting `capabilities` defaults to sending-only; an explicitly empty `capabilities: {}` is a `400`. Requires `admin`.
Auth: apiKey or jwt
Request body
| Field | Type | Required | Description |
|---|---|---|---|
| capabilities.receiving.enabled | boolean | required | |
| capabilities.sending.enabled | boolean | required | |
| name | string | required |
{
"capabilities": {
"receiving": {
"enabled": true
},
"sending": {
"enabled": true
}
},
"name": "example.com"
}Responses
201 : Default Response
| Field | Type | Required | Description |
|---|---|---|---|
| capabilities.receiving | object | required · nullable | |
| capabilities.receiving.enabled | boolean | required | |
| capabilities.receiving.mx_found_value | string | required · nullable | |
| capabilities.receiving.mx_status | string | required | |
| capabilities.receiving.status | string | required | |
| capabilities.receiving.txt_found_value | string | required · nullable | |
| capabilities.receiving.txt_status | string | required | |
| capabilities.receiving.verification_token | string | required · nullable | |
| capabilities.receiving.verified_at | string | required · nullable | |
| capabilities.sending | object | required · nullable | |
| capabilities.sending.click_tracking | boolean | required | |
| capabilities.sending.dkim_found_value | string | required · nullable | |
| capabilities.sending.dkim_public_key | string | required · nullable | |
| capabilities.sending.dkim_selector | string | required · nullable | |
| capabilities.sending.dkim_status | string | required | |
| capabilities.sending.dmarc_found_value | string | required · nullable | |
| capabilities.sending.dmarc_status | string | required | |
| capabilities.sending.enabled | boolean | required | |
| capabilities.sending.open_tracking | boolean | required | |
| capabilities.sending.return_path_found_value | string | required · nullable | |
| capabilities.sending.return_path_status | string | required | |
| capabilities.sending.spf_found_value | string | required · nullable | |
| capabilities.sending.spf_status | string | required | |
| capabilities.sending.status | string | required | |
| capabilities.sending.track_found_value | string | required · nullable | |
| capabilities.sending.track_status | string | required | |
| capabilities.sending.verified_at | string | required · nullable | |
| created_at | string | required · nullable | |
| dns_records | array | required | |
| dns_records[].capability | string | required | |
| dns_records[].name | string | required | |
| dns_records[].priority | number | optional | |
| dns_records[].type | string | required | |
| dns_records[].value | string | required | |
| id | string | required | |
| name | string | required | |
| updated_at | string | required · nullable |
curl https://api.zsender.io/v1/domains \
-X POST \
-H "Authorization: Bearer $ZSENDER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"capabilities": {
"receiving": {
"enabled": true
},
"sending": {
"enabled": true
}
},
"name": "example.com"
}'/v1/domains/{id}Delete a domain
Tears down every capability on the domain and answers `204` with an empty body. Requires `admin`.
Auth: apiKey or jwt
Parameters
| Name | In | Required | Description |
|---|---|---|---|
| id | path | required |
Responses
204 : Default Response
curl https://api.zsender.io/v1/domains/{id} \
-X DELETE \
-H "Authorization: Bearer $ZSENDER_API_KEY"/v1/domains/{id}Get one domain, with its DNS records
Includes `dns_records`, the exact values to publish for every capability the domain has enabled. `404` for an unknown or cross-tenant id, never a `403`.
Auth: apiKey or jwt
Parameters
| Name | In | Required | Description |
|---|---|---|---|
| id | path | required |
Responses
200 : Default Response
| Field | Type | Required | Description |
|---|---|---|---|
| capabilities.receiving | object | required · nullable | |
| capabilities.receiving.enabled | boolean | required | |
| capabilities.receiving.mx_found_value | string | required · nullable | |
| capabilities.receiving.mx_status | string | required | |
| capabilities.receiving.status | string | required | |
| capabilities.receiving.txt_found_value | string | required · nullable | |
| capabilities.receiving.txt_status | string | required | |
| capabilities.receiving.verification_token | string | required · nullable | |
| capabilities.receiving.verified_at | string | required · nullable | |
| capabilities.sending | object | required · nullable | |
| capabilities.sending.click_tracking | boolean | required | |
| capabilities.sending.dkim_found_value | string | required · nullable | |
| capabilities.sending.dkim_public_key | string | required · nullable | |
| capabilities.sending.dkim_selector | string | required · nullable | |
| capabilities.sending.dkim_status | string | required | |
| capabilities.sending.dmarc_found_value | string | required · nullable | |
| capabilities.sending.dmarc_status | string | required | |
| capabilities.sending.enabled | boolean | required | |
| capabilities.sending.open_tracking | boolean | required | |
| capabilities.sending.return_path_found_value | string | required · nullable | |
| capabilities.sending.return_path_status | string | required | |
| capabilities.sending.spf_found_value | string | required · nullable | |
| capabilities.sending.spf_status | string | required | |
| capabilities.sending.status | string | required | |
| capabilities.sending.track_found_value | string | required · nullable | |
| capabilities.sending.track_status | string | required | |
| capabilities.sending.verified_at | string | required · nullable | |
| created_at | string | required · nullable | |
| dns_records | array | required | |
| dns_records[].capability | string | required | |
| dns_records[].name | string | required | |
| dns_records[].priority | number | optional | |
| dns_records[].type | string | required | |
| dns_records[].value | string | required | |
| id | string | required | |
| name | string | required | |
| updated_at | string | required · nullable |
curl https://api.zsender.io/v1/domains/{id} \
-H "Authorization: Bearer $ZSENDER_API_KEY"/v1/domains/{id}Toggle capabilities on a domain
A capability object carries only the fields being changed; an empty object is a `400`. `name` is immutable and rejected if sent. Requires `admin`.
Auth: apiKey or jwt
Parameters
| Name | In | Required | Description |
|---|---|---|---|
| id | path | required |
Request body
| Field | Type | Required | Description |
|---|---|---|---|
| capabilities.receiving | object | optional · nullable | |
| capabilities.receiving.click_tracking | boolean | optional | |
| capabilities.receiving.enabled | boolean | optional | |
| capabilities.receiving.open_tracking | boolean | optional | |
| capabilities.sending | object | optional · nullable | |
| capabilities.sending.click_tracking | boolean | optional | |
| capabilities.sending.enabled | boolean | optional | |
| capabilities.sending.open_tracking | boolean | optional |
{
"capabilities": {
"sending": {
"click_tracking": true,
"open_tracking": true
}
}
}Responses
200 : Default Response
| Field | Type | Required | Description |
|---|---|---|---|
| capabilities.receiving | object | required · nullable | |
| capabilities.receiving.enabled | boolean | required | |
| capabilities.receiving.mx_found_value | string | required · nullable | |
| capabilities.receiving.mx_status | string | required | |
| capabilities.receiving.status | string | required | |
| capabilities.receiving.txt_found_value | string | required · nullable | |
| capabilities.receiving.txt_status | string | required | |
| capabilities.receiving.verification_token | string | required · nullable | |
| capabilities.receiving.verified_at | string | required · nullable | |
| capabilities.sending | object | required · nullable | |
| capabilities.sending.click_tracking | boolean | required | |
| capabilities.sending.dkim_found_value | string | required · nullable | |
| capabilities.sending.dkim_public_key | string | required · nullable | |
| capabilities.sending.dkim_selector | string | required · nullable | |
| capabilities.sending.dkim_status | string | required | |
| capabilities.sending.dmarc_found_value | string | required · nullable | |
| capabilities.sending.dmarc_status | string | required | |
| capabilities.sending.enabled | boolean | required | |
| capabilities.sending.open_tracking | boolean | required | |
| capabilities.sending.return_path_found_value | string | required · nullable | |
| capabilities.sending.return_path_status | string | required | |
| capabilities.sending.spf_found_value | string | required · nullable | |
| capabilities.sending.spf_status | string | required | |
| capabilities.sending.status | string | required | |
| capabilities.sending.track_found_value | string | required · nullable | |
| capabilities.sending.track_status | string | required | |
| capabilities.sending.verified_at | string | required · nullable | |
| created_at | string | required · nullable | |
| dns_records | array | required | |
| dns_records[].capability | string | required | |
| dns_records[].name | string | required | |
| dns_records[].priority | number | optional | |
| dns_records[].type | string | required | |
| dns_records[].value | string | required | |
| id | string | required | |
| name | string | required | |
| updated_at | string | required · nullable |
curl https://api.zsender.io/v1/domains/{id} \
-X PATCH \
-H "Authorization: Bearer $ZSENDER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"capabilities": {
"sending": {
"click_tracking": true,
"open_tracking": true
}
}
}'/v1/domains/{id}/verifyRe-check DNS for every enabled capability
Re-runs DNS verification for every capability the domain has **enabled** and reports each in `results`. `skipped` means exactly one thing: that capability is not enabled, never a failure. Requires `admin`.
Auth: apiKey or jwt
Parameters
| Name | In | Required | Description |
|---|---|---|---|
| id | path | required |
Responses
200 : Default Response
| Field | Type | Required | Description |
|---|---|---|---|
| capabilities.receiving | object | required · nullable | |
| capabilities.receiving.enabled | boolean | required | |
| capabilities.receiving.mx_found_value | string | required · nullable | |
| capabilities.receiving.mx_status | string | required | |
| capabilities.receiving.status | string | required | |
| capabilities.receiving.txt_found_value | string | required · nullable | |
| capabilities.receiving.txt_status | string | required | |
| capabilities.receiving.verification_token | string | required · nullable | |
| capabilities.receiving.verified_at | string | required · nullable | |
| capabilities.sending | object | required · nullable | |
| capabilities.sending.click_tracking | boolean | required | |
| capabilities.sending.dkim_found_value | string | required · nullable | |
| capabilities.sending.dkim_public_key | string | required · nullable | |
| capabilities.sending.dkim_selector | string | required · nullable | |
| capabilities.sending.dkim_status | string | required | |
| capabilities.sending.dmarc_found_value | string | required · nullable | |
| capabilities.sending.dmarc_status | string | required | |
| capabilities.sending.enabled | boolean | required | |
| capabilities.sending.open_tracking | boolean | required | |
| capabilities.sending.return_path_found_value | string | required · nullable | |
| capabilities.sending.return_path_status | string | required | |
| capabilities.sending.spf_found_value | string | required · nullable | |
| capabilities.sending.spf_status | string | required | |
| capabilities.sending.status | string | required | |
| capabilities.sending.track_found_value | string | required · nullable | |
| capabilities.sending.track_status | string | required | |
| capabilities.sending.verified_at | string | required · nullable | |
| created_at | string | required · nullable | |
| dns_records | array | required | |
| dns_records[].capability | string | required | |
| dns_records[].name | string | required | |
| dns_records[].priority | number | optional | |
| dns_records[].type | string | required | |
| dns_records[].value | string | required | |
| id | string | required | |
| name | string | required | |
| results.receiving | string | required | |
| results.sending | string | required | |
| updated_at | string | required · nullable |
curl https://api.zsender.io/v1/domains/{id}/verify \
-X POST \
-H "Authorization: Bearer $ZSENDER_API_KEY"