Skip to content

Request port 25 opening for a VPS

POST /api/v2/support/port25-requests

Asks Hostup to open outbound port 25 (SMTP) for one IPv4 address of a VPS. Explain in reason what the server will send.

Either the account is verified with BankID or the VPS has a paid invoice for a billing period of a year or longer. Without either, the call returns 403 port25_requirements_not_met.

Some requests are approved at once. Then status is approved, port 25 opens and the account holder gets an e-mail. Other requests stay pending until Hostup has reviewed them. Follow them with GET /api/v2/support/port25-requests. When port 25 is already open for the VPS, the call returns that entry with status approved. A second request while one is pending returns 409 port25_request_pending.

Authentication: An API key with the scopes write:support and write:network. About keys and scopes

Request

Body

vpsIdstringrequired
The VPS ID (vps_…).
reasonstringrequired
What the server will send over port 25, up to 1000 characters.
ipAddressstring
A public IPv4 address of the VPS to open. Default: the VPS’s main IPv4 address. Each extra address needs its own request.

Example

POST /api/v2/support/port25-requests
curl -X POST "https://cloud.hostup.se/api/v2/support/port25-requests" \
-H "Authorization: Bearer $HOSTUP_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"vpsId": "vps_01hxa3b4c5d6e7f8g9h0j1k2m3",
"reason": "We send transactional email for example.com from authenticated users with bounce handling and abuse monitoring."
}'

Responses

201 The request was made. When port 25 was already open for this VPS, the response is the existing entry.

Response 201
{
"id": "p25_01hxa3b4c5d6e7f8g9h0j1k2m3",
"vpsId": "vps_01hxa3b4c5d6e7f8g9h0j1k2m3",
"vpsName": "mail.example.com",
"ipAddress": "192.0.2.10",
"status": "pending",
"reason": "We send transactional email for example.com from authenticated users with bounce handling and abuse monitoring.",
"requestedAt": "2026-06-03T03:25:00.000Z",
"resolvedAt": null
}
Response fields
idstring
Request ID (p25_…). A p25wl_… ID means port 25 was already open.
vpsIdstring or null
The VPS ID (vps_…).
vpsNamestring or null
Name of the VPS.
ipAddressstring
The IPv4 address the request is for.
statusstring
approved when port 25 is open, pending while Hostup reviews the request. One of pending, approved, rejected, unknown.
reasonstring or null
The reason you sent. null when port 25 was already open.
requestedAtstring or null
When the request was made.
resolvedAtstring or null
When the request was approved or rejected. null while it is pending.

Errors

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

400code is invalid_request. A field is missing or invalid. The same code is returned when the service is not a VPS.
401code is unauthorized. The key is missing or lacks write:support or write:network.
403code is port25_requirements_not_met. The account is not verified with BankID and the VPS has no paid annual invoice.
404code is vps_not_found. The VPS does not exist or is not yours.
409code is port25_request_pending when a request for this address is already waiting for review. A 409 with another code means the address is already open for a different service.
422code is invalid_request. ipAddress is not one of the VPS’s public IPv4 addresses.
429Rate limited. Retry after the limit resets. 429 responses include Retry-After seconds plus X-RateLimit-* headers.
500Unexpected error. Try again later.
502Upstream failure. A dependent provider request failed; the Problem Details code is upstream_failed. Retry later or contact support if the issue persists.