Update one or more contact roles on a domain. This is an update endpoint, not a contact creation endpoint: send at least one of registrant, admin, tech, or billing, and only the documented camelCase v2 contact fields. Unknown fields and legacy internal contact aliases are rejected on this per-domain route. For…
Update one or more contact roles on a domain. This is an update endpoint, not a contact creation endpoint: send at least one of registrant, admin, tech, or billing, and only the documented camelCase v2 contact fields. Unknown fields and legacy internal contact aliases are rejected on this per-domain route. For .se, .nu, and .test domains, changing the registrant personal or organisation number requires identity verification; when the identifier is preserved instead of applied, the response reports this in updateOutcome.registrantRegistrationIdentifierApplied: false and updateOutcome.registrantRegistrationIdentifierBlockedReason: "identity_verification_required". Successful responses echo the full contacts payload with current action gates.
write: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 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 POST "https://cloud.hostup.se/api/v2/domains/dom_01hxa3b4c5d6e7f8g9h0j1k2m3/contacts" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{
"registrant": {
"firstName": "Anna",
"lastName": "Svensson",
"companyName": "Example AB",
"email": "[email protected]",
"phoneNumber": "+46700000000",
"street": "Examplegatan 1",
"city": "Stockholm",
"postalCode": "12345",
"countryCode": "SE"
}
}' {
"registrant": {
"firstName": "Anna",
"lastName": "Svensson",
"companyName": "Example AB",
"email": "[email protected]",
"phoneNumber": "+46700000000",
"street": "Examplegatan 1",
"address2": "5",
"city": "Goteborg",
"postalCode": "413 04",
"state": "Vastra Gotaland",
"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": {
"syncTriggered": false,
"orderActivation": null,
"registrantRegistrationIdentifierApplied": false,
"registrantRegistrationIdentifierBlockedReason": "identity_verification_required"
}
} {
"registrant": {
"firstName": "Anna",
"lastName": "Svensson",
"companyName": "Example AB",
"email": "[email protected]",
"phoneNumber": "+46700000000",
"street": "Examplegatan 1",
"city": "Stockholm",
"postalCode": "12345",
"countryCode": "SE"
}
}