---
title: "Create a new user"
method: POST
path: "/admin/users"
tags: ["users", "admin"]
---

# Create a new user

`POST /admin/users`

## Request body

- object
  - `deactivates_at` string, date-time, nullable — Date time when user will be deactivated. Unless a timezone is specified, we assume it is UTC
  - `email` string, email, required — User email
  - `invites_at` string, date-time, nullable — Date time when invitation email will be sent. Unless a timezone is specified, we assume it is UTC
  - `name` string — User name
  - `resource` 0 | 1 | 2 | 4, float — Resource
  - `role` 'admin' | 'user', required — User roles
  - `upn` string — UPN

## Response `201`

Succeeded

- object — User
  - `data` object, required — User
    - `deactivates_at` string, date-time, nullable — Date time when user will be deactivated. Unless a timezone is specified, we assume it is UTC
    - `email` string, email — User email
    - `extra_volume1_size_gib` number, required — Extra Volume1 size in GiB assigned to the user
    - `extra_workspace_size_gib` number, required — Amount of extended ebs volume
    - `id` string, required
    - `invitation` object, required — Invitation status
      - `accepted_at` string, date-time — Date time when invitation email is accepted at
      - `email` string, email, required — Email of invitation
      - `expires_at` string, date-time — Date time when invitation email will be expired at
      - `failure_type` 'unknown' | 'refused' — User invitation failure type
      - `invites_at` string, date-time, nullable — Date time when invitation email will be sent. Unless a timezone is specified, we assume it is UTC
      - `is_editable` boolean, required — User invitation is editable or not
      - `is_expired` boolean — User invitation is expired or not
      - `revoked_at` string, date-time — Date time when invitation email is revoked at
      - `sent_at` string, date-time — Date time when invitation email is sent at
      - `status` 'initial' | 'sending' | 'sent' | 'revoked' | 'accepted' | 'failed', required — User invitation status
      - `upn` string — UPN
    - `is_active` boolean — User is active or not
    - `is_light_user` boolean, required — User is light user or not
    - `last_login_at` string, date-time — Date time when user last logged in
    - `light_pfp_enabled` boolean, required — User is LightPFP enabled or not
    - `maintenance_mode_enabled` boolean — User is under maintenance or not
    - `max_consumption_percentage` integer, nullable — Maximum PFP API token consumption percentage per user
    - `name` string, required — User name
    - `notebook_server` object — Notebook server
      - `force_stops_at` string, date-time — Date time when the notebook server will be forced to stop.
      - `instance` 'medium' | 'large' | 'mediumx2' | 'mediumx2-t4' | 'mediumx2-t4-light-pfp' — Notebook server instance type
      - `started_at` string, date-time — Date time when the notebook server was started
      - `status` 'initial' | 'starting' | 'waiting' | 'running' | 'stopping' | 'stopped' | 'failed', required — Notebook server status
      - `stopped_at` string, date-time — Date time when the notebook server was stopped
    - `paid_mtcsp_enabled` boolean, required — User is paid MTCSP enabled or not
    - `resource` number, float, required — Resource
    - `role` 'admin' | 'user', required — User roles
    - `ssh_enabled` boolean, required — User is SSH enabled or not

## Other responses

- `400` — Bad request
- `default` — Other error

---

[API](https://skmtc.dev/matlantis/apis/matlantis-web-ui-backend-api.md) · [All operations](https://skmtc.dev/matlantis/apis/matlantis-web-ui-backend-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/matlantis/matlantis-web-ui-backend-api/revisions/b155f3a32673/schema)
