---
title: "Add user"
method: POST
path: "/api/v1/organizations/{organizationId}/users"
tags: ["/organizations/{organizationId}/users"]
---

# Add user

`POST /api/v1/organizations/{organizationId}/users`

This endpoint has to be enabled before it can be used. <a href="mailto:support@kleverkey.com">Contact
support</a> for more information.

## Path parameters

- `organizationId` integer, required

## Request body

- UserCreation
  - `firstName` string, required
  - `lastName` string, required
  - `email` string, email, required
  - `password` string, required — The password requires at least 8 characters and has to include at least one digit, one uppercase and one lowercase character
  - `cultureCode` string, required — Combination of an ISO 639 two-letter lowercase language code and an ISO 3166 two-letter uppercase country code i.e. de-CH or en-US
  - `privacyPolicyAndTermsOfServiceAccepted` boolean
  - `newsletterRequested` boolean

## Response `200`

OK

- User
  - `id` integer, required
  - `organizationId` integer, nullable — OBSOLETE: Returns one of the organizations that the user is member of - use OrganizationIds instead
  - `organizationIds` integer[], nullable
  - `email` string, required
  - `firstName` string, required
  - `lastName` string, required
  - `cultureCode` string, nullable
  - `imageId` integer, nullable
  - `displayName` string, required
  - `type` 1 | 2 | 3, required — 1 = Standard, 2 = Managed, 3 = Service
  - `roles` Role[], required — Only populated if a single user has been requested
    - `id` integer, required
    - `name` string, required
    - `displayName` string, required
    - `isDefaultRole` boolean, required
    - `dateCreated` string, date-time, required
    - `dateUpdated` string, date-time
  - `accessGroups` AccessGroup[], nullable — Only populated for requests to the API endpoint /organizations/{organizationId}/permissions
    - `id` integer, required
    - `name` string, required
    - `locks` union[], required
      - union
        - Lock
          - `id` integer, required
          - `lockHexId` string, required
          - `organizationId` integer, nullable
          - `gatewayId` integer, nullable
          - `name` string, required
          - `imageId` integer, required
          - `type` 1 | 17 | 18 | 19 | 20 | 255, required — 1 = LockB1, 17 = UZEDH, 18 = UZMTK, 19 = UZRDR, 20 = AutecReader, 255 = Development
          - `physicalState` 0 | 1 | 2 | 3, required — 0 = Unknown, 1 = Open, 2 = Closed, 3 = Locked
          - `properties` 0, required — 0 = None
          - `wirelessModes` 0 | 1 | 2, required — 0 = None, 1 = BLE, 2 = RFID
          - `bleInterfaceVersion` integer, required
          - `openCloseWaitTime` integer, required
          - `state` 0 | 1 | 2 | 4 | 8 | 16 | 32, required — 0 = Undefined, 1 = BatteryLow, 2 = Emergency, 4 = Closed, 8 = Open, 16 = RtcUpdateRequired, 32 = EventAvailable
          - `keyVersion` integer, required
          - `firmwareVersion` integer, required
          - `manufacturerFirmwareVersion` integer, nullable
          - `isFirmwareUpdateAvailable` boolean, nullable — Only populated if requested with the query string parameter includeFirmwareUpdateInformation=true or for requests to the API endpoint /organizations/{organizationId}/hardware/tree
          - `hasLatestFirmware` boolean, nullable — Only populated if requested with the query string parameter includeFirmwareUpdateInformation=true or for requests to the API endpoint /organizations/{organizationId}/hardware/tree
          - `firmwareUpdateState` 0 | 1 | 2 | 3 | 4 — 0 = Idle, 1 = Scheduled, 2 = Started, 3 = Finished, 4 = Failed
          - `firmwareUpdatePreviousVersion` integer, nullable
          - `firmwareUpdateVersion` integer, nullable
          - `firmwareUpdateDateScheduled` string, date-time, nullable
          - `firmwareUpdateDateStarted` string, date-time, nullable
          - `firmwareUpdateProgressInPercent` integer, nullable
          - `firmwareUpdateDateFinished` string, date-time, nullable
          - `firmwareUpdateDateFailed` string, date-time, nullable
          - `firmwareUpdateErrorCode` string, nullable
          - `displayName` string, required
          - `devicePermissionsCount` integer, nullable — Only populated for requests to the API endpoint /organizations/{organizationId}/hardware/tree
          - `areDevicePermissionSynced` boolean, nullable — Only populated for requests to the API endpoint /organizations/{organizationId}/hardware/tree
          - `accessGroups` AccessGroup[], nullable — Only populated for requests to the API endpoint /organizations/{organizationId}/permissions
          - `hasLocationData` boolean
          - `location` Location
            - `latitude` number, double, required
            - `longitude` number, double, required
            - `accuracy` number, float, required — Accuracy in meters
          - `timezone` string, required
          - `timerConfiguration` TimerConfiguration
            - `weeklyItems` TimerConfigurationWeeklyItem[], nullable
              - …
            - `exceptions` TimerConfigurationException[], nullable
              - …
          - `smartCardAuthentication` 0 | 1 | 2 | 32, required — 0 = None, 1 = AuthenticationUid, 2 = AuthenticationSecured, 32 = RfidStandardIso14443A
          - `hardwareConfigurationOutside` 0 | 1 | 2 | 3, required — 0 = None, 1 = Knob, 2 = PullBar, 3 = Handle
          - `hardwareConfigurationSelfLockingPanicLock` boolean
          - `powerSource` integer, nullable
          - `powerSourceUpdated` string, date-time, nullable
          - `flashUsage` integer, nullable
          - `dieTemperature` integer, nullable
          - `bleRssi` integer, nullable
          - `bleRssiUpdated` string, date-time, nullable
          - `isConnected` boolean, nullable
          - `dateBatteryChanged` string, date-time, nullable
          - `dateConnected` string, date-time, nullable
          - `dateDisconnected` string, date-time, nullable
          - `dateLastActivity` string, date-time, nullable
          - `weeklyOpeningCount` number, double, nullable
          - `batteryChangeRecommended` boolean
        - LockInfo
          - `id` integer, required
          - `lockHexId` string, required
          - `organizationId` integer, nullable
          - `gatewayId` integer, nullable
          - `name` string, required
          - `imageId` integer, required
          - `type` 1 | 17 | 18 | 19 | 20 | 255, required — 1 = LockB1, 17 = UZEDH, 18 = UZMTK, 19 = UZRDR, 20 = AutecReader, 255 = Development
          - `physicalState` 0 | 1 | 2 | 3, required — 0 = Unknown, 1 = Open, 2 = Closed, 3 = Locked
          - `properties` 0, required — 0 = None
          - `wirelessModes` 0 | 1 | 2, required — 0 = None, 1 = BLE, 2 = RFID
          - `bleInterfaceVersion` integer, required
          - `openCloseWaitTime` integer, required
          - `state` 0 | 1 | 2 | 4 | 8 | 16 | 32, required — 0 = Undefined, 1 = BatteryLow, 2 = Emergency, 4 = Closed, 8 = Open, 16 = RtcUpdateRequired, 32 = EventAvailable
          - `keyVersion` integer, required
          - `firmwareVersion` integer, required
          - `manufacturerFirmwareVersion` integer, nullable
          - `isFirmwareUpdateAvailable` boolean, nullable — Only populated if requested with the query string parameter includeFirmwareUpdateInformation=true or for requests to the API endpoint /organizations/{organizationId}/hardware/tree
          - `hasLatestFirmware` boolean, nullable — Only populated if requested with the query string parameter includeFirmwareUpdateInformation=true or for requests to the API endpoint /organizations/{organizationId}/hardware/tree
          - `firmwareUpdateState` 0 | 1 | 2 | 3 | 4 — 0 = Idle, 1 = Scheduled, 2 = Started, 3 = Finished, 4 = Failed
          - `firmwareUpdatePreviousVersion` integer, nullable
          - `firmwareUpdateVersion` integer, nullable
          - `firmwareUpdateDateScheduled` string, date-time, nullable
          - `firmwareUpdateDateStarted` string, date-time, nullable
          - `firmwareUpdateProgressInPercent` integer, nullable
          - `firmwareUpdateDateFinished` string, date-time, nullable
          - `firmwareUpdateDateFailed` string, date-time, nullable
          - `firmwareUpdateErrorCode` string, nullable
          - `displayName` string, required
          - `devicePermissionsCount` integer, nullable — Only populated for requests to the API endpoint /organizations/{organizationId}/hardware/tree
          - `areDevicePermissionSynced` boolean, nullable — Only populated for requests to the API endpoint /organizations/{organizationId}/hardware/tree
          - `accessGroups` AccessGroup[], nullable — Only populated for requests to the API endpoint /organizations/{organizationId}/permissions
          - `hasLocationData` boolean
          - `location` Location
            - `latitude` number, double, required
            - `longitude` number, double, required
            - `accuracy` number, float, required — Accuracy in meters
          - `timezone` string, required
          - `timerConfiguration` TimerConfiguration
            - `weeklyItems` TimerConfigurationWeeklyItem[], nullable
              - …
            - `exceptions` TimerConfigurationException[], nullable
              - …
          - `smartCardAuthentication` 0 | 1 | 2 | 32, required — 0 = None, 1 = AuthenticationUid, 2 = AuthenticationSecured, 32 = RfidStandardIso14443A
          - `hardwareConfigurationOutside` 0 | 1 | 2 | 3, required — 0 = None, 1 = Knob, 2 = PullBar, 3 = Handle
          - `hardwareConfigurationSelfLockingPanicLock` boolean
          - `powerSource` integer, nullable
          - `powerSourceUpdated` string, date-time, nullable
          - `flashUsage` integer, nullable
          - `dieTemperature` integer, nullable
          - `bleRssi` integer, nullable
          - `bleRssiUpdated` string, date-time, nullable
          - `isConnected` boolean, nullable
          - `dateBatteryChanged` string, date-time, nullable
          - `dateConnected` string, date-time, nullable
          - `dateDisconnected` string, date-time, nullable
          - `dateLastActivity` string, date-time, nullable
          - `weeklyOpeningCount` number, double, nullable
          - `batteryChangeRecommended` boolean
    - `users` User[], required
    - `permissionType` 1 | 2, required — 1 = Always, 2 = TimeProfile
    - `permissionTimeProfile` PermissionTimeProfile
      - `startDate` string, date-time, nullable — Start date in lock time zone, specified without time zone information (e.g. 2020-04-07T14:25:00), unrestricted if not set, applies only if RepetitionType != None
      - `endDate` string, date-time, nullable — End date in lock time zone, specified without time zone information (e.g. 2020-04-07T14:25:00), unrestricted if not set, applies only if RepetitionType != None
      - `repetitionType` 0 | 1, required — 0 = None, 1 = Weekly
      - `items` PermissionTimeProfileItem[], nullable — List of items, Required if RepetitionType == None
        - `startDate` string, date-time, required — Start date in lock time zone, specified without time zone information (e.g. 2020-04-07T14:25:00)
        - `endDate` string, date-time, required — End date in lock time zone, specified without time zone information (e.g. 2020-04-07T14:25:00)
        - `referenceId` string, nullable
      - `weeklyItems` PermissionTimeProfileWeeklyItem[], nullable — List of weekly items, Required if RepetitionType == Weekly
        - `dayOfWeek` integer, required — Day of week starting with Sunday (Sunday => 0, Monday => 1, Tuesday => 2, Wednesday => 3, Thursday => 4, Friday => 5, Saturday => 6)
        - `startTime` integer, required — Start time in minutes passed since midnight (local time in lock time zone) i.e. 00:00 => 0 or 10:00 => 600
        - `endTime` integer, required — End time in minutes passed since midnight (local time in lock time zone) i.e. 15:00 => 900 or 00:00 => 1440
    - `permissionOptions` PermissionOptions, required
      - `isRemoteActivationAllowed` boolean — Allow a user to open and close locks with the web app (the activation doesn't use Bluetooth)
      - `areAllActivationModesAllowed` boolean — Allow a user to open and close locks also in office mode (locks stay open or closed after activation)
      - `changedBy` string, nullable — Indicate who changed access of user
    - `organizationId` integer, required
    - `dateCreated` string, date-time, required
    - `dateUpdated` string, date-time, nullable

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `403` — Forbidden

---

[API](https://skmtc.net/kleverkey/apis/kleverkey-api.md) · [All operations](https://skmtc.net/kleverkey/apis/kleverkey-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/kleverkey/kleverkey-api/versions/c65c361917fe/schema)
