API Reference
Log In
API Reference

/users/upsert

Bulk-create, update, activate, or deactivate users in a single request. The endpoint compares the submitted users against existing platform users and determines the correct action for each one automatically.


Identification

Each user is matched against existing users in this priority order:

  1. External ID
  2. Email
  3. Username
  4. Phone number *

If no match is found, the user is treated as new and will be created.

* Phone number caveat: Phone matching only applies to users who have only a phone number on the platform. If two users share a number but have different emails, two separate users are created.


Related Objects

If referenced objects don't exist yet, the endpoint can create them automatically (controlled by the config):

  • Departments
  • Job Profiles
  • Permissions

Note: Existing objects are never updated - only created if missing.

Departments: Created departments are always flat. Parent-child relationships must be set up manually or via the dedicated department endpoints.


Request Size

There's no enforced limit, but requests with 2000+ users may time out. If that happens, processing continues server-side - but the request returns no response.


Config

The config object controls endpoint behavior: whether objects are auto-created, which fields can be overwritten, etc. See the request body section below for full details.


Response

FieldTypeDescription
creatednumberNew users added to the platform
updatednumberExisting users with any change applied
activatednumberPreviously deactivated users now activated
deactivatednumberPreviously active users now deactivated
skippednumberUsers not processed (see below)
errorsstring[]Per-user error messages

Skipped users: A user is skipped if (1) they don't exist yet and isActive is false, or (2) they are missing all three of: email, phone, and username.

No-op users: If a user already exists and has nothing to update, they are excluded entirely from all counts.

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…

⚠️

New integration? Turn off communications first.

If you're building a new integration where users don't yet exist on the platform, we recommend turning off all communications before syncing users. Otherwise, users may receive unintended emails during the initial import.

Learn how to manage user creation communications

Body Params
users
array of objects
required

The users to upsert.

users*
config
object

Optional integration config. If omitted, defaults are used.

Responses

Language
Credentials
Bearer
JWT
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json