Skip to main content
POST

Create User

Create a new user in your organization via API.

Headers

Request Body

Field Descriptions

  • firstName (required): User’s first name
  • lastName (required): User’s last name
  • email (optional): User’s email address (must be unique)
  • role (optional): Role to assign the new user. Defaults to TECHNICIAN.
    • Assignable roles: ADMIN, BILLING_MANAGER, SCHEDULING_MANAGER, CLINICIAN, TECHNICIAN, PATIENT, CAREGIVER, CLINICAL_ADMIN, PAYROLL_ADMIN
    • The roles you may assign are further limited by your own role. If you request a role you are not permitted to create, the request is rejected with a 403.
  • phoneNumber (optional): User’s phone number
  • npiNumber (optional): National Provider Identifier number
  • shouldSendSMS (optional): Whether to send SMS notifications (defaults to false)
  • recertificationDate (optional): Recertification date for the user (ISO 8601 format)
  • providerPayors (optional): Assigns the provided payors to the User, if exists
  • specializations (optional): Public identifiers of specialization categories to assign to the provider. Only applied for clinical staff roles (CLINICIAN, TECHNICIAN, CLINICAL_ADMIN, CLINICAL_SUPERADMIN); ignored for other roles. Unknown or inactive categories are rejected with a 400.
  • careTeamTechnicianIds (optional): Public identifiers of technicians this user supervises. Only applied for clinician roles that own a care team (CLINICIAN, CLINICAL_ADMIN, CLINICAL_SUPERADMIN); ignored for other roles. Ids that are not TECHNICIAN users in your organization are silently skipped. Named to match the GET response field.
  • careTeamLeadIds (optional): Public identifiers of the clinicians who supervise this user. Only applied when the role is TECHNICIAN; ignored for other roles. Ids that are not care-team clinicians in your organization are silently skipped. Named to match the GET response field.

Success Response (200)

specializations echoes the specialization categories assigned to the created user (publicId + name). It is an empty array for non-provider roles, which never carry specializations.
The user object returned by this endpoint differs from the one returned by the Get All Users and Get User By Id endpoints, which return demographic fields such as sex, birthDate, and address information.

Error Responses

400 - Validation Error

Unknown or inactive specializations are rejected with a 400 as a plain error (a single unknown id in the array rejects the whole request):

401 - Unauthorized

401 - Invalid API Key

403 - Forbidden

Returned when your role does not permit creating a user with the requested role.

Examples

cURL Example

JavaScript Example

Authorizations

Authorization
string
header
required

API key authentication. Include your API key in the Authorization header as 'Bearer '

Body

application/json
firstName
string
required

User's first name

Minimum string length: 1
lastName
string
required

User's last name

Minimum string length: 1
email
string<email>

User's email address (must be unique)

role
enum<string>
default:TECHNICIAN

Role to assign the new user (defaults to TECHNICIAN). The roles you may assign are further restricted by your own role; requesting a role you are not permitted to create returns 403.

Available options:
ADMIN,
BILLING_MANAGER,
SCHEDULING_MANAGER,
CLINICIAN,
TECHNICIAN,
PATIENT,
CAREGIVER,
CLINICAL_ADMIN,
PAYROLL_ADMIN
phoneNumber
string

User's phone number

npiNumber
string

National Provider Identifier number

shouldSendSMS
boolean
default:false

Whether to send SMS notifications

recertificationDate
string<date-time>

Recertification date for the user

providerPayors
string[]

Assigns the provided payors to the User, if exists

specializations
string[]

Public identifiers of specialization categories to assign to the provider. Only applied for clinical staff roles (CLINICIAN, TECHNICIAN, CLINICAL_ADMIN, CLINICAL_SUPERADMIN); ignored for other roles.

careTeamTechnicianIds
string[]

Public identifiers of technicians this user supervises. Only applied for clinician roles that own a care team (CLINICIAN, CLINICAL_ADMIN, CLINICAL_SUPERADMIN); ignored for other roles. Ids that are not TECHNICIAN users in your organization are silently skipped. Named to match the GET response field.

careTeamLeadIds
string[]

Public identifiers of the clinicians who supervise this user. Only applied when the role is TECHNICIAN; ignored for other roles. Ids that are not care-team clinicians in your organization are silently skipped. Named to match the GET response field.

Response

User created successfully

message
string
Example:

"User created successfully"

user
object

The user returned immediately after creation. This shape differs from the User object returned by the list and get-by-id endpoints.