User model at the conceptual level, the canonical endpoint for credential validation, and the admin CRUD you use to create, update, and link users to your CRM or ERP.
The User model
Each user belongs to exactly one tenant and is identified by anid (GUID). The same user never exists in two tenants: if the same person is in two communities, those are two distinct records.
The most commonly used fields in authenticated responses:
The detailed contract for each response (exact field names and types) is published in the API Reference tab, under the Users / Auth tags. The JSON on this page is illustrative.
Roles (role)
Account status (status)
Every community has a system user with
userName = "admin" (internal to the platform). It never appears in listings, searches, or pickers. Ignore it if it shows up in an export.Validate credentials and discover the associated user
The canonical endpoint for partners to validate a credential and discover the associated user isGET /auth/me. Call it at your integration’s boot and whenever you need to confirm the context.
- Confirm the key is valid and points to the right tenant (the
customerfield). - Capture the
idof the user tied to the key (useful for your own logs and audit). - Refresh the session via the returned
accessToken/refreshToken.
Admin user CRUD
Partners with an admin API Key manage users directly through the API, under the/admin/users prefix. This is the surface you use to keep the Cativa base in sync with your own system.
Create a user
201 Created):
Find a user by email
The most direct path when you have the email from your CRM and don’t have theuserId:
Update single fields
Prefer the single-field routes for focused changes: they are safer than a fullPUT (they don’t overwrite other fields by accident).
Bind your system’s id (external-id)
Store your CRM/ERP identifier on the Cativa user. This lets you correlate records on both sides without relying on the email (which can change).
Ban and delete
End-to-end: sync a member from your CRM
1
Look up by email
Call
GET /admin/users/email/{email}. If it returns 200, the user already exists: store the id and skip to step 3.2
Create if missing
If the lookup returns
404, call POST /admin/users with the CRM data. Store the id from the response.3
Bind the external id
Call
PATCH /admin/users/{userId}/external-id with your system’s identifier. From here on both sides are correlated.4
Grant access with a badge
Assign the badge that unlocks the right group/course. See Badges as Permissions.
Self-service user endpoints
Beyond the admin CRUD, the authenticated user manages their own profile:GET /users/profile/{userName}. A user’s public profile by handle.PUT /users/profile. Update your own profile.GET /users/search?query=.... Search users by name (respects theadminsystem-user filter).
Common errors
404 Not Found on email lookup
404 Not Found on email lookup
The user does not exist in that tenant. This is the expected signal to create via
POST /admin/users.409 Conflict on create
409 Conflict on create
A user with that email already exists in the tenant. Look up by email before creating (the standard sync flow).
403 Forbidden on /admin routes
403 Forbidden on /admin routes
The key lacks admin scope.
/admin/users routes require an admin API Key. Ask the tenant admin for the right credential.Next steps
Badges as Permissions
How to assign credentials to grant access to groups and courses.
Communities and Spaces
Where the user fits in the Community > Space > Group hierarchy.
