Stitchflow
Seismic logo

Seismic User Management API Guide

API workflow

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

UpdatedMar 17, 2026

Summary and recommendation

Seismic exposes user lifecycle operations through two separate API surfaces: a REST API at https://api.seismic.com/integration/v2 using OAuth 2.0 (client credentials or authorization code), and a SCIM 2.0 endpoint at https://api.seismic.com/scim/v2 using a separately generated Bearer token from the Seismic admin UI.

These two surfaces use distinct authentication tokens and must not be conflated.

Core user object fields include id (UUID), email, username, isActive, role, groups (array of group IDs), department, and title

sufficient to build a basic identity graph mapping Seismic users to their organizational context and group memberships.

Pagination on the REST API is offset-based using page (1-indexed) and pageSize parameters, with a default of 25 and a maximum of 100 records per page.

API quick reference

Has user APIYes
Auth methodOAuth 2.0 (client credentials and authorization code flows)
Base URLOfficial docs
SCIM availableYes
SCIM plan requiredEnterprise

Authentication

Auth method: OAuth 2.0 (client credentials and authorization code flows)

Setup steps

  1. Register an application in the Seismic Developer Portal to obtain a client_id and client_secret.
  2. Request an access token via POST to https://auth.seismic.com/tenants/{tenant}/connect/token using client_credentials grant.
  3. Include the returned Bearer token in the Authorization header of all API requests.
  4. Tokens expire; implement refresh logic or re-request tokens using client credentials as needed.

Required scopes

Scope Description Required for
user:read Read user profile and account information. List users, get user by ID
user:write Create, update, and deactivate user accounts. Create user, update user, deactivate user
group:read Read group and team membership data. List groups, get group members
group:write Create and manage groups and group membership. Create group, add/remove group members

User object / data model

Field Type Description On create On update Notes
id string (UUID) Unique identifier for the user. system-generated immutable Used as path parameter for user-specific operations.
username string The user's login username, typically their email address. required optional Must be unique within the tenant.
email string Primary email address of the user. required optional
firstName string User's first name. required optional
lastName string User's last name. required optional
isActive boolean Indicates whether the user account is active. optional (defaults to true) optional Set to false to deactivate a user without deleting.
role string The user's assigned role within Seismic (e.g., Admin, User, Manager). optional optional Role names are tenant-configured.
groups array of strings List of group IDs the user belongs to. optional optional
locale string User's preferred locale (e.g., en-US). optional optional
title string User's job title. optional optional
department string Department the user belongs to. optional optional
createdAt string (ISO 8601) Timestamp when the user was created. system-generated immutable
updatedAt string (ISO 8601) Timestamp of the last update to the user record. system-generated system-generated

Core endpoints

List Users

  • Method: GET
  • URL: https://api.seismic.com/integration/v2/users
  • Watch out for: Pagination parameters are page (1-based) and pageSize; omitting them returns the default page size.

Request example

GET /integration/v2/users?page=1&pageSize=25
Authorization: Bearer {access_token}

Response example

{
  "data": [
    {"id": "abc-123", "email": "user@example.com", "firstName": "Jane", "lastName": "Doe", "isActive": true}
  ],
  "totalCount": 150,
  "page": 1,
  "pageSize": 25
}

Get User by ID

  • Method: GET
  • URL: https://api.seismic.com/integration/v2/users/{userId}
  • Watch out for: Returns 404 if the userId does not exist in the tenant.

Request example

GET /integration/v2/users/abc-123
Authorization: Bearer {access_token}

Response example

{
  "id": "abc-123",
  "email": "user@example.com",
  "firstName": "Jane",
  "lastName": "Doe",
  "isActive": true,
  "role": "User"
}

Create User

  • Method: POST
  • URL: https://api.seismic.com/integration/v2/users
  • Watch out for: Username must be unique; duplicate email/username returns a 409 Conflict.

Request example

POST /integration/v2/users
Authorization: Bearer {access_token}
Content-Type: application/json

{"email":"new@example.com","firstName":"John","lastName":"Smith","username":"new@example.com"}

Response example

{
  "id": "def-456",
  "email": "new@example.com",
  "firstName": "John",
  "lastName": "Smith",
  "isActive": true
}

Update User

  • Method: PATCH
  • URL: https://api.seismic.com/integration/v2/users/{userId}
  • Watch out for: Only fields included in the request body are updated; omitted fields retain existing values.

Request example

PATCH /integration/v2/users/def-456
Authorization: Bearer {access_token}
Content-Type: application/json

{"title":"Senior Manager","department":"Sales"}

Response example

{
  "id": "def-456",
  "title": "Senior Manager",
  "department": "Sales"
}

Deactivate User

  • Method: PATCH
  • URL: https://api.seismic.com/integration/v2/users/{userId}
  • Watch out for: Seismic does not expose a hard-delete user endpoint via the REST API; deactivation via isActive=false is the standard offboarding method.

Request example

PATCH /integration/v2/users/def-456
Authorization: Bearer {access_token}
Content-Type: application/json

{"isActive": false}

Response example

{
  "id": "def-456",
  "isActive": false
}

List Groups

  • Method: GET
  • URL: https://api.seismic.com/integration/v2/groups

Request example

GET /integration/v2/groups?page=1&pageSize=25
Authorization: Bearer {access_token}

Response example

{
  "data": [
    {"id": "grp-001", "name": "Sales Team", "memberCount": 12}
  ],
  "totalCount": 5
}

Add User to Group

  • Method: POST
  • URL: https://api.seismic.com/integration/v2/groups/{groupId}/members
  • Watch out for: Adding a user already in the group may return 409; verify membership before calling.

Request example

POST /integration/v2/groups/grp-001/members
Authorization: Bearer {access_token}
Content-Type: application/json

{"userId": "def-456"}

Response example

{
  "groupId": "grp-001",
  "userId": "def-456",
  "addedAt": "2024-06-01T10:00:00Z"
}

Remove User from Group

  • Method: DELETE
  • URL: https://api.seismic.com/integration/v2/groups/{groupId}/members/{userId}
  • Watch out for: Returns 404 if the user is not a member of the specified group.

Request example

DELETE /integration/v2/groups/grp-001/members/def-456
Authorization: Bearer {access_token}

Response example

HTTP 204 No Content

Rate limits, pagination, and events

  • Rate limits: Seismic's public developer documentation does not explicitly publish specific rate limit thresholds or tier-based limits as of the last known documentation review.

  • Rate-limit headers: Unknown

  • Retry-After header: Unknown

  • Rate-limit notes: No explicit rate limit values, headers, or Retry-After behavior documented publicly. Contact Seismic support for current limits applicable to your tenant.

  • Pagination method: offset

  • Default page size: 25

  • Max page size: 100

  • Pagination pointer: page and pageSize

  • Webhooks available: No

  • Webhook notes: Seismic's public developer documentation does not describe outbound webhook support for user lifecycle events as of the last known documentation review.

  • Alternative event strategy: Use SCIM provisioning with an IdP (e.g., Okta, Azure AD) to receive push-based user lifecycle events, or poll the REST API for user state changes.

SCIM API status

  • SCIM available: Yes

  • SCIM version: 2.0

  • Plan required: Enterprise

  • Endpoint: https://api.seismic.com/scim/v2

  • Supported operations: GET /Users (list users), GET /Users/{id} (get user), POST /Users (create user), PUT /Users/{id} (replace user), PATCH /Users/{id} (update user), DELETE /Users/{id} (deactivate/remove user), GET /Groups (list groups), POST /Groups (create group), PATCH /Groups/{id} (update group membership), DELETE /Groups/{id} (delete group)

Limitations:

  • Requires SSO to be configured as a prerequisite before SCIM provisioning can be enabled.
  • Available on Enterprise plan only; not available on lower tiers.
  • SCIM token is generated within Seismic admin settings and must be provided as a Bearer token to the IdP connector.
  • Hard delete behavior via SCIM DELETE may deactivate rather than permanently remove users depending on tenant configuration.
  • IdP-specific connector configuration (e.g., Okta SCIM app, Azure AD enterprise app) is required; Seismic does not publish a generic connector.

Common scenarios

Three integration scenarios are well-supported by the documented API surface.

First, onboarding: POST to /integration/v2/users with required fields, capture the returned id, then POST to /integration/v2/groups/{groupId}/members

check for 409 Conflict on both calls, as duplicate email/username and duplicate group membership both return 409.

Second, offboarding: PATCH /integration/v2/users/{userId} with {"isActive": false};

no hard-delete REST endpoint exists, so deactivation is the only supported path.

Follow up with DELETE /integration/v2/groups/{groupId}/members/{userId} for each group, since deactivation does not remove group membership.

Third, IdP-driven automation via SCIM: requires Enterprise plan and fully operational SSO before the SCIM token can be generated;

the Okta or Azure AD connector must target https://api.seismic.com/scim/v2 with the admin-generated Bearer token, not the OAuth token.

Webhooks for user lifecycle events are not documented;

polling or SCIM push are the only event-detection options.

Onboard a new sales user and assign to a group

  1. Obtain an OAuth 2.0 access token via POST to https://auth.seismic.com/tenants/{tenant}/connect/token with client_credentials grant.
  2. POST to /integration/v2/users with email, firstName, lastName, username, and role fields to create the user.
  3. Capture the returned user id from the response.
  4. POST to /integration/v2/groups/{groupId}/members with the new userId to add the user to the appropriate sales group.
  5. Verify membership with GET /integration/v2/groups/{groupId}/members.

Watch out for: If the email already exists, the create call returns 409 Conflict. Check for existing users with GET /users?email={email} before creating.

Offboard a departing employee

  1. Obtain a valid OAuth 2.0 access token.
  2. Look up the user by email using GET /integration/v2/users with a filter or search parameter.
  3. PATCH /integration/v2/users/{userId} with {"isActive": false} to deactivate the account.
  4. Optionally, remove the user from all groups by calling DELETE /integration/v2/groups/{groupId}/members/{userId} for each group membership.

Watch out for: There is no hard-delete REST endpoint; deactivation is the supported method. Confirm with your Seismic admin whether deactivated users consume a license seat.

Set up SCIM auto-provisioning via Okta

  1. Confirm the Seismic tenant is on the Enterprise plan and SSO is already configured.
  2. In Seismic admin settings, navigate to the SCIM provisioning section and generate a SCIM Bearer token.
  3. In Okta, add the Seismic application from the Okta Integration Network and enable SCIM provisioning.
  4. Enter the Seismic SCIM base URL (https://api.seismic.com/scim/v2) and the generated Bearer token into the Okta SCIM connector settings.
  5. Enable the desired provisioning features in Okta (Create Users, Update User Attributes, Deactivate Users, Push Groups).
  6. Assign users or groups in Okta to trigger initial provisioning to Seismic.

Watch out for: SSO must be fully operational before SCIM is enabled. Enabling SCIM without SSO configured will result in provisioning failures. The SCIM token is separate from the REST API OAuth token.

Why building this yourself is a trap

The most consequential caveat is the dual-token architecture: the REST API OAuth token and the SCIM Bearer token are issued through entirely different flows, and using the wrong token against either endpoint will produce authentication failures that are easy to misdiagnose.

Rate limits are not publicly documented - no thresholds, no rate-limit headers, and no Retry-After behavior are specified - so any bulk operation or high-frequency polling loop must be validated against a non-production tenant before running in production. OAuth access tokens have a finite TTL;

without token caching and renewal logic, long-running workflows will hit 401 errors mid-execution.

Finally, the identity graph built from the REST API reflects role and group membership but does not expose Profile assignments, which are the actual determinant of content visibility in Seismic - automations that only sync role and group state may leave users in a technically active but functionally misconfigured state.

Automate Seismic 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 17, 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