---
title: "Create Account (email)"
description: "Accounts can be used to access the Enterprise API using an email address and password."
stack: "Enterprise Stack (commercial) — version 0.21.0"
stack_version: "0.21.0"
stack_comparison: https://docs.walt.id/community-vs-enterprise.md
canonical_url: https://docs.walt.id/enterprise-stack/administration/access-and-permissions/accounts/create-account
generated: 2026-07-20
---
# Create Account (email)

Accounts can be used to access the Enterprise API using an email address and password.

## Create Account (Protected Route)

Use the protected route `/v1/admin/account/register` to provision accounts. This endpoint is always available (assuming
you have administrator credentials) and is the expected way to create accounts in production environments, especially if
you have disabled public signup.

**Note:**

Please make sure to use a Super Admin when using this endpoint.

<br/>

**Option: CURL**

Endpoint:`/v1/admin/account/register` | [API Reference](https://enterprise.sandbox.walt.id/swagger/index.html#/Administration%20(Global)%20%2F%20Accounts/post_v1_admin_account_register)

**Example Request**

```bash
curl -X 'POST' \
  'https://enterprise.sandbox.walt.id/v1/admin/account/register' \
  -H 'accept: */*' \
  -H 'Authorization: Bearer {yourToken}' \
  -H 'Content-Type: application/json' \
  -d '{
  "profile": {
    "name": "Max Mustermann",
    "email": "max.mustermann@example.org",
    "addressCountry": "AT",
    "address": "Liechtensteinstraße 111/115, 1090 Vienna"
  },
  "preferences": {
    "timeZone": "UTC",
    "languagePreference": "EN"
  },
  "initialAuth": {
    "type": "email",
    "identifier": {
      "type": "email",
      "email": "max.mustermann@example.org"
    },
    "data": {
      "type": "email",
      "password": "password123456"
    }
  }
}'
```

**Body**

```json
{
  "profile": {
    "name": "Max Mustermann",
    "email": "max.mustermann@example.org",
    "addressCountry": "AT",
    "address": "Liechtensteinstraße 111/115, 1090 Vienna"
  },
  "preferences": {
    "timeZone": "UTC",
    "languagePreference": "EN"
  },
  "initialAuth": {
    "type": "email",
    "identifier": {
      "type": "email",
      "email": "max.mustermann@example.org"
    },
    "data": {
      "type": "email",
      "password": "password123456"
    }
  }
}
```

**Body Parameters**

- `profile`: _Object_ - User's personal information
  - `name`: _String_ - Full name of the user
  - `email`: _String_ - User's email address
  - `addressCountry`: _String_ - Two-letter country code
  - `address`: _String_ - Full postal address

- `preferences`: _Object_ - User's system preferences
  - `timeZone`: _String_ - Preferred time zone
  - `languagePreference`: _String_ - Preferred language code

- `initialAuth`: _Object_ - Authentication information
  - `type`: _String_ - `email`
  - `identifier`: _Object_ - Authentication identifier details
    - `type`: _String_ - `email`
    - `email`: _String_ - Email used for identification
  - `data`: _Object_ - Authentication credentials
    - `type`: _String_ - `email`
    - `password`: _String_ - User's password

---

**Response**

```json
{
  "_id": "5e4eb66b-36c3-46bc-bc03-9a5eefc582f0",
  "type": "USER",
  "profile": {
    "name": "Max Mustermann",
    "email": "max.mustermann@example.org",
    "addressCountry": "AT",
    "address": "Liechtensteinstraße 111/115, 1090 Vienna"
  },
  "accountPreferences": {
    "timeZone": "UTC",
    "languagePreference": "EN"
  },
  "flags": [],
  "roles": {}
}
```

## Create Account (Unprotected Route)
The unprotected route `/v1/account/register` exists whenever the `account-registration` feature flag is enabled (it
defaults to **enabled**, so new deployments expose it until you turn the flag off). Leave it enabled only when you
intentionally want end users to self-register (for example in sandbox or demo environments), and disable it elsewhere to
prevent unrestricted signups.

**Option: CURL**

Endpoint:`/v1/account/register` 

**Example Request**

```bash
curl -X 'POST' \
  'https://enterprise.sandbox.walt.id/v1/account/register' \
  -H 'accept: */*' \
  -H 'Content-Type: application/json' \
  -d '{
  "profile": {
    "name": "Max Mustermann",
    "email": "max.mustermann@example.org",
    "addressCountry": "AT",
    "address": "Liechtensteinstraße 111/115, 1090 Vienna"
  },
  "preferences": {
    "timeZone": "UTC",
    "languagePreference": "EN"
  },
  "initialAuth": {
    "type": "email",
    "identifier": {
      "type": "email",
      "email": "max.mustermann@example.org"
    },
    "data": {
      "type": "email",
      "password": "password123456"
    }
  }
}'
```

**Body**

```json
{
  "profile": {
    "name": "Max Mustermann",
    "email": "max.mustermann@example.org",
    "addressCountry": "AT",
    "address": "Liechtensteinstraße 111/115, 1090 Vienna"
  },
  "preferences": {
    "timeZone": "UTC",
    "languagePreference": "EN"
  },
  "initialAuth": {
    "type": "email",
    "identifier": {
      "type": "email",
      "email": "max.mustermann@example.org"
    },
    "data": {
      "type": "email",
      "password": "password123456"
    }
  }
}
```

**Body Parameters**

- `profile`: _Object_ - User's personal information
  - `name`: _String_ - Full name of the user
  - `email`: _String_ - User's email address
  - `addressCountry`: _String_ - Two-letter country code
  - `address`: _String_ - Full postal address

- `preferences`: _Object_ - User's system preferences
  - `timeZone`: _String_ - Preferred time zone
  - `languagePreference`: _String_ - Preferred language code

- `initialAuth`: _Object_ - Authentication information
  - `type`: _String_ - `email`
  - `identifier`: _Object_ - Authentication identifier details
    - `type`: _String_ - `email`
    - `email`: _String_ - Email used for identification
  - `data`: _Object_ - Authentication credentials
    - `type`: _String_ - `email`
    - `password`: _String_ - User's password

---

**Response Codes**

- `201` - Your account has been registered successfully.
