Skip to main content
POST
Provision Users
This endpoint has no hasPermission/hasFeature gate of its own — any valid client key can provision users into its own workspace. Pre-provisioning a user here with a role and locations before their first SSO login means they land in that role and those locations instead of the workspace’s bare default SSO role. See the Single Sign-On guide.
Need role_id/location_ids values? See Get Roles and Get Locations.
This endpoint returns a custom envelope — { status, results, errors } — not the { data, extra_meta } shape used by other user-management endpoints. A 200 response does not mean every row succeeded: always check errors. A duplicated email within the same batch fails every row that shares it, not just the extra ones.
Re-provisioning an existing user corrects their role and locations, but does not change their membership status — a Pending or Deactivated user stays that way. It also doesn’t bypass your workspace’s user-seat limit: if provisioning a new user would exceed it, that row fails in errors.

Authorizations

x-client-key
string
header
required

Client API key for authentication

x-client-secret
string
header
required

Client secret for authentication

Body

application/json
users
object[]
required
Minimum array length: 1
location_mode
enum<string>
default:add

add (default) only adds missing location memberships, never removes. replace makes the user's locations exactly match location_ids, removing any not listed.

Available options:
add,
replace

Response

Batch processed. Per-row outcomes are in results/errors — HTTP 200 does not mean every row succeeded, check errors.

status
boolean
results
object[]
errors
object[]