Summary and recommendation
MicroStrategy exposes user management through its REST API at `/MicroStrategyLibrary/api`, using session-token authentication obtained via `POST /api/auth/login`. The auth token is returned in the `X-MSTR-AuthToken` response header - not the body - which is a common integration failure point.
All mutating operations require the calling account to hold the 'Manage Users' system privilege; a missing privilege returns a 403 with no diagnostic detail. OAuth 2.0 is not documented for user-management endpoints; standard credential exchange is the supported path.
For teams building identity graph pipelines across SaaS applications, the REST API provides the resolution layer needed to map external identities to MicroStrategy's internal GUIDs before any lifecycle operation can execute.
API quick reference
| Has user API | Yes |
| Auth method | Session token (Bearer) obtained via POST /auth/login; standard username/password credential exchange. OAuth 2.0 is NOT explicitly documented for user-management endpoints in official sources. |
| Base URL | Official docs |
| SCIM available | Yes |
| SCIM plan required | Enterprise (Strategy One, September 2025 release or later) |
Authentication
Auth method: Session token (Bearer) obtained via POST /auth/login; standard username/password credential exchange. OAuth 2.0 is NOT explicitly documented for user-management endpoints in official sources.
Setup steps
- POST /api/auth/login with JSON body {username, password, loginMode} to obtain an authToken.
- Include the authToken as HTTP header 'X-MSTR-AuthToken:
' on all subsequent requests. - Optionally include 'X-MSTR-ProjectID' header when project-scoped operations are needed.
- Session expires after inactivity; call POST /api/auth/keepAlive to extend, or re-authenticate.
- Call POST /api/auth/logout to invalidate the token when done.
User object / data model
| Field | Type | Description | On create | On update | Notes |
|---|---|---|---|---|---|
| id | string (GUID) | Unique identifier for the user object. | system-generated | immutable | MicroStrategy internal GUID format. |
| name | string | Display name of the user. | required | optional | Full name shown in UI. |
| username | string | Login username (unique within the environment). | required | optional | Case-insensitive in most configurations. |
| password | string | User password (write-only). | required (unless SSO) | optional | Never returned in GET responses. |
| enabled | boolean | Whether the user account is active. | optional (default true) | optional | Set false to disable without deleting. |
| requireNewPassword | boolean | Force password change on next login. | optional | optional | |
| standardAuthAllowed | boolean | Whether standard (non-SSO) login is permitted. | optional | optional | Relevant when SSO is configured. |
| ldapdn | string | LDAP distinguished name for directory-linked accounts. | optional | optional | Used when LDAP/AD integration is active. |
| abbreviation | string | Short alias or initials for the user. | optional | optional | |
| description | string | Free-text description of the user. | optional | optional | |
| memberships | array of group objects | User groups the user belongs to. | optional | optional | Each entry contains group id and name. |
| privileges | array | System-level privileges assigned to the user. | optional | optional | Returned in detailed GET responses. |
| addresses | array | Email/delivery addresses for subscriptions and notifications. | optional | optional | Used for Distribution Services. |
| trustId | string | Trusted authentication identifier. | optional | optional | Used with trusted authentication configurations. |
| type | integer | Object type code (34 = user). | system-set | immutable | MicroStrategy object type enumeration. |
Core endpoints
Authenticate (get session token)
- Method: POST
- URL:
/api/auth/login - Watch out for: Token is returned in the response header X-MSTR-AuthToken, not the body. loginMode 1 = standard auth; 16 = SAML.
Request example
POST /api/auth/login
Content-Type: application/json
{
"username": "admin",
"password": "pass",
"loginMode": 1
}
Response example
HTTP 204 No Content
X-MSTR-AuthToken: abc123tokenvalue
Set-Cookie: JSESSIONID=...
List users
- Method: GET
- URL:
/api/users - Watch out for: Use nameBegins or abbreviationBegins query params to filter. Large environments should always paginate with offset/limit.
Request example
GET /api/users?offset=0&limit=50
X-MSTR-AuthToken: abc123tokenvalue
Response example
{
"users": [
{"id":"GUID1","name":"John Doe","username":"jdoe","enabled":true},
{"id":"GUID2","name":"Jane Smith","username":"jsmith","enabled":true}
]
}
Get user by ID
- Method: GET
- URL:
/api/users/{userId} - Watch out for: userId must be the MSTR GUID, not the username string.
Request example
GET /api/users/ABCD1234-5678-EFGH
X-MSTR-AuthToken: abc123tokenvalue
Response example
{
"id": "ABCD1234-5678-EFGH",
"name": "John Doe",
"username": "jdoe",
"enabled": true,
"memberships": [{"id":"GRP1","name":"Analysts"}]
}
Create user
- Method: POST
- URL:
/api/users - Watch out for: Password complexity is enforced by server security policy. Omit password field only if SSO/trusted auth is the sole login method.
Request example
POST /api/users
X-MSTR-AuthToken: abc123tokenvalue
Content-Type: application/json
{
"username": "newuser",
"name": "New User",
"password": "Str0ngP@ss",
"enabled": true
}
Response example
HTTP 201 Created
{
"id": "NEWGUID-1234",
"name": "New User",
"username": "newuser",
"enabled": true
}
Update user
- Method: PATCH
- URL:
/api/users/{userId} - Watch out for: Uses JSON Patch (RFC 6902) operationList format, not a plain JSON merge. Incorrect op format returns 400.
Request example
PATCH /api/users/NEWGUID-1234
X-MSTR-AuthToken: abc123tokenvalue
Content-Type: application/json
{
"operationList": [
{"op":"replace","path":"/enabled","value":false}
]
}
Response example
HTTP 200 OK
{
"id": "NEWGUID-1234",
"name": "New User",
"username": "newuser",
"enabled": false
}
Delete user
- Method: DELETE
- URL:
/api/users/{userId} - Watch out for: Deletion is permanent and cannot be undone. Disabling (enabled=false) is recommended over deletion for audit trail preservation.
Request example
DELETE /api/users/NEWGUID-1234
X-MSTR-AuthToken: abc123tokenvalue
Response example
HTTP 204 No Content
List user groups
- Method: GET
- URL:
/api/usergroups - Watch out for: Group membership changes are made via PATCH on the user object's memberships field, not directly on the group endpoint.
Request example
GET /api/usergroups?offset=0&limit=50
X-MSTR-AuthToken: abc123tokenvalue
Response example
{
"userGroups": [
{"id":"GRP1","name":"Analysts"},
{"id":"GRP2","name":"Admins"}
]
}
Get current user session info
- Method: GET
- URL:
/api/sessions - Watch out for: Returns info for the authenticated session only; not a list of all active sessions.
Request example
GET /api/sessions
X-MSTR-AuthToken: abc123tokenvalue
Response example
{
"id": "SESSIONGUID",
"userId": "USERGUID",
"username": "admin",
"userFullName": "Administrator"
}
Rate limits, pagination, and events
Rate limits: MicroStrategy does not publish explicit public rate limit tiers for its REST API. Limits are governed by server-side configuration (Intelligence Server and Web Server settings) and deployment sizing. No documented per-minute or per-hour numeric caps found in official sources.
Rate-limit headers: No
Retry-After header: No
Rate-limit notes: Administrators can configure max concurrent sessions and connection pool sizes in MicroStrategy System Administration. Cloud/SaaS deployments may impose undocumented throttling. Contact MicroStrategy support for specific limits.
Pagination method: offset
Default page size: 50
Max page size: 200
Pagination pointer: offset and limit query parameters (e.g., ?offset=0&limit=50)
Webhooks available: No
Webhook notes: MicroStrategy REST API does not expose a native webhook/event subscription system for user lifecycle events (create, update, delete) as documented in official sources.
Alternative event strategy: Use polling against GET /api/users with timestamp or change-detection logic, or leverage SCIM provisioning events from the IdP (Okta, Entra ID) which push changes to MicroStrategy via SCIM 2.0.
SCIM API status
SCIM available: Yes
SCIM version: 2.0
Plan required: Enterprise (Strategy One, September 2025 release or later)
Endpoint: https://
/MicroStrategyLibrary/scim/v2 Supported operations: GET /Users, GET /Users/{id}, POST /Users, PUT /Users/{id}, PATCH /Users/{id}, DELETE /Users/{id}, GET /Groups, GET /Groups/{id}, POST /Groups, PATCH /Groups/{id}, DELETE /Groups/{id}, GET /ServiceProviderConfig, GET /Schemas
Limitations:
- Requires Enterprise plan; not available on lower tiers.
- SSO (SAML via Okta or Entra ID) must be configured as a prerequisite.
- Added in Strategy One September 2025 release; not available in older MicroStrategy versions.
- Supported IdPs documented: Okta and Microsoft Entra ID. Google Workspace and OneLogin not documented.
- SCIM token-based auth required; session tokens from /auth/login are not used for SCIM endpoints.
Common scenarios
Three automation scenarios cover the primary lifecycle operations.
First, provisioning a new analyst: authenticate, resolve the target group GUID via GET /api/usergroups, create the user with POST /api/users, then assign group membership via PATCH /api/users/{id} using JSON Patch RFC 6902 format - a plain JSON merge body will return 400.
Second, deactivating a departed employee: resolve the username to a GUID via GET /api/users? nameBegins=, then PATCH with {op:'replace', path:'/enabled', value:false}; prefer this over DELETE to preserve owned objects and audit history.
Third, automated provisioning via SCIM 2. 0: requires Strategy One (September 2025+) on Enterprise plan with SAML SSO already operational; the SCIM bearer token is separate from REST session tokens and must be generated in the MicroStrategy admin console before configuring the IdP.
Supported IdPs are Okta and Microsoft Entra ID; Google Workspace and OneLogin are not documented.
Provision a new analyst user and add to a group
- POST /api/auth/login with admin credentials to obtain X-MSTR-AuthToken.
- GET /api/usergroups?nameBegins=Analysts to retrieve the target group GUID.
- POST /api/users with {username, name, password, enabled:true} to create the user; capture returned user GUID.
- PATCH /api/users/{newUserGuid} with operationList op=add path=/memberships value=[{id: groupGuid}] to assign group membership.
- POST /api/auth/logout to invalidate the admin session token.
Watch out for: Group membership is managed via PATCH on the user object, not via a separate group-membership endpoint. Use JSON Patch format or the call will return 400.
Disable (deactivate) a departed employee
- POST /api/auth/login to obtain admin token.
- GET /api/users?nameBegins=
to resolve the user's GUID. - PATCH /api/users/{userId} with operationList [{op:'replace', path:'/enabled', value:false}] to disable the account.
- Optionally PATCH to remove group memberships to revoke data access.
- POST /api/auth/logout.
Watch out for: Disabling is preferred over DELETE to preserve audit history and owned objects. A disabled user cannot log in but their objects remain intact.
Automate user provisioning via SCIM 2.0 with Okta
- Ensure Strategy One (Sept 2025+) Enterprise plan is active and SAML SSO with Okta is configured.
- In MicroStrategy admin console, enable SCIM provisioning and generate a SCIM bearer token.
- In Okta Admin, add MicroStrategy as a SCIM 2.0 application; set SCIM base URL to https://
/MicroStrategyLibrary/scim/v2 and paste the bearer token. - Configure Okta attribute mappings for userName, displayName, emails, and groups.
- Assign users/groups in Okta; Okta will POST /scim/v2/Users to create accounts and PATCH to update or deactivate.
- Verify provisioning logs in both Okta and MicroStrategy admin console.
Watch out for: SCIM provisioning requires SSO to already be working; attempting SCIM setup before SSO is configured will result in authentication failures on provisioned accounts. SCIM token is separate from REST API session tokens.
Why building this yourself is a trap
Several API behaviors are non-obvious and will break integrations silently. User IDs are internal MicroStrategy GUIDs - you cannot operate on a user by username string alone; every workflow must include a lookup step to resolve username to GUID first.
Pagination defaults to 50 records with a maximum of 200 per page using offset/limit parameters; large environments that skip pagination will receive incomplete user lists without an error. Session tokens expire after a server-configured idle timeout (commonly 30 minutes); integrations must implement keepAlive polling or re-authentication logic.
The base URL path /MicroStrategyLibrary/api is the default web context root and may differ in non-standard deployments. SCIM endpoints return 404 on any deployment not running Strategy One September 2025 or later - version and plan validation should be part of any pre-flight check.
No native webhooks exist for user lifecycle events; event-driven workflows must rely on IdP-side SCIM push or polling against GET /api/users with change-detection logic.
Automate MicroStrategy workflows without one-off scripts
Stitchflow builds and maintains end-to-end IT automation across your SaaS stack, including apps without APIs. Built for exactly how your company works, with human approvals where they matter.