/api/v2/shared-hosting/{accountId}/email-deliverability Read cPanel Email Deliverability's current DKIM, SPF and DMARC validation for one domain hosted on the account.
The response includes cPanel's exact required DKIM TXT owner and public value.
This endpoint is strictly read-only: it does not generate DKIM keys and does not install or change DNS records.
spf.state: valid_hostup_policy means cPanel's generated direct-IP/MailChannels comparison reports a warning while the domain uses HostUp's centralized include:spf.hostup.se sending policy; clients must not replace that policy with a second SPF record.
The domain must belong to the cPanel account.
read:hostingconsole:services
Authenticate with an API key in the Authorization: Bearer <token> header.
accountId string required
Example: acct_01hxa3b4c5d6e7f8g9h0j1k2m3 Public shared-hosting account ID. Get it from GET /api/v2/shared-hosting data[].id. Do not invent this value; use the exact ID returned by the referenced API response.
domain string required
· Example: example.com Hosted domain whose DKIM, SPF and DMARC records should be inspected.
Authorization Bearer <token> Accept application/json domain string required
· Example: example.com readOnly boolean · enum required true source string · enum required cpanel_emailauth dkim object required dkim.state string · enum required valid missing invalid unknown dkim.cpanelState string required
· Example: VALID dkim.name string · nullable required
· Example: default._domainkey.example.com Nullable: may be null when not applicable.
dkim.type string · enum required TXT dkim.requiredValue string · nullable required
· Example: v=DKIM1; k=rsa; p=MIIBIjANBgkqh...; Nullable: may be null when not applicable.
dkim.currentValues array<string> required dkim.matchesRequired boolean required dkim.error string · nullable required Nullable: may be null when not applicable.
spf object required spf.state string · enum required valid valid_hostup_policy missing invalid unknown spf.cpanelState string required
· Example: INVALID spf.name string required
· Example: example.com spf.type string · enum required TXT spf.cpanelRequiredMechanisms string · nullable required
· Example: ip4:185.113.11.23 include:relay.mailchannels.net Nullable: may be null when not applicable.
spf.currentValues array<string> required spf.sendingIp string · nullable required
· Example: 185.113.11.23 Nullable: may be null when not applicable.
spf.hostupPolicyDetected boolean required spf.explanation string · nullable required Nullable: may be null when not applicable.
spf.error string · nullable required Nullable: may be null when not applicable.
dmarc object required dmarc.state string · enum required valid valid_with_cpanel_spf_warning missing invalid unknown dmarc.cpanelState string required
· Example: SPF_ERROR dmarc.name string required
· Example: _dmarc.example.com dmarc.type string · enum required TXT dmarc.currentValue string · nullable required
· Example: v=DMARC1; p=quarantine Nullable: may be null when not applicable.
dmarc.explanation string · nullable required Nullable: may be null when not applicable.
dmarc.error string · nullable required Nullable: may be null when not applicable.
decision string · enum required configured action_required unavailable nextAction object required nextAction.code string · enum required none publish_dkim generate_dkim_key review_spf review_dmarc retry_later nextAction.message string required type string
· Example: https://developer.hostup.se/errors/invalid_request title string
· Example: Validation failed status integer
· Example: 400 detail string
· Example: The request body failed validation. code string
· Example: invalid_request Stable machine-readable code. Branch on this field, not on detail.
instance string
· Example: /api/v2/orders requestId string
· Example: req_01hxa3b4c5d6e7f8g9h0j1k2m3 timestamp string
· Example: 2026-04-27T12:34:56.000Z errors array<object> Field-level validation errors when code is invalid_request.
errors[].pointer string required
· Example: /items/0/eppCode errors[].detail string required
· Example: `eppCode` is required for this transfer. errors[].code string required
· Example: missing_required extensions object type string
· Example: https://developer.hostup.se/errors/invalid_request title string
· Example: Validation failed status integer
· Example: 400 detail string
· Example: The request body failed validation. code string
· Example: invalid_request Stable machine-readable code. Branch on this field, not on detail.
instance string
· Example: /api/v2/orders requestId string
· Example: req_01hxa3b4c5d6e7f8g9h0j1k2m3 timestamp string
· Example: 2026-04-27T12:34:56.000Z errors array<object> Field-level validation errors when code is invalid_request.
errors[].pointer string required
· Example: /items/0/eppCode errors[].detail string required
· Example: `eppCode` is required for this transfer. errors[].code string required
· Example: missing_required extensions object No response body
type string
· Example: https://developer.hostup.se/errors/invalid_request title string
· Example: Validation failed status integer
· Example: 400 detail string
· Example: The request body failed validation. code string
· Example: invalid_request Stable machine-readable code. Branch on this field, not on detail.
instance string
· Example: /api/v2/orders requestId string
· Example: req_01hxa3b4c5d6e7f8g9h0j1k2m3 timestamp string
· Example: 2026-04-27T12:34:56.000Z errors array<object> Field-level validation errors when code is invalid_request.
errors[].pointer string required
· Example: /items/0/eppCode errors[].detail string required
· Example: `eppCode` is required for this transfer. errors[].code string required
· Example: missing_required extensions object No response body
Retry-After seconds plus X-RateLimit-* headers. 10 fields type string
· Example: https://developer.hostup.se/errors/invalid_request title string
· Example: Validation failed status integer
· Example: 400 detail string
· Example: The request body failed validation. code string
· Example: invalid_request Stable machine-readable code. Branch on this field, not on detail.
instance string
· Example: /api/v2/orders requestId string
· Example: req_01hxa3b4c5d6e7f8g9h0j1k2m3 timestamp string
· Example: 2026-04-27T12:34:56.000Z errors array<object> Field-level validation errors when code is invalid_request.
errors[].pointer string required
· Example: /items/0/eppCode errors[].detail string required
· Example: `eppCode` is required for this transfer. errors[].code string required
· Example: missing_required extensions object type string
· Example: https://developer.hostup.se/errors/invalid_request title string
· Example: Validation failed status integer
· Example: 400 detail string
· Example: The request body failed validation. code string
· Example: invalid_request Stable machine-readable code. Branch on this field, not on detail.
instance string
· Example: /api/v2/orders requestId string
· Example: req_01hxa3b4c5d6e7f8g9h0j1k2m3 timestamp string
· Example: 2026-04-27T12:34:56.000Z errors array<object> Field-level validation errors when code is invalid_request.
errors[].pointer string required
· Example: /items/0/eppCode errors[].detail string required
· Example: `eppCode` is required for this transfer. errors[].code string required
· Example: missing_required extensions object No response body
https://cloud.hostup.se/api/v2/shared-hosting/{accountId}/email-deliverability curl -X GET "https://cloud.hostup.se/api/v2/shared-hosting/acct_01hxa3b4c5d6e7f8g9h0j1k2m3/email-deliverability?domain=example.com" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Accept: application/json" {
"domain": "example.com",
"readOnly": true,
"source": "cpanel_emailauth",
"dkim": {
"state": "valid",
"cpanelState": "VALID",
"name": "default._domainkey.example.com",
"type": "TXT",
"requiredValue": "v=DKIM1; k=rsa; p=MIIBIjANBgkqh...;",
"currentValues": [
"v=DKIM1; k=rsa; p=MIIBIjANBgkqh...;"
],
"matchesRequired": true,
"error": null
},
"spf": {
"state": "valid_hostup_policy",
"cpanelState": "INVALID",
"name": "example.com",
"type": "TXT",
"cpanelRequiredMechanisms": "ip4:185.113.11.23 include:relay.mailchannels.net",
"currentValues": [
"v=spf1 mx include:spf.hostup.se ~all"
],
"sendingIp": "185.113.11.23",
"hostupPolicyDetected": true,
"explanation": "cPanel reports its generated direct IP and MailChannels mechanisms as missing, but this domain uses HostUp's centralized include:spf.hostup.se policy, which intentionally covers that HostUp sending path. Do not replace it with cPanel's expanded suggestion.",
"error": null
},
"dmarc": {
"state": "valid_with_cpanel_spf_warning",
"cpanelState": "SPF_ERROR",
"name": "_dmarc.example.com",
"type": "TXT",
"currentValue": "v=DMARC1; p=quarantine",
"explanation": "The DMARC TXT record is present. cPanel's DMARC warning is inherited from the same SPF mechanism-comparison warning, not from a missing DMARC record.",
"error": "SPF record not valid"
},
"decision": "configured",
"nextAction": {
"code": "none",
"message": "No DNS change is required from this cPanel Email Deliverability result."
}
}