Create a reactivation invoice for an expired domain

POST /api/v2/domains/{id}/actions/reactivate

Create the reactivation invoice (one-time reactivation fee + one-year renewal) for an expired domain in the registry restore window.

No request body is required.

The registrar restore and renewal run automatically after the invoice is verified paid — this action only issues the invoice.

Idempotent: when an open reactivation already exists, the existing record and its invoice are returned instead of creating a second invoice.

Check GET /api/v2/domains/{id}/reactivation first: it reports available plus the exact quote.

After completion the domain becomes active again with one added year; further years can be renewed through the normal renewal flow.

Domains & DNS Domains

Authentication

Required API scopes: write:domainswrite:billing

Authenticate with an API key in the Authorization: Bearer <token> header.

Context

Path Parameters

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.

Headers

Authorization Bearer <token>
Accept application/json

Responses

200 Reactivation created (or already open) with its payment invoice.
domainId string required
domainName string · nullable required

reactivation object required
reactivation.status string · enum
awaiting_payment
processing
completed
failed
cancelled
reactivation.createdAt string · nullable

Nullable: may be null when not applicable.

reactivation.restorableUntil string · nullable

Nullable: may be null when not applicable.

reactivation.renewalYears integer
reactivation.paymentInvoice object · nullable

Nullable: may be null when not applicable.

reactivation.paymentInvoice.id string
reactivation.paymentInvoice.number string · nullable

Nullable: may be null when not applicable.

reactivation.paymentInvoice.amount number · nullable

Nullable: may be null when not applicable.

reactivation.paymentInvoice.currencyCode string
reactivation.paymentInvoice.dueAt string · nullable

Nullable: may be null when not applicable.

reactivation.paymentInvoice.status string
reactivation.paymentInvoice.paymentUrl string
400 Invalid request. The response body is an RFC 7807 Problem Details document.
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
401 Unauthorized. Authentication is 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
403 Forbidden. The caller lacks a required scope or does not own the resource.
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
404 Not found. The resource does not exist or is not owned by the caller.
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
409 The domain is not eligible for online reactivation (not in the restore window, still renewable normally, or the restore window has passed).

No response body

429 Rate limited. Retry after the limit resets. 429 responses include Retry-After seconds plus X-RateLimit-* headers.
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
500 Internal error. Retry later or contact support if the issue persists.
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
502 Reactivation pricing could not be verified with the registry. Retry later; never guess amounts.

No response body

POST https://cloud.hostup.se/api/v2/domains/{id}/actions/reactivate
For AI assistants
View as Markdown
cURL
curl -X POST "https://cloud.hostup.se/api/v2/domains/dom_01hxa3b4c5d6e7f8g9h0j1k2m3/actions/reactivate" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json"
Response
{
  "domainId": "dom_01hxa3b4c5d6e7f8g9h0j1k2m3",
  "domainName": "example.eu",
  "reactivation": {
    "status": "awaiting_payment",
    "createdAt": "2026-08-05T14:30:00.000Z",
    "restorableUntil": "2026-08-30",
    "renewalYears": 1,
    "paymentInvoice": {
      "id": "inv_01hxa3b4c5d6e7f8g9h0j1k2m3",
      "number": "202680312",
      "amount": 430,
      "currencyCode": "SEK",
      "dueAt": "2026-08-12T00:00:00.000Z",
      "status": "unpaid",
      "paymentUrl": "/billing?invoice=202680312"
    }
  }
}