Create a user

This endpoint is only available to organization administrators.


Create a new user account via the API.

Note: On Zulip Cloud, this feature is available only for organizations on a Zulip Cloud Standard or Zulip Cloud Plus plan. Administrators can request the required can_create_users permission for a bot or user by contacting Zulip Cloud support with an explanation for why it is needed. Self-hosted installations can toggle can_create_users on an account using the change_user_role management command.

Changes: Before Zulip 4.0 (feature level 36), this endpoint was available to all organization administrators.

Usage examples

#!/usr/bin/env python

import zulip

# The user for this zuliprc file must be an organization administrator
client = zulip.Client(config_file="~/zuliprc-admin")

# Create a user.
request = {
    "email": "",
    "password": "temp",
    "full_name": "New User",
result = client.create_user(request)

More examples and documentation can be found here.

const zulipInit = require("zulip-js");

// The user for this zuliprc file must be an organization administrator.
const config = { zuliprc: "zuliprc-admin" };

(async () => {
    const client = await zulipInit(config);

    const params = {
        email: "",
        password: "temp",
        full_name: "New User",

    console.log(await client.users.create(params));

curl -sSX POST \
    --data-urlencode \
    --data-urlencode password=abcd1234 \
    --data-urlencode 'full_name=New User'


email string required

Example: ""

The email address of the new user.

password string required

Example: "abcd1234"

The password of the new user.

full_name string required

Example: "New User"

The full name of the new user.


Return values

  • user_id: integer

    The ID assigned to the newly created user.

    Changes: New in Zulip 4.0 (feature level 30).

Example response(s)

Changes: As of Zulip 7.0 (feature level 167), if any parameters sent in the request are not supported by this endpoint, a successful JSON response will include an ignored_parameters_unsupported array.

A typical successful JSON response may look like:

    "msg": "",
    "result": "success",
    "user_id": 25

A typical JSON response for when another user with the same email address already exists in the realm:

    "code": "BAD_REQUEST",
    "msg": "Email '' already in use",
    "result": "error"