---
title: "POST /admin/v1/users"
method: POST
path: "/admin/v1/users"
tags: ["Users"]
---

# POST /admin/v1/users

`POST /admin/v1/users`

Creates a new user

## Headers

- `X-Medallia-Send-New-User-Email` string

## Request body

- User
  - `username` string, identifier, required — The username used to identify the account
  - `first_name` string, required — The first name of the user
  - `last_name` string, required — The last name of the user
  - `email` string, email — The email address of the user
  - `phone` string — The phone number of the user
  - `automatic_update` boolean — Indicates whether the user account is able to be automatically updated by Medallia ETL processes
  - `excluded_from_user_activity` boolean — Indicates whether the user account is included in `user-activity-account-split` nodes in Medallia AA2 reports
  - `company_account_id` string — The user's account ID in the company's authentication systems, set automatically during auto-logon processes
  - `login_blocked` boolean — Indicates whether the direct-to-Medallia user logins are blocked and, as a consequence, password resets are also blocked. This has no bearing on SSO-based authentication or mobile access codes.
  - `data-access` UserDataAccess — Data access ensures a user only sees the records for which they have permission
    - `organization` object[] — An association between a role and a unit group
      - `role` string, identifier, required — Role where this data access is available
      - `data_view` string, identifier — Data view where this data access is available
      - `unit_group` string, identifier, required — Unit group in the organization hierarchy
      - `unit_group_display_name` string — Display name for the Unit Group
    - `segments` object[] — Segments associates the role with records meeting a specific criteria based on field values in the record
      - `role` string, identifier, required — Role where this data access is available
      - `data_view` string, identifier — Data view where this data access is available
      - `field` string, required — Survey Field key
      - `field_display_name` string — Display name of the Survey Field
      - `option` string — Field option value
  - `roles` object, required — The roles of which this account is a member
    - `primary_role` object, required — The primary role of this account, which acts as the default role
      - `role` string, identifier, required
    - `extra_roles` object[], required — Secondary roles of this account
      - `role` string, identifier, required
  - `_system_properties` object
    - `status` 'ACTIVE' | 'INACTIVE' — Indicates whether the account is active
    - `created_on` string, date-time — The timestamp when the user account was created, in ISO-8601 format `yyyy-MM-dd'T'HH:mm:ss.SSSZZ`
    - `created_by` string — The username of the account or the role of the OAuth 2.0 account that created this account (if manual) or `null` (if the account was created through system-driven processes such as SSO)
    - `modified_on` string, date-time — The timestamp when the user account was last modified, in ISO-8601 format `yyyy-MM-dd'T'HH:mm:ss.SSSZZ`
    - `modified_by` string — The username of the account or the role of the OAuth 2.0 account that last modified this account (if manual) or `null` (if the account was last modified through system-driven processes such as SSO)
    - `login_blocked_reason` 'TOO_MANY_FAILED_LOGINS' | 'TOO_MANY_PASSWORD_RESETS' | 'MANUAL_BLOCK' — A human-friendly explanation of why a user account may be blocked
    - `last_login` string, date-time — The timestamp when the user account last authenticated, in ISO-8601 format `yyyy-MM-dd'T'HH:mm:ss.SSSZZ`
    - `login_count` integer — The number of successful authentications for the user
    - `failed_login_count` integer — The number of sequential, unsuccessful authentications
    - `password_last_set` string, date-time — The timestamp when the account's password was last set, in ISO-8601 format `yyyy-MM-dd'T'HH:mm:ss.SSSZZ`
    - `password_last_emailed` string, date-time — The timestamp when a password reset link for the account was last emailed, in ISO-8601 format `yyyy-MM-dd'T'HH:mm:ss.SSSZZ`
    - `password_not_set_reason` 'PASSWORD_RESET' | 'PASSWORD_EXPIRED' | 'PASSWORD_INSECURE' | 'NEW_ACCOUNT' — The reason why the password is not set for the account

## Response `200`

The created user account

- User
  - `username` string, identifier, required — The username used to identify the account
  - `first_name` string, required — The first name of the user
  - `last_name` string, required — The last name of the user
  - `email` string, email — The email address of the user
  - `phone` string — The phone number of the user
  - `automatic_update` boolean — Indicates whether the user account is able to be automatically updated by Medallia ETL processes
  - `excluded_from_user_activity` boolean — Indicates whether the user account is included in `user-activity-account-split` nodes in Medallia AA2 reports
  - `company_account_id` string — The user's account ID in the company's authentication systems, set automatically during auto-logon processes
  - `login_blocked` boolean — Indicates whether the direct-to-Medallia user logins are blocked and, as a consequence, password resets are also blocked. This has no bearing on SSO-based authentication or mobile access codes.
  - `data-access` UserDataAccess — Data access ensures a user only sees the records for which they have permission
    - `organization` object[] — An association between a role and a unit group
      - `role` string, identifier, required — Role where this data access is available
      - `data_view` string, identifier — Data view where this data access is available
      - `unit_group` string, identifier, required — Unit group in the organization hierarchy
      - `unit_group_display_name` string — Display name for the Unit Group
    - `segments` object[] — Segments associates the role with records meeting a specific criteria based on field values in the record
      - `role` string, identifier, required — Role where this data access is available
      - `data_view` string, identifier — Data view where this data access is available
      - `field` string, required — Survey Field key
      - `field_display_name` string — Display name of the Survey Field
      - `option` string — Field option value
  - `roles` object, required — The roles of which this account is a member
    - `primary_role` object, required — The primary role of this account, which acts as the default role
      - `role` string, identifier, required
    - `extra_roles` object[], required — Secondary roles of this account
      - `role` string, identifier, required
  - `_system_properties` object
    - `status` 'ACTIVE' | 'INACTIVE' — Indicates whether the account is active
    - `created_on` string, date-time — The timestamp when the user account was created, in ISO-8601 format `yyyy-MM-dd'T'HH:mm:ss.SSSZZ`
    - `created_by` string — The username of the account or the role of the OAuth 2.0 account that created this account (if manual) or `null` (if the account was created through system-driven processes such as SSO)
    - `modified_on` string, date-time — The timestamp when the user account was last modified, in ISO-8601 format `yyyy-MM-dd'T'HH:mm:ss.SSSZZ`
    - `modified_by` string — The username of the account or the role of the OAuth 2.0 account that last modified this account (if manual) or `null` (if the account was last modified through system-driven processes such as SSO)
    - `login_blocked_reason` 'TOO_MANY_FAILED_LOGINS' | 'TOO_MANY_PASSWORD_RESETS' | 'MANUAL_BLOCK' — A human-friendly explanation of why a user account may be blocked
    - `last_login` string, date-time — The timestamp when the user account last authenticated, in ISO-8601 format `yyyy-MM-dd'T'HH:mm:ss.SSSZZ`
    - `login_count` integer — The number of successful authentications for the user
    - `failed_login_count` integer — The number of sequential, unsuccessful authentications
    - `password_last_set` string, date-time — The timestamp when the account's password was last set, in ISO-8601 format `yyyy-MM-dd'T'HH:mm:ss.SSSZZ`
    - `password_last_emailed` string, date-time — The timestamp when a password reset link for the account was last emailed, in ISO-8601 format `yyyy-MM-dd'T'HH:mm:ss.SSSZZ`
    - `password_not_set_reason` 'PASSWORD_RESET' | 'PASSWORD_EXPIRED' | 'PASSWORD_INSECURE' | 'NEW_ACCOUNT' — The reason why the password is not set for the account

## Other responses

- `400` — Validations failed while performing the request
- `401` — Unauthorized
- `403` — Forbidden
- `412` — Precondition failed
- `500` — Internal server error

---

[API](https://skmtc.dev/medallia/apis/import-api.md) · [All operations](https://skmtc.dev/medallia/apis/import-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/medallia/import-api/revisions/bbc021bd9a2d/schema)
