---
title: "Create a user"
slug: "create-a-user"
updated: 2026-04-02T17:37:08Z
published: 2026-04-02T17:37:27Z
canonical: "support.tulip.co/create-a-user"
---

> ## Documentation Index
> Fetch the complete documentation index at: https://support.tulip.co/llms.txt
> Use this file to discover all available pages before exploring further.

# Create a user

Post/users

Creates a new user. This endpoint can only be used to create Tulip Operators.

Requires the `users:write` API key scope.

SecurityHTTPType basic

Access to the Tulip API requires the use of [HTTP Basic Authentication](https://datatracker.ietf.org/doc/html/rfc7617) using the credentials of an active [Tulip API Token](https://support.tulip.co/docs/set-up-a-tulip-api). All requests require the `Authorization` HTTP header with the `Basic` scheme to provide API credentials unless otherwise noted.

API tokens can be configured with a set of *scopes* which determine what parts of the API that specific token has access to. Security best practices dictate that API credentials be given the minimum set of capabilities required to fulfill their intended purpose. For example, an API token created for use in an integration that is only designed to use the Tables API should probably only be given the `tables:read` and `tables:write` scopes. In this way you can minimize risk in the event that API credentials are compromised. API endpoints will document what API token scopes are required to access that endpoint in their descriptions. If a request is made to an endpoint with an API token which does not have the required scopes, the response will be an authorization error.

Body parameters

The spec for creating a user.

<select class='api-response-data' aria-label='Media type'><option value='029fac17-18a7-409d-9747-42635fe9f6c3'>application/json</option>
</select>object  rolestring    RequiredValid values[
  "operator"
]
namestring    RequiredMin length1Max length200
badge_idstring    RequiredMin length1Max length200

Responses201

The user was created successfully. The details of the created user are returned in the response.

<select class='api-response-data' aria-label='Media type'><option value='e0db8adc-900e-49af-877d-746c5e1de811'>application/json</option>
</select>idExampleg56RCoZCtzv7borvp
createdAt
createdByExampleg56RCoZCtzv7borvp
updatedAt
updatedByExampleg56RCoZCtzv7borvp
rolestring    Valid values[
  "owner",
  "workspace-owner",
  "admin",
  "shop-floor-admin",
  "connectors-admin",
  "tables-admin",
  "apps-admin",
  "apps-builder-admin",
  "apps-approver-admin",
  "shop-floor-operator",
  "viewer-with-player",
  "viewer",
  "operator-with-registration",
  "operator"
]
namestring    
emailstring  (email)    
OneOfobjectobjectbadge_idstring    

objectobjectusernamestring    

400

The request was malformed. This could mean that headers, query parameters, or the request body was unable to be parsed or had unexpected values.

<select class='api-response-data' aria-label='Media type'><option value='fb21a0f5-2c9a-4973-a828-8ba6f912e86f'>application/json</option>
</select>object  errorCodestring    
errorUniqueIDstring    Pattern^[a-zA-Z0-9+/]+$Exampleaq21mSKC1rbO87TjC/4Hz2EJHd/v+jxf7MtC315vo0Y
detailsstring    

401

The request was made unauthorized. HTTP Basic Authorization using a Tulip API Key is required for use of the API.

<select class='api-response-data' aria-label='Media type'><option value='8796153a-b701-4b59-b558-3624cd97f84f'>application/json</option>
</select>object  errorCodestring    
errorUniqueIDstring    Pattern^[a-zA-Z0-9+/]+$Exampleaq21mSKC1rbO87TjC/4Hz2EJHd/v+jxf7MtC315vo0Y
detailsstring    

403

The provided authentication info was rejected. The response will provide additional details.

<select class='api-response-data' aria-label='Media type'><option value='3d6555f5-61e1-41ad-afa6-3fc2aca5d8e6'>application/json</option>
</select>object  errorCodestring    
errorUniqueIDstring    Pattern^[a-zA-Z0-9+/]+$Exampleaq21mSKC1rbO87TjC/4Hz2EJHd/v+jxf7MtC315vo0Y
detailsstring    

422

The limit for this asset has been reached.

<select class='api-response-data' aria-label='Media type'><option value='38e7b26f-27dd-4656-abc0-1e4121c65d4e'>application/json</option>
</select>object  errorCodestring    
errorUniqueIDstring    Pattern^[a-zA-Z0-9+/]+$Exampleaq21mSKC1rbO87TjC/4Hz2EJHd/v+jxf7MtC315vo0Y
detailsstring    

500

The server encountered an unexpected error.

<select class='api-response-data' aria-label='Media type'><option value='164f2121-203a-4abc-8250-25a94c219cdc'>application/json</option>
</select>object  errorCodestring    
errorUniqueIDstring    Pattern^[a-zA-Z0-9+/]+$Exampleaq21mSKC1rbO87TjC/4Hz2EJHd/v+jxf7MtC315vo0Y
detailsstring
