/api/v2/domains/{id}/contacts 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 contactDetailsVerification, refreshed from the registry status cache, plus 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
Authenticate with an API key in the Authorization: Bearer <token> header.
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.
Authorization Bearer <token> Accept application/json 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 contactDetailsVerification null Fresh registry contact-details verification state for this domain contact resource, or null when no contact review is currently required.
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 string · nullable required
· Example: null Nullable: may be null when not applicable.
actions.canEditContacts.code string · nullable
· 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 string · nullable required
· Example: null Nullable: may be null when not applicable.
actions.requiresIdentityVerification.code string · nullable
· 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 Retry-After seconds plus X-RateLimit-* headers. 10 fields 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": "anna@example.se",
"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",
"contactDetailsVerification": null,
"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
}