Skip to content

Check e-mail delivery to your account address

GET /api/v2/me/email-deliverability

Check whether e-mail from Hostup reaches the account’s e-mail address. Invoices, renewal warnings and ticket replies go to this address. status is based on the delivery results of the last 90 days and on whether sending to the address is blocked:

  • ok: the last message was delivered.
  • transient: the mail server refused at least two messages in the last seven days, for example because the mailbox is full.
  • undeliverable: the mail server rejected the address for good.
  • suppressed: sending is blocked after an earlier bounce. A test e-mail with POST /api/v2/me/email-deliverability/actions/send-test lifts the block, at most once every 30 days.
  • complaint: a message was reported as spam and sending has stopped. Change the address.
  • mailbox_moved: mail is delivered to a mailbox on your web hosting with Hostup. This is information only.
  • mail_lost: the address’s domain uses Hostup’s nameservers but has no MX record. Mail to it does not arrive.
  • unknown: there is no delivery data.

reason explains a status that needs attention. actions says whether a test e-mail can be sent and whether the notice can be closed.

Authentication: An API key with the scope read:account. About keys and scopes

Example

GET /api/v2/me/email-deliverability
curl "https://cloud.hostup.se/api/v2/me/email-deliverability" \
-H "Authorization: Bearer $HOSTUP_API_KEY"

Responses

200 Delivery status of the account e-mail address.

Response 200
{
"email": "[email protected]",
"status": "ok",
"reason": null,
"lastBounceAt": null,
"lastBounceKind": null,
"lastDeliveredAt": "2026-08-20T14:05:24.000Z",
"lastTest": null,
"uiShouldShow": false,
"domainNotice": null,
"actions": {
"canSendTest": {
"allowed": true,
"reason": null
},
"canChangeEmail": {
"allowed": true,
"reason": null
},
"canDismiss": {
"allowed": false,
"reason": "There is no notice to close."
}
}
}
Response fields
emailstring
The account e-mail address.
statusstring
Delivery status. See the list above. One of ok, transient, undeliverable, suppressed, complaint, mailbox_moved, mail_lost, unknown.
reasonstring or null
What is wrong and what to do. null when nothing needs attention.
lastBounceAtstring or null
When the last bounce or spam report was recorded.
lastBounceKindstring or null
Kind of the last bounce: permanent, transient, suppression (blocked for sending) or complaint (spam report). One of permanent, transient, suppression, complaint.
lastDeliveredAtstring or null
When a message last reached the address.
lastTestobject or null
The last test e-mail. null when none was sent.
uiShouldShowboolean
true when the client area shows a warning about the address.
actionsobject
What the caller can do now. Each gate has allowed and a reason when it is not allowed.
canSendTestobject
Whether POST /api/v2/me/email-deliverability/actions/send-test is allowed.
allowedboolean
reasonstring or null
canChangeEmailobject
Whether the account e-mail can be changed.
allowedboolean
reasonstring or null
canDismissobject
Whether POST /api/v2/me/email-deliverability/actions/dismiss is allowed.
allowedboolean
reasonstring or null
domainNoticeobject or null
Set for mailbox_moved and mail_lost. Otherwise null.

Errors

Errors are Problem Details with a stable code. Branch on the code, not on the text.

400Invalid request. The response body is an RFC 7807 Problem Details document.
401Authentication is required.
403Forbidden. The caller lacks a required scope or does not own the resource.
404Not found. The resource does not exist or is not owned by the caller.
429Rate limited. Retry after the limit resets. 429 responses include Retry-After seconds plus X-RateLimit-* headers.
500Internal error. Retry later or contact support if the issue persists.
503The account e-mail address could not be loaded right now (upstream_unavailable). Try again shortly.