Get domain lifecycle diagnostics

GET /api/v2/domains/{id}/lifecycle

Return server-composed domain lifecycle diagnostics for registration, transfer, and renewal failures.

actionRequired is the canonical customer-action discriminator; consumers should use the accompanying status and failure blocks for the reason and available recovery action instead of inferring from service status.

Transfer progress is a best-effort registry-window estimate and uses registry initiation history or the provider start timestamp when available.

Domains & DNS Domains

Authentication

Required API scope: read:domains

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

Context

Path Parameters

id string required Example: dom_01hxa3b4c5d6e7f8g9h0j1k2m3

Public domain ID. Get it 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 Lifecycle diagnostics for transfer and registration flows.
actionRequired boolean required · Example: false

True when the customer must act before domain processing can continue. Registration failures are current only while registration remains pending.

whoisLookupStatus string | null · enum required · Example: ok
ok
lookup_unavailable
tld_not_supported
rate_limited
error
registrationFailure object | null required
registrationFailure.category string required · Example: identity_invalid
registrationFailure.reason string required · Example: Registration failed because the identification number is invalid.
registrationFailure.detectedAt string | null required · Example: 2026-04-26T09:30:00.000Z
registrationFailure.interpretation object | null required
registrationFailure.interpretation.confidence number required · Example: 0.96
registrationFailure.interpretation.category string required · Example: customer_additional_data_missing
registrationFailure.interpretation.safeToShow boolean required · Example: true
registrationFailure.interpretation.customerMessage string required · Example: This domain extension needs a few extra registration details before we can submit it ag...
registrationFailure.interpretation.canRetryAfterCorrection boolean required · Example: true
registrationFailure.interpretation.fields array<object> required
registrationFailure.interpretation.fields[].key string required · Example: musicNexusConnectionToMusic
registrationFailure.interpretation.fields[].label string required · Example: Example Label
registrationFailure.interpretation.fields[].required boolean required · Example: true
registrationFailure.interpretation.fields[].type string · enum required · Example: select
text
select
checkbox
registrationFailure.interpretation.fields[].target string · enum required · Example: registrationDetails
account
registrationDetails
contacts
none
registrationFailure.interpretation.fields[].profileField string | null · enum required · Example: postalCode

Account profile field to focus when target is account; null for registration detail, contact, and none targets.

firstName
lastName
email
street
streetNumber
city
postalCode
country
phoneNumber
state
registrationIdentifier
companyRegistrationNumber
socialSecurityNumber
vatEu
registrationFailure.interpretation.fields[].description string | null required · Example: Required for .music registrations.
registrationFailure.interpretation.fields[].options array<object>
registrationFailure.interpretation.fields[].options[].value string required · Example: ENT
registrationFailure.interpretation.fields[].options[].label string required · Example: Example Label
renewalFailure object | null required
renewalFailure.category string · enum required · Example: renewal_window_not_open
renewal_window_not_open
registry_contact_review
unknown
renewalFailure.reason string required · Example: The renewal order is queued and will be retried automatically during the registry renew...
renewalFailure.detectedAt string | null required · Example: 2026-04-26T09:30:00.000Z
renewalFailure.retryWindowDays integer | null · min: 1 required · Example: 30
renewalFailure.actionRequired boolean required · Example: false
transferFailure object | null required
transferFailure.category string required · Example: epp_invalid
transferFailure.reason string required · Example: The EPP code was invalid.
transferFailure.detectedAt string | null required · Example: 2026-04-26T09:30:00.000Z
transferFailure.recovery object | null required
transferFailure.recovery.action string · enum required
update_account_details
provide_transfer_details
transferFailure.recovery.fields array<object> required
transferFailure.recovery.fields[].key string required
transferFailure.recovery.fields[].label string required
transferFailure.recovery.fields[].required boolean required
transferFailure.recovery.fields[].type string · enum required
text
select
checkbox
transferFailure.recovery.fields[].target string · enum required
account
transferDetails
none
transferFailure.recovery.fields[].description string | null required
transferFailure.recovery.fields[].options array<object>
transferFailure.recovery.fields[].options[].value string required
transferFailure.recovery.fields[].options[].label string required
transferFailure.recovery.suggestedBody object required
transferFailure.recovery.suggestedBody.eppCode string
transferFailure.recovery.suggestedBody.profileUpdated boolean · enum
true
transferFailure.recovery.suggestedBody.recoveryValues object required
registryHistory array<object> required
registryHistory[].timestamp string | null required · Example: 2026-04-27T12:00:00.000Z
registryHistory[].subject string | null required · Example: Transfer status
registryHistory[].contents string | null required · Example: Transfer rejected: invalid authorization code.
transferErrorsCleared boolean required · Example: false
domainStatusSynced boolean required · Example: false
transferStatus object | null required
transferStatus.kind string · enum required · Example: transfer_failed_at_registry
pending_transfer_in_progress
registrar_push_required
registrar_push_request_required
transfer_failed_at_registry
transfer_not_at_registry
pending_transfer_generic
awaiting_payment
registry_locked_and_epp_invalid
registry_locked
too_new_for_transfer
transfer_error_known
pending_epp_fallback
active
expired
unknown
transferStatus.reason string | null required · Example: The registry rejected the transfer because the EPP code was invalid.
transferStatus.actions object required
transferStatus.actions.canUpdateEpp object required
transferStatus.actions.canUpdateEpp.allowed boolean required · Example: true
transferStatus.actions.canUpdateEpp.reason string | null required
transferStatus.actions.canRetryTransfer object required
transferStatus.actions.canRetryTransfer.allowed boolean required · Example: true
transferStatus.actions.canRetryTransfer.reason string | null required
transferStatus.actions.canRequestFreshEpp object required
transferStatus.actions.canRequestFreshEpp.allowed boolean required · Example: true
transferStatus.actions.canRequestFreshEpp.reason string | null required
transferStatus.capability object required
transferStatus.capability.showProgress boolean required · Example: false
transferStatus.capability.showInvoice boolean required · Example: false
transferStatus.capability.showFailedRetry boolean required · Example: true
transferStatus.capability.showEppUpdate boolean required · Example: true
transferStatus.capability.showDualIssues boolean required · Example: false
transferStatus.progress object | null required
transferStatus.progress.daysPassed integer required · Example: 1
transferStatus.progress.daysRemaining integer required · Example: 2
transferStatus.progress.maxDays integer required · Example: 3
transferStatus.progress.percent integer required · Example: 33
transferStatus.nextStep object | null required
transferStatus.nextStep.kind string · enum required · Example: change_registrar_tag
change_registrar_tag
transferStatus.nextStep.registrarTag string required · Example: REGISTRAR-EU
transferStatus.nextStep.deadlineDays integer required · Example: 45
registrationStatus object | null required
registrationStatus.kind string · enum required · Example: pending
pending
active
failed
submitted
queued
completed
unknown
registrationStatus.reason string | null required · Example: Registration is pending at the registry.
registrationStatus.supported boolean required · Example: true
registrationStatus.autoRetry object | null required
registrationStatus.autoRetry.active boolean required · Example: true
registrationStatus.autoRetry.reason string | null required · Example: The registration system is temporarily unavailable. We will retry the registration auto...
registrationStatus.autoRetry.attemptsRemaining integer required · Example: 23
registrationStatus.autoRetry.nextRetryAt string | null required · Example: 2026-07-06T12:00:00.000Z
registrationStatus.autoRetry.state string | null required · Example: delayed
registrationStatus.actions object required
registrationStatus.actions.canRetryRegistration object required
registrationStatus.actions.canRetryRegistration.allowed boolean required · Example: true
registrationStatus.actions.canRetryRegistration.reason string | null required
registrationStatus.actions.canFixIdentity object required
registrationStatus.actions.canFixIdentity.allowed boolean required · Example: true
registrationStatus.actions.canFixIdentity.reason string | null required
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
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
GET https://cloud.hostup.se/api/v2/domains/{id}/lifecycle
For AI assistants
View as Markdown
cURL
curl -X GET "https://cloud.hostup.se/api/v2/domains/dom_01hxa3b4c5d6e7f8g9h0j1k2m3/lifecycle" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json"
Response
{
  "actionRequired": false,
  "whoisLookupStatus": "ok",
  "renewalFailure": null,
  "registrationFailure": null,
  "transferFailure": {
    "category": "provider_identity_delivery_failed",
    "reason": "The transfer could not use an identity detail that is already saved on the account. No account update is needed; support must review the transfer if it still cannot be completed.",
    "detectedAt": "2026-07-12T20:04:55.537Z",
    "recovery": null
  },
  "registryHistory": [
    {
      "timestamp": "2026-04-27T12:00:00.000Z",
      "subject": "[Initiated] Transfer status",
      "contents": "Incoming transfer initiated at registry. The transfer will be processed in 5 days unless explicitly rejected."
    }
  ],
  "transferErrorsCleared": false,
  "domainStatusSynced": false,
  "transferStatus": {
    "kind": "transfer_error_known",
    "reason": "The transfer could not use an identity detail that is already saved on the account. No account update is needed; support must review the transfer if it still cannot be completed.",
    "actions": {
      "canUpdateEpp": {
        "allowed": true,
        "reason": null
      },
      "canRetryTransfer": {
        "allowed": false,
        "reason": "The transfer could not use an identity detail that is already saved on the account. No account update is needed; support must review the transfer if it still cannot be completed."
      },
      "canRequestFreshEpp": {
        "allowed": false,
        "reason": "The current transfer issue is not related to the authorization code."
      }
    },
    "capability": {
      "showProgress": false,
      "showInvoice": false,
      "showFailedRetry": false,
      "showEppUpdate": false,
      "showDualIssues": false
    },
    "progress": null,
    "nextStep": null
  },
  "registrationStatus": null
}