Update current account profile

PATCH /api/v2/me

Update mutable profile fields on the authenticated account and return the refreshed AccountMe snapshot.

Send only the documented public v2 fields; do not send accountId, internal field names, email, password, MFA, BankID-only login, or BankID personnummer values here.

Email and password changes use dedicated /api/v2/me/actions/... routes.

Delegated-access sessions and admin sessions that are not impersonating a client cannot mutate profile details through this endpoint.

Account & Access Account

Authentication

Required API scope: write:account

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

Context

Headers

Authorization Bearer <token>
Accept application/json
Content-Type application/json

Body

required
application/json
firstName string · Example: Anna
lastName string · Example: Svensson
companyName string · nullable · Example: Example AB

countryCode string · Example: SE
phoneNumber string · Example: +46700000000
languageCode string · enum · Example: sv

Preferred language as an ISO-style language code.

sv
en
no
da
fi
de
vatNumber string · nullable · Example: SE559999999901

invoiceReference string · nullable · Example: Cost center 42

accountType string · enum · Example: organisation
private
organisation
registrationIdentifier object | null

Organisation number or personal identifier. Send null to clear it.

registrationIdentifier.value string required · Example: 559290-1325
registrationIdentifier.countryCode string · nullable · Example: SE

Nullable: may be null when not applicable.

address object
address.street string · nullable · Example: Examplegatan 1

Nullable: may be null when not applicable.

address.city string · nullable · Example: Stockholm

Nullable: may be null when not applicable.

address.postalCode string · nullable · Example: 12345

Nullable: may be null when not applicable.

address.state string · nullable · Example: null

Nullable: may be null when not applicable.

Responses

200 Profile updated. The response is the refreshed current-account snapshot.
id string · Example: client_01hxa3b4c5d6e7f8g9h0j1k2m3

Public client/account ID.

name string · nullable · Example: Anna Svensson

Best display name for the account.

email string · nullable · Example: user@example.com

firstName string · nullable · Example: Anna

lastName string · nullable · Example: Svensson

companyName string · nullable · Example: null

registrationIdentifier null

Normalized organisation number or personal identifier when present.

countryCode string · nullable · Example: SE

phoneNumber string · nullable · Example: +46700000000

Normalized E.164-style phone number when present.

languageCode string · nullable · Example: sv

currencyCode string · nullable · Example: SEK

accountType string · enum · Example: private
private
organisation
vatNumber string · nullable · Example: null

invoiceReference string · nullable · Example: null

Custom invoice reference line shown on future invoices.

profileRequirements object | null

Profile fields the account must complete for active services or future order flows.

profileRequirements.fields object required
profileRequirements.fields.phoneNumber object required

Server-derived account-profile requirement. Consumers should render this decision instead of re-deriving registry or product rules locally.

profileRequirements.fields.phoneNumber.required boolean required · Example: true
profileRequirements.fields.phoneNumber.fulfilled boolean required · Example: false
profileRequirements.fields.phoneNumber.reason string · nullable required · Example: A phone number is required because your account has active domains.

Nullable: may be null when not applicable.

profileRequirements.fields.phoneNumber.source string · nullable · enum required · Example: active_domains

Nullable: may be null when not applicable.

active_domains
active_se_nu_domains
profileRequirements.fields.phoneNumber.domainCount integer · min: 0 required · Example: 2
profileRequirements.fields.registrationIdentifier object required

Server-derived account-profile requirement. Consumers should render this decision instead of re-deriving registry or product rules locally.

profileRequirements.fields.registrationIdentifier.required boolean required · Example: true
profileRequirements.fields.registrationIdentifier.fulfilled boolean required · Example: false
profileRequirements.fields.registrationIdentifier.reason string · nullable required · Example: A phone number is required because your account has active domains.

Nullable: may be null when not applicable.

profileRequirements.fields.registrationIdentifier.source string · nullable · enum required · Example: active_domains

Nullable: may be null when not applicable.

active_domains
active_se_nu_domains
profileRequirements.fields.registrationIdentifier.domainCount integer · min: 0 required · Example: 2
profileRequirements.missingFields array<string> required · Example: ["phoneNumber"]
address object
address.street string · nullable required · Example: Examplegatan 1

Nullable: may be null when not applicable.

address.city string · nullable required · Example: Stockholm

Nullable: may be null when not applicable.

address.postalCode string · nullable required · Example: 12345

Nullable: may be null when not applicable.

address.state string · nullable required · Example: null

Nullable: may be null when not applicable.

verified boolean · Example: true

Whether the account identity has been verified.

adminId string · nullable · Example: null

Admin ID only when an admin is impersonating a client.

isAdmin boolean · Example: false
isContact boolean · Example: false
canPlaceOrders boolean · Example: true
impersonating boolean · Example: false
authType string · enum · Example: session
session
api-key
admin
bankid-selection
billing-sso
shouldMigrateMFA boolean · Example: false
bankidUserName string · nullable · Example: Anna Svensson

scopes array<string> · Example: ["read:account","write:account"]
canViewInvoices boolean · Example: true
canViewTickets boolean · Example: true
canAccessCdn boolean · Example: true
canRequestEpp boolean · Example: true
adminUsername string · nullable · Example: null

adminRoles array<string> · Example: []
adminLanguage string · nullable · Example: null

parentClientId string · nullable · Example: null

parentEmail string · nullable · Example: null

isBillingSso boolean · Example: false
isDelegatedAccess boolean · Example: false
hasDelegatedGrants boolean · Example: false
hasOwnedAccounts boolean · Example: false
delegatedLabel string · nullable · Example: null

delegatedGrantId string · nullable · Example: null

uiBanners object | null

Precomputed dashboard banner decisions, or null when not applicable to the caller.

uiBanners.eurCurrency object required
uiBanners.eurCurrency.show boolean required · Example: false
uiBanners.eurCurrency.reason string · nullable required · Example: User country is SE - banner suppressed.

Nullable: may be null when not applicable.

uiBanners.pendingOrder object required
uiBanners.pendingOrder.show boolean required · Example: false
uiBanners.pendingOrder.reason string · nullable required · Example: BankID verification already completed.

Nullable: may be null when not applicable.

uiBanners.pendingOrder.order object · nullable required · Example: null

Nullable: may be null when not applicable.

emailChangeState object
emailChangeState.status string · enum required · Example: none
none
pending
verified
emailChangeState.pendingEmail string · nullable required · Example: null

Nullable: may be null when not applicable.

emailChangeState.expiresAt string · nullable required · Example: null

Nullable: may be null when not applicable.

actions object
actions.canChangeEmail object required
actions.canChangeEmail.allowed boolean required · Example: true
actions.canChangeEmail.reason string · nullable required · Example: null

Nullable: may be null when not applicable.

actions.canChangeEmail.code string · nullable · Example: pending_order

Machine-readable reason code when an action is blocked.

actions.canChangePassword object required
actions.canChangePassword.allowed boolean required · Example: true
actions.canChangePassword.reason string · nullable required · Example: null

Nullable: may be null when not applicable.

actions.canChangePassword.code string · nullable · Example: pending_order

Machine-readable reason code when an action is blocked.

actions.canSetupBankID object required
actions.canSetupBankID.allowed boolean required · Example: true
actions.canSetupBankID.reason string · nullable required · Example: null

Nullable: may be null when not applicable.

actions.canSetupBankID.code string · nullable · Example: pending_order

Machine-readable reason code when an action is blocked.

400 The request body failed validation.
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 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 The current session is not allowed to update this account profile.
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
502 The account details could not be read or persisted in the upstream account system. upstream_client_lookup_failed means the current details could not be read before applying the update; upstream_failed means the write itself failed. Retry later.
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
PATCH https://cloud.hostup.se/api/v2/me
For AI assistants
View as Markdown
cURL
curl -X PATCH "https://cloud.hostup.se/api/v2/me" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -d '{
    "phoneNumber": "+46700000000",
    "registrationIdentifier": {
      "value": "850507-3412",
      "countryCode": "SE"
    }
  }'
Response
{
  "id": "client_01hxa3b4c5d6e7f8g9h0j1k2m3",
  "name": "Anna Svensson",
  "email": "user@example.com",
  "firstName": "Anna",
  "lastName": "Svensson",
  "companyName": "Example AB",
  "registrationIdentifier": {
    "value": "559290-1325",
    "countryCode": "SE",
    "type": "organization_number"
  },
  "countryCode": "SE",
  "phoneNumber": "+46700000000",
  "languageCode": "sv",
  "currencyCode": "SEK",
  "accountType": "organisation",
  "vatNumber": "SE559999999901",
  "invoiceReference": "Cost center 42",
  "profileRequirements": {
    "fields": {
      "phoneNumber": {
        "required": true,
        "fulfilled": true,
        "reason": "A phone number is required because your account has active domains.",
        "source": "active_domains",
        "domainCount": 2
      },
      "registrationIdentifier": {
        "required": true,
        "fulfilled": true,
        "reason": "An organisation number is required because your account has active .se or .nu domains.",
        "source": "active_se_nu_domains",
        "domainCount": 1
      }
    },
    "missingFields": []
  },
  "address": {
    "street": "Examplegatan 1",
    "city": "Stockholm",
    "postalCode": "12345",
    "state": "Stockholm County"
  },
  "verified": true,
  "adminId": null,
  "isAdmin": false,
  "isContact": false,
  "canPlaceOrders": true,
  "impersonating": false,
  "authType": "session",
  "shouldMigrateMFA": false,
  "bankidUserName": "Anna Svensson",
  "scopes": [
    "read:account",
    "write:account",
    "read:billing",
    "read:support"
  ],
  "canViewInvoices": true,
  "canViewTickets": true,
  "canAccessCdn": true,
  "canRequestEpp": true,
  "adminUsername": null,
  "adminRoles": [],
  "adminLanguage": null,
  "parentClientId": null,
  "parentEmail": null,
  "isBillingSso": false,
  "isDelegatedAccess": false,
  "hasDelegatedGrants": false,
  "hasOwnedAccounts": false,
  "delegatedLabel": null,
  "delegatedGrantId": null,
  "uiBanners": {
    "eurCurrency": {
      "show": false,
      "reason": "User country is SE - banner suppressed."
    },
    "pendingOrder": {
      "show": false,
      "reason": "BankID verification already completed.",
      "order": null
    }
  },
  "emailChangeState": {
    "status": "none",
    "pendingEmail": null,
    "expiresAt": null
  },
  "actions": {
    "canChangeEmail": {
      "allowed": true,
      "reason": null
    },
    "canChangePassword": {
      "allowed": true,
      "reason": null
    },
    "canSetupBankID": {
      "allowed": true,
      "reason": null
    }
  }
}
Request Body Complete profile fields needed for domain orders
{
  "phoneNumber": "+46700000000",
  "registrationIdentifier": {
    "value": "850507-3412",
    "countryCode": "SE"
  }
}