/api/v2/domains/{id}/email-forwarding Enable or disable domain-level email forwarding and return the refreshed state.
Get {id} from GET /api/v2/domains data[].id.
Use this only for the domain-level forwarding integration.
If the domain is attached to a shared-hosting account, prefer shared-hosting email forwarders; forcing domain-level routing can replace existing MX records and stop hosting mailboxes from receiving mail.
Body accepts only enabled and optional force.
force is valid only when enabling and tells the server to remove existing non-forwarding MX records before enabling routing.
If the domain already points at our nameservers but the managed DNS zone is still being activated, enabling returns 409 dns_zone_activating with a dnsActivation block and recovery.action: retry_after; the refusal itself requests the activation check, so retry after about a minute or poll GET until dnsActivation.status is active.
With force: true the zone must be confirmed active first (the forced path removes existing MX records); if the zone status cannot be read the request is refused with 503 upstream_unavailable and nothing is changed.
Before forced MX replacement, the full DNS zone is saved in DNS history.
If enable fails, the provider is read again: confirmed enabled is treated as success; a confirmed rejection or disabled state restores only removed original MX records when no newer MX configuration exists.
HTTP 502 email_forwarding_enable_failed carries mxRecovery.status (restored, changed, or unconfirmed).
For changed/unconfirmed, contact support instead of blindly retrying; the original DNS snapshot remains available.
write:emailwrite:domains
Authenticate with an API key in the Authorization: Bearer <token> header.
id string required
Example: dom_01hxa3b4c5d6e7f8g9h0j1k2m3 Public domain ID from GET /api/v2/domains data[].id. Do not invent this value; use the exact ID returned by the referenced API response.
Authorization Bearer <token> Accept application/json Content-Type application/json enabled boolean required
· Example: true force boolean
· Example: false Only valid when enabled is true. Removes existing non-forwarding MX records before enabling routing.
enabled boolean
· Example: true integrationStatus string · enum
· Example: enabled enabled disabled unavailable reason string · nullable
· Example: null maxRules integer
· Example: 200 ruleCount integer
· Example: 1 rules array<object> rules[].id string required
· Example: ef_01hxa3b4c5d6e7f8g9h0j1k2m3 rules[].isEnabled boolean required
· Example: true rules[].name string · nullable required
· Example: null Nullable: may be null when not applicable.
rules[].priority integer required
· Example: 0 destinations array<object> destinations[].id string required
· Example: efd_01hxa3b4c5d6e7f8g9h0j1k2m3 destinations[].verificationStatus string · enum required
· Example: verified verified pending unverified destinations[].createdAt string · nullable required
· Example: 2026-04-27T12:00:00.000Z Nullable: may be null when not applicable.
destinations[].verifiedAt string · nullable required
· Example: 2026-04-27T12:05:00.000Z Nullable: may be null when not applicable.
catchAll object | null
· Example: {"action":"disabled","destination":null} catchAll.action string · enum required
· Example: disabled forward drop disabled catchAll.destination string · nullable required
· Example: null Nullable: may be null when not applicable.
existingMxRecords array<object> existingMxRecords[].type string · enum required
· Example: MX MX existingMxRecords[].value string required
· Example: mail.example.com existingMxRecords[].priority integer · nullable required
· Example: 10 Nullable: may be null when not applicable.
dnsActivation object Live state of the managed DNS zone this integration runs on. active: routing can be enabled now. activating: the domain already points at our nameservers and the zone is being activated — reading this resource requests the activation check, so poll until active (usually minutes). not_delegated: the domain's nameservers are elsewhere. unavailable: no managed zone, or the status could not be read.
dnsActivation.status string · enum required
· Example: activating active activating not_delegated unavailable dnsActivation.reason string · nullable required
· Example: The domain points at our nameservers and its DNS zone is being activated. This usually ... Plain-English explanation for every non-active status; null when active.
dnsActivation.checkedAt string required
· Example: 2026-08-22T12:00:00.000Z actions object actions.canCreateNewRule object required actions.canCreateNewRule.allowed boolean required
· Example: true actions.canCreateNewRule.reason string · nullable required
· Example: null Nullable: may be null when not applicable.
actions.canCreateNewRule.code string · nullable
· Example: pending_order Machine-readable reason code when an action is blocked.
actions.canSetCatchAll object required actions.canSetCatchAll.allowed boolean required
· Example: true actions.canSetCatchAll.reason string · nullable required
· Example: null Nullable: may be null when not applicable.
actions.canSetCatchAll.code string · nullable
· Example: pending_order Machine-readable reason code when an action is blocked.
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 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 code names the missing resource: domain_not_found, email_forwarding_not_found. 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 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 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 force was requested; existing MX records were left untouched. 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 https://cloud.hostup.se/api/v2/domains/{id}/email-forwarding curl -X PATCH "https://cloud.hostup.se/api/v2/domains/dom_01hxa3b4c5d6e7f8g9h0j1k2m3/email-forwarding" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
"enabled": true
}' {
"enabled": true,
"integrationStatus": "enabled",
"reason": null,
"maxRules": 200,
"ruleCount": 0,
"rules": [],
"destinations": [],
"catchAll": {
"action": "disabled",
"destination": null
},
"existingMxRecords": [],
"dnsActivation": {
"status": "active",
"reason": null,
"checkedAt": "2026-08-22T12:00:00.000Z"
},
"actions": {
"canCreateNewRule": {
"allowed": true,
"reason": null
},
"canSetCatchAll": {
"allowed": true,
"reason": null
}
}
} {
"enabled": true
}