Return the normalized contact roles for a domain: registrant, admin, tech, and billing. Each role is either a contact object or null; empty upstream placeholders are not exposed. The response includes actions.canEditContacts and actions.requiresIdentityVerification so clients do not need to hardcode transfer locks or .se/.nu/.test BankID rules. registrationIdentifier is structured as { value, countryCode, type } instead of raw internal identifier text.
read:domains
Use Authorization: Bearer <token> for API keys. Dashboard sessions may also use hostup_session.
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.
Accept Example Content-Type Example registrant null admin null tech null billing null draft boolean
· Example: false True for pending-registration Swedish TLD drafts where registrant contact data can still be edited before payment or registry sync.
serviceStatus string · enum
· Example: active Canonical v2 service lifecycle status for the domain contact resource.
active suspended expired pending cancelled terminated unknown actions object actions.canEditContacts object required False while contact changes are locked, for example during an in-progress transfer.
actions.canEditContacts.allowed boolean required
· Example: true actions.canEditContacts.reason stringnull required
· Example: null actions.canEditContacts.code stringnull
· Example: pending_order Machine-readable reason code when an action is blocked.
actions.requiresIdentityVerification object required `allowed: true` means identity verification, currently BankID for .se/.nu/.test registrant identifier changes, is required before the registrant personal or organisation number can be updated.
actions.requiresIdentityVerification.allowed boolean required
· Example: true actions.requiresIdentityVerification.reason stringnull required
· Example: null actions.requiresIdentityVerification.code stringnull
· Example: pending_order Machine-readable reason code when an action is blocked.
updateOutcome null 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 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 https://cloud.hostup.se/api/v2/domains/{id}/contacts curl -X GET "https://cloud.hostup.se/api/v2/domains/dom_01hxa3b4c5d6e7f8g9h0j1k2m3/contacts" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Accept: application/json" {
"registrant": {
"firstName": "Anna",
"lastName": "Svensson",
"companyName": "Example AB",
"email": "[email protected]",
"phoneNumber": "+46700000000",
"street": "Examplegatan 1",
"address2": "29",
"city": "Stockholm",
"postalCode": "123 45",
"state": "Stockholm",
"countryCode": "SE",
"registrationIdentifier": {
"value": "559290-1325",
"countryCode": "SE",
"type": "organization_number"
}
},
"admin": null,
"tech": null,
"billing": null,
"draft": false,
"serviceStatus": "active",
"actions": {
"canEditContacts": {
"allowed": true,
"reason": null
},
"requiresIdentityVerification": {
"allowed": true,
"reason": "BankID verification is required before updating the registrant's personal or organisation number."
}
},
"updateOutcome": null
}