Stitchflow
Trainual logo

Trainual User Management API Guide

API workflow

How to automate user lifecycle operations through APIs with caveats that matter in production.

UpdatedMar 16, 2026

Summary and recommendation

Trainual exposes a REST API at https://app.trainual.com/api/v1, authenticated via a Bearer token generated in Settings > Integrations > API.

The user object surfaces id, email, first_name, last_name, role, title, department, status, created_at, and updated_at.

Critical caveat: Trainual's public API documentation is sparse

exact endpoint paths, response envelope structure, and error codes are not fully published, so treat all field names as approximate until validated against a live account response.

No webhook support is documented;

change detection requires polling GET /api/v1/users.

API quick reference

Has user APIYes
Auth methodAPI Key (Bearer token in Authorization header)
Base URLOfficial docs
SCIM availableYes
SCIM plan requiredEnterprise (custom pricing; contact Trainual sales)

Authentication

Auth method: API Key (Bearer token in Authorization header)

Setup steps

  1. Log in to Trainual as an account owner or admin.
  2. Navigate to Settings > Integrations > API.
  3. Generate an API key from the API settings page.
  4. Include the key in all requests as: Authorization: Bearer

User object / data model

Field Type Description On create On update Notes
id integer Unique identifier for the user. system-assigned read-only
email string User's email address; used as login identifier. required optional Must be unique within the account.
first_name string User's first name. required optional
last_name string User's last name. required optional
role string User's role within Trainual (e.g., admin, member). optional optional Exact role enum values not publicly documented.
title string User's job title. optional optional
department string Department the user belongs to. optional optional
status string Active or deactivated state of the user. system-assigned optional
created_at datetime Timestamp when the user was created. system-assigned read-only ISO 8601 format.
updated_at datetime Timestamp of last update. system-assigned read-only ISO 8601 format.

Core endpoints

List Users

  • Method: GET
  • URL: https://app.trainual.com/api/v1/users
  • Watch out for: Exact field names and response envelope structure are not fully confirmed from public docs; treat as approximate.

Request example

GET /api/v1/users?page=1
Authorization: Bearer <api_key>
Accept: application/json

Response example

{
  "users": [
    {"id": 101, "email": "jane@example.com", "first_name": "Jane", "last_name": "Doe"}
  ],
  "meta": {"page": 1, "total": 50}
}

Get User

  • Method: GET
  • URL: https://app.trainual.com/api/v1/users/{id}
  • Watch out for: Endpoint path and response structure not fully confirmed from public documentation.

Request example

GET /api/v1/users/101
Authorization: Bearer <api_key>

Response example

{
  "user": {
    "id": 101,
    "email": "jane@example.com",
    "first_name": "Jane",
    "last_name": "Doe",
    "status": "active"
  }
}

Create User (Invite)

  • Method: POST
  • URL: https://app.trainual.com/api/v1/users
  • Watch out for: Creating a user likely triggers an invitation email. Seat limits apply based on plan.

Request example

POST /api/v1/users
Authorization: Bearer <api_key>
Content-Type: application/json

{"email":"new@example.com","first_name":"New","last_name":"User"}

Response example

{
  "user": {
    "id": 202,
    "email": "new@example.com",
    "status": "invited"
  }
}

Update User

  • Method: PATCH
  • URL: https://app.trainual.com/api/v1/users/{id}
  • Watch out for: PUT vs PATCH behavior not confirmed; use PATCH for partial updates if supported.

Request example

PATCH /api/v1/users/101
Authorization: Bearer <api_key>
Content-Type: application/json

{"title":"Manager","department":"Ops"}

Response example

{
  "user": {
    "id": 101,
    "title": "Manager",
    "department": "Ops"
  }
}

Deactivate/Delete User

  • Method: DELETE
  • URL: https://app.trainual.com/api/v1/users/{id}
  • Watch out for: Whether DELETE hard-deletes or deactivates the user is not confirmed from public docs.

Request example

DELETE /api/v1/users/101
Authorization: Bearer <api_key>

Response example

{
  "message": "User deactivated successfully."
}

Rate limits, pagination, and events

  • Rate limits: Rate limit details are not publicly documented by Trainual.

  • Rate-limit headers: No

  • Retry-After header: No

  • Rate-limit notes: No official rate limit documentation found. Contact Trainual support for current limits.

  • Pagination method: offset

  • Default page size: Not documented

  • Max page size: Not documented

  • Pagination pointer: page

  • Webhooks available: No

  • Webhook notes: No webhook support is documented in Trainual's official developer or help center documentation as of the research date.

  • Alternative event strategy: Poll the List Users endpoint periodically to detect changes.

SCIM API status

  • SCIM available: Yes

  • SCIM version: 2.0

  • Plan required: Enterprise (custom pricing; contact Trainual sales)

  • Endpoint: Not documented

  • Supported operations: Create user, Deactivate user, Update user attributes

Limitations:

  • SCIM endpoint URL is provisioned per-account and not publicly documented; obtained from Trainual admin settings after enabling SCIM.
  • Supported only with Okta and Microsoft Entra ID (Azure AD) as IdPs.
  • SSO must be configured on the account before SCIM provisioning is available.
  • Group/team sync support not confirmed from public documentation.
  • Requires Enterprise plan; not available on Small, Medium, or Growth tiers.

Common scenarios

Three primary automation scenarios are supported with caveats.

For provisioning, POST /api/v1/users with email, first_name, last_name, title, and department;

the call triggers an invitation email and immediately consumes a seat - verify headroom before bulk runs.

For deprovisioning, resolve the user's internal id via GET /api/v1/users filtered by email, then call DELETE /api/v1/users/{id};

whether DELETE performs a soft deactivation or a hard delete is not confirmed in public docs, so audit the behavior in a test account before automating offboarding.

For attribute updates, use PATCH /api/v1/users/{id};

PUT vs.

PATCH semantics are unconfirmed.

Rate limits are entirely undocumented - aggressive polling may result in throttling without clear error guidance or Retry-After headers.

Provision a new employee on hire

  1. POST /api/v1/users with email, first_name, last_name, title, and department.
  2. Trainual sends an invitation email to the new user.
  3. Optionally assign the user to groups or subjects via additional API calls if supported.

Watch out for: Verify available seat count before bulk provisioning; exceeding plan seat limits will cause failures.

Deprovision a departing employee

  1. Retrieve the user's Trainual ID via GET /api/v1/users filtered by email.
  2. Call DELETE /api/v1/users/{id} to deactivate the account.
  3. Confirm deactivation status via GET /api/v1/users/{id}.

Watch out for: Deactivation vs. hard delete behavior is not confirmed; audit before automating offboarding.

Automated provisioning via SCIM with Okta

  1. Upgrade to Trainual Enterprise plan.
  2. Enable SCIM in Trainual Settings > Integrations > SCIM; copy the tenant URL and bearer token.
  3. In Okta, add the Trainual SCIM app and configure the base URL and API token.
  4. Map Okta profile attributes to Trainual SCIM attributes (userName, name.givenName, name.familyName).
  5. Assign users or groups in Okta to trigger provisioning to Trainual.

Watch out for: SCIM endpoint URL is account-specific; do not use a generic URL. SSO must be active on the account first.

Why building this yourself is a trap

Integrating Trainual into an identity graph via the native REST API carries meaningful risk: no versioning deprecation policy is published beyond /v1, API keys are account-scoped with no per-user OAuth flow, and the absence of webhooks means any event-driven architecture must fall back to polling with undefined rate-limit boundaries.

For teams already running an identity graph that needs authoritative, low-latency user state from Trainual, SCIM 2.0 on the Enterprise tier is the more reliable path

but it is locked to Okta and Microsoft Entra ID as IdPs, the endpoint URL is account-specific (not a public static URL), and SSO must be active on the account before SCIM can be enabled.

Teams on sub-Enterprise plans have no SCIM path and must accept the REST API's documentation gaps as a structural constraint of the integration.

Automate Trainual 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.

Every app coverage, including apps without APIs
60+ app integrations plus browser automation for apps without APIs
IT graph reconciliation across apps and your IdP
Less than a week to launch, maintained as APIs and admin consoles change
SOC 2 Type II. ~2 hours of your team's time

UpdatedMar 16, 2026

* Details sourced from official product documentation and admin references.

Keep exploring

Related apps

15Five logo

15Five

Full API + SCIM
AutomationAPI + SCIM
Last updatedFeb 2026

15Five uses a fixed role-based permission model with six predefined roles: Account Admin, HR Admin, Billing Admin, Group Admin, Manager, and Employee. No custom roles can be constructed. User management lives at Settings gear → People → Manage people p

1Password logo

1Password

Full API + SCIM
AutomationAPI + SCIM
Last updatedFeb 2026

1Password's admin console at my.1password.com covers the full user lifecycle — invitations, group assignments, vault access, suspension, and deletion — without any third-party tooling. Like every app that mixes role-based and resource-level permissions

8x8 logo

8x8

Full API + SCIM
AutomationAPI + SCIM
Last updatedFeb 2026

8x8 Admin Console supports full lifecycle user management — create, deactivate, and delete — across its X Series unified communications platform. Every app a user can access (8x8 Work desktop, mobile, web, Agent Workspace) is gated by license assignmen