Stitchflow
Brandwatch logo

Brandwatch User Management API Guide

API workflow

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

UpdatedMar 4, 2026

Summary and recommendation

Brandwatch exposes a REST user management API authenticated via OAuth 2.0 client credentials (POST to https://api.brandwatch.com/oauth/token). The API supports list, get, create, update, and delete operations scoped to an accountId retrieved from GET /accounts.

Native SCIM 2.0 is not supported; teams requiring automated lifecycle management at scale should evaluate Stitchflow's MCP server with ~100 deep IT/identity integrations as an alternative provisioning layer. Rate limit thresholds are not publicly documented and must be confirmed with Brandwatch account management; HTTP 429 is returned on breach, and exponential backoff is recommended.

API quick reference

Has user APIYes
Auth methodOAuth 2.0 (client credentials)
Base URLOfficial docs
SCIM availableNo
SCIM plan requiredEnterprise

Authentication

Auth method: OAuth 2.0 (client credentials)

Setup steps

  1. Log in to Brandwatch and navigate to Settings > API Access.
  2. Create an API client to obtain a client_id and client_secret.
  3. POST to https://api.brandwatch.com/oauth/token with grant_type=client_credentials, client_id, and client_secret to receive an access_token.
  4. Include the access_token as a Bearer token in the Authorization header of all subsequent API requests.

Required scopes

Scope Description Required for
Brandwatch's client credentials flow does not use named OAuth scopes in the traditional sense; access is governed by the permissions of the API client created in the dashboard. All API operations

User object / data model

Field Type Description On create On update Notes
id integer Unique numeric identifier for the user system-assigned immutable Used as path parameter in user-specific endpoints
username string Login username (typically email address) required optional
email string User's email address required optional
firstName string User's first name optional optional
lastName string User's last name optional optional
role string User's role within the account (e.g., admin, analyst) required optional Role names are account-specific
active boolean Whether the user account is active optional optional
createdAt string (ISO 8601) Timestamp when the user was created system-assigned immutable

Core endpoints

List users in account

  • Method: GET
  • URL: https://api.brandwatch.com/accounts/{accountId}/users
  • Watch out for: accountId must be obtained separately; users without admin API client permissions will receive 403.

Request example

GET /accounts/12345/users?page=0&pageSize=100
Authorization: Bearer {access_token}

Response example

{
  "resultsTotal": 25,
  "results": [
    {"id": 1, "username": "user@example.com", "role": "analyst"}
  ]
}

Get single user

  • Method: GET
  • URL: https://api.brandwatch.com/accounts/{accountId}/users/{userId}
  • Watch out for: Returns 404 if userId does not belong to the specified accountId.

Request example

GET /accounts/12345/users/67890
Authorization: Bearer {access_token}

Response example

{
  "id": 67890,
  "username": "user@example.com",
  "role": "analyst",
  "active": true
}

Create user

  • Method: POST
  • URL: https://api.brandwatch.com/accounts/{accountId}/users
  • Watch out for: User receives an invitation email; account must have available user seats. Auto-provisioning is NOT supported - seats must exist.

Request example

POST /accounts/12345/users
Content-Type: application/json
{
  "username": "newuser@example.com",
  "role": "analyst"
}

Response example

{
  "id": 99001,
  "username": "newuser@example.com",
  "role": "analyst",
  "active": true
}

Update user

  • Method: PUT
  • URL: https://api.brandwatch.com/accounts/{accountId}/users/{userId}
  • Watch out for: Full object replacement semantics may apply; confirm fields not included are not cleared.

Request example

PUT /accounts/12345/users/67890
Content-Type: application/json
{
  "role": "admin"
}

Response example

{
  "id": 67890,
  "username": "user@example.com",
  "role": "admin"
}

Delete user

  • Method: DELETE
  • URL: https://api.brandwatch.com/accounts/{accountId}/users/{userId}
  • Watch out for: Deletion is permanent. Ensure data ownership/transfer is handled before removing a user.

Request example

DELETE /accounts/12345/users/67890
Authorization: Bearer {access_token}

Response example

HTTP 204 No Content

Get account details (to retrieve accountId)

  • Method: GET
  • URL: https://api.brandwatch.com/accounts
  • Watch out for: The accountId returned here is required for all user-management endpoint calls.

Request example

GET /accounts
Authorization: Bearer {access_token}

Response example

{
  "results": [
    {"id": 12345, "name": "My Organization"}
  ]
}

Rate limits, pagination, and events

  • Rate limits: Brandwatch enforces rate limits on API requests but does not publicly document specific numeric thresholds per plan. Limits are applied per API client/token.
  • Rate-limit headers: Yes
  • Retry-After header: No
  • Rate-limit notes: HTTP 429 is returned when limits are exceeded. Specific limits are communicated via account management. Retry with exponential backoff is recommended.
  • Pagination method: offset
  • Default page size: 100
  • Max page size: 500
  • Pagination pointer: page / pageSize
Plan Limit Concurrent
Standard/Enterprise Not publicly documented 0
  • Webhooks available: No
  • Webhook notes: Brandwatch does not publicly document webhook support for user lifecycle events (create, update, delete).
  • Alternative event strategy: Poll the GET /accounts/{accountId}/users endpoint periodically to detect changes.

SCIM API status

  • SCIM available: No
  • SCIM version: Not documented
  • Plan required: Enterprise
  • Endpoint: Not documented

Limitations:

  • Native SCIM provisioning is not supported by Brandwatch.
  • Limited user sync is available via Okta integration only, but this is SSO-based and does not constitute full SCIM 2.0 provisioning.
  • Admin must manually create user accounts; auto-provisioning is not available.
  • An SSO setup fee applies for Okta/Entra integrations.

Common scenarios

Three primary automation scenarios are supported by the API. Onboarding: POST to /accounts/{accountId}/users with username and role; the user receives an invitation email and must activate their account manually - a seat must exist in the contract or the call will fail.

Role promotion: PUT to /accounts/{accountId}/users/{userId} with the updated role field; confirm whether full-replace semantics apply and include all required fields to avoid unintentional data loss.

Offboarding: DELETE to /accounts/{accountId}/users/{userId} is permanent and immediate; content ownership transfer has no API support and must be handled in the UI before deletion. No webhooks are available for user lifecycle events; polling GET /accounts/{accountId}/users is the only mechanism for detecting changes.

Onboard a new analyst user

  1. POST to https://api.brandwatch.com/oauth/token to obtain an access_token using client_id and client_secret.
  2. GET https://api.brandwatch.com/accounts to retrieve the accountId for your organization.
  3. POST https://api.brandwatch.com/accounts/{accountId}/users with body {username, role: 'analyst'} to create the user.
  4. User receives an invitation email to set their password and activate the account.

Watch out for: Ensure a user seat is available in the contract before attempting creation; the API will return an error if seats are exhausted.

Promote a user to admin role

  1. GET https://api.brandwatch.com/accounts/{accountId}/users to find the target user's userId.
  2. PUT https://api.brandwatch.com/accounts/{accountId}/users/{userId} with body {role: 'admin'} to update the role.

Watch out for: Confirm whether PUT uses full-replace semantics; include all required fields to avoid unintentional data loss.

Offboard a departing user

  1. GET https://api.brandwatch.com/accounts/{accountId}/users to locate the user's userId by email.
  2. Reassign or export any dashboards/reports owned by the user via the Brandwatch UI (no API for ownership transfer documented).
  3. DELETE https://api.brandwatch.com/accounts/{accountId}/users/{userId} to remove the user.

Watch out for: Deletion is irreversible. Data owned by the deleted user may be lost if not transferred beforehand. No automated offboarding via SCIM is available.

Why building this yourself is a trap

The API does not eliminate the core provisioning constraint: seats are contract-gated, auto-provisioning is not supported, and SCIM is absent. Attempting to create a user beyond the contracted seat limit returns an error with no self-serve resolution path. OAuth tokens have a finite expiry and require refresh logic using the client credentials flow.

The accountId is not surfaced in the UI and must be retrieved programmatically via GET /accounts before any user call can be made - teams that skip this step will encounter 403 or 404 errors. The developer portal may lag behind production endpoint changes; validate critical calls with Brandwatch support before deploying to production.

Automate Brandwatch 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 4, 2026

* Details sourced from official product documentation and admin references.

Keep exploring

Related apps

Abnormal Security logo

Abnormal Security

API Only
AutomationAPI only
Last updatedMar 2026

Abnormal Security is an enterprise email security platform focused on detecting and investigating threats such as phishing, account takeover (ATO), and vendor email compromise. It does not support SCIM provisioning, which means every app in your stack

ActiveCampaign logo

ActiveCampaign

API Only
AutomationAPI only
Last updatedFeb 2026

ActiveCampaign uses a group-based permission model: every user belongs to exactly one group, and all feature-area access (Contacts, Campaigns, Automations, Deals, Reports, Templates) is configured at the group level, not per individual. The default Adm

ADP logo

ADP

API Only
AutomationAPI only
Last updatedFeb 2026

ADP Workforce Now is a mid-market to enterprise HCM platform that serves as the HR source of record for employee data — payroll, benefits, time, and talent. User access is governed by a hybrid permission model: predefined security roles (Security Maste