---
title: "Create new user"
method: POST
path: "/users"
tags: ["Users"]
---

# Create new user

`POST /users`

## Query parameters

- `skipWebhook` boolean

## Headers

- `x-organization-id` integer

## Request body

- object
  - `firstName` string, required
  - `lastName` string, required
  - `role` 'ADMIN' | 'MEMBER' | 'OPERATOR' | 'REQUESTER' | 'SERVICE_ACCOUNT', nullable
  - `customRole` string, nullable — Custom role name if the user has a custom role assigned
  - `email` string, nullable
  - `phoneNumber` string, nullable
  - `externalData` union — Extra data that can be attached to the user, for example to help reference to a matching record in an external system.
    - object
    - number
    - string
  - `extraFields` object — Custom Fields on the entity. The object keys are the exact Custom Field labels, including spaces or special characters. (ie: "Department")
  - `authType` 'NORMAL' | 'SAML' | 'OIDC', nullable
  - `inviteType` 'ALL' | 'EMAIL' | 'SMS' | 'NONE', nullable
  - `hourlyRate` integer, nullable — Cost in cents. For example, for $1.20, put 120. Set to `null` to set the user's rate to organization default hourly rate if defined, otherwise it would set the rate to the user's hourly rate defined in any work order. If none is defined, setting `null` will set the user's hourly rate to `null`

## Response `201`

Successfully created user

- object
  - `id` integer, required — Global ID of the user

## Other responses

- `400` — OrganizationId was not provided
- `401` — Invalid token
- `403` — Failed to create the user
- `404` — Could not find the specified User.

---

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