Stitchflow
Pipedrive logo

Pipedrive User Management API Guide

API workflow

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

UpdatedMar 11, 2026

Summary and recommendation

Pipedrive's REST API (base URL: `https://api.pipedrive.com/v1`) supports full user lifecycle management via the `/users` resource. Authentication is either a personal API token appended as `?api_token=YOUR_TOKEN` or OAuth 2.0 with a `Bearer` token in the `Authorization` header.

OAuth is strongly preferred for any production integration - personal tokens are tied to a specific user and attribute all API actions to that user in audit logs.

Only company admins can create, update, or deactivate other users. Non-admin tokens return HTTP 403 on any user-write endpoint. The `users:read`, `users:write`, and `admin` OAuth scopes are required for full user management operations.

For identity graph use cases - mapping Pipedrive user IDs to roles, permission sets, and visibility group membership - the relevant endpoints are `GET /users`, `GET /users/{id}/roleAssignments`, and `GET /users/{id}/permissions`.

Role IDs must be resolved separately via `GET /roles`; permission flags returned by `/permissions` are derived from the user's role and cannot be set directly on that endpoint.

API quick reference

Has user APIYes
Auth methodAPI token (query param) or OAuth 2.0 (Authorization header Bearer token)
Base URLOfficial docs
SCIM availableYes
SCIM plan requiredUltimate (formerly Enterprise); SSO must be configured first

Authentication

Auth method: API token (query param) or OAuth 2.0 (Authorization header Bearer token)

Setup steps

  1. API Token: Navigate to Pipedrive Settings → Personal Preferences → API. Copy the personal API token.
  2. API Token usage: Append ?api_token=YOUR_TOKEN to every request URL.
  3. OAuth 2.0: Register an app at https://developers.pipedrive.com/. Obtain client_id and client_secret.
  4. OAuth 2.0: Redirect user to https://oauth.pipedrive.com/oauth/authorize?client_id=...&redirect_uri=...&scope=....
  5. OAuth 2.0: Exchange the returned authorization code for an access token via POST to https://oauth.pipedrive.com/oauth/token.
  6. OAuth 2.0: Include Authorization: Bearer ACCESS_TOKEN header on all API requests.

Required scopes

Scope Description Required for
users:read Read user data including profile, role, and access settings. GET /users, GET /users/{id}
users:write Create and update users within the company account. POST /users, PUT /users/{id}
admin Full administrative access including user management operations. User deactivation, role assignment, permission set changes

User object / data model

Field Type Description On create On update Notes
id integer Unique numeric identifier for the user. auto-assigned immutable Used as path parameter in user-specific endpoints.
name string Full display name of the user. required optional
email string Primary email address; used for login and notifications. required optional Must be unique within the company account.
phone string Phone number of the user. optional optional
active_flag boolean Whether the user account is active (true) or deactivated (false). defaults to true optional Setting to false deactivates the user; they cannot log in but data is retained.
role_id integer ID of the role assigned to the user. optional optional Roles control CRM-level permissions. Retrieve available roles via GET /roles.
access array Array of access permission objects defining what the user can do. optional optional Each element contains app, admin, and permission_set_id fields.
default_currency string ISO 4217 currency code for the user's default currency. optional optional
locale string User's locale setting (e.g., en_US). optional optional
timezone_name string IANA timezone name (e.g., America/New_York). optional optional
timezone_offset string UTC offset string for the user's timezone. auto-derived read-only
created string (datetime) ISO 8601 timestamp of when the user was created. auto-assigned immutable
modified string (datetime) ISO 8601 timestamp of the last modification. auto-assigned auto-updated
signup_flow_variation string Internal field indicating signup flow variant. auto-assigned immutable Read-only.
has_created_company boolean Whether the user created the Pipedrive company account. auto-assigned immutable Read-only.
is_admin integer 1 if the user has admin privileges, 0 otherwise. optional optional Derived from access/role settings.
last_login string (datetime) Timestamp of the user's most recent login. null auto-updated Read-only.
icon_url string (URL) URL to the user's profile avatar image. auto-assigned read-only via this endpoint

Core endpoints

List all users

  • Method: GET
  • URL: https://api.pipedrive.com/v1/users
  • Watch out for: Returns all users in the company account. Requires admin-level token or OAuth scope. Inactive users are included; filter by active_flag client-side.

Request example

GET /v1/users?limit=100&start=0&api_token=TOKEN

Response example

{
  "success": true,
  "data": [{"id":1,"name":"Jane Doe","email":"jane@example.com","active_flag":true}],
  "additional_data": {"pagination":{"start":0,"limit":100,"more_items_in_collection":false}}
}

Get single user

  • Method: GET
  • URL: https://api.pipedrive.com/v1/users/{id}
  • Watch out for: Returns the authenticated user's own data if the token belongs to a non-admin; admins can retrieve any user by ID.

Request example

GET /v1/users/42?api_token=TOKEN

Response example

{
  "success": true,
  "data": {"id":42,"name":"John Smith","email":"john@example.com","active_flag":true,"role_id":3}
}

Get current user (me)

  • Method: GET
  • URL: https://api.pipedrive.com/v1/users/me
  • Watch out for: Useful for resolving the authenticated user's ID from an OAuth token without knowing the user ID in advance.

Request example

GET /v1/users/me?api_token=TOKEN

Response example

{
  "success": true,
  "data": {"id":1,"name":"Jane Doe","email":"jane@example.com","company_id":100}
}

Add user

  • Method: POST
  • URL: https://api.pipedrive.com/v1/users
  • Watch out for: Requires company admin privileges. The new user receives an invitation email automatically. You cannot set a password via API.

Request example

POST /v1/users
Content-Type: application/json
{
  "name": "Alice Brown",
  "email": "alice@example.com",
  "active_flag": true
}

Response example

{
  "success": true,
  "data": {"id":55,"name":"Alice Brown","email":"alice@example.com","active_flag":true}
}

Update user

  • Method: PUT
  • URL: https://api.pipedrive.com/v1/users/{id}
  • Watch out for: Setting active_flag to false deactivates the user. The endpoint uses PUT (full-style), but only supplied fields are changed in practice. Cannot deactivate the last admin.

Request example

PUT /v1/users/55
Content-Type: application/json
{
  "active_flag": false
}

Response example

{
  "success": true,
  "data": {"id":55,"name":"Alice Brown","active_flag":false}
}

Find users by name

  • Method: GET
  • URL: https://api.pipedrive.com/v1/users/find
  • Watch out for: Use search_by_email=1 to search by email address instead of name. Returns partial matches.

Request example

GET /v1/users/find?term=alice&search_by_email=1&api_token=TOKEN

Response example

{
  "success": true,
  "data": [{"id":55,"name":"Alice Brown","email":"alice@example.com"}]
}

List user role assignments

  • Method: GET
  • URL: https://api.pipedrive.com/v1/users/{id}/roleAssignments
  • Watch out for: Returns the role(s) assigned to the user. Role IDs must be resolved separately via GET /roles.

Request example

GET /v1/users/55/roleAssignments?api_token=TOKEN

Response example

{
  "success": true,
  "data": [{"id":10,"role_id":3,"user_id":55,"active_flag":true}]
}

List user permissions

  • Method: GET
  • URL: https://api.pipedrive.com/v1/users/{id}/permissions
  • Watch out for: Returns a flat map of permission flags. These are derived from the user's role and permission set; they cannot be set directly on this endpoint.

Request example

GET /v1/users/55/permissions?api_token=TOKEN

Response example

{
  "success": true,
  "data": {"can_add_products":true,"can_bulk_edit_items":false,"can_delete_activities":true}
}

Rate limits, pagination, and events

  • Rate limits: Pipedrive enforces per-second and per-day rate limits that vary by plan. Limits apply per company token or OAuth app.
  • Rate-limit headers: Yes
  • Retry-After header: No
  • Rate-limit notes: When rate limited, API returns HTTP 429. Response headers include X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, and X-Daily-Requests-Left. Pipedrive recommends exponential backoff on 429 responses.
  • Pagination method: offset
  • Default page size: 100
  • Max page size: 500
  • Pagination pointer: start (offset) and limit (page size); response includes additional_data.pagination object with next_start
Plan Limit Concurrent
Essential / Advanced 80 requests/2 seconds; 80,000 requests/day 0
Professional / Power 80 requests/2 seconds; 80,000 requests/day 0
Enterprise / Ultimate 80 requests/2 seconds; 80,000 requests/day (higher limits available on request) 0
  • Webhooks available: Yes
  • Webhook notes: Pipedrive supports webhooks for real-time event notifications. Webhooks can be configured via the UI (Settings → Webhooks) or via the Webhooks API endpoint. Each webhook targets a URL and fires on specified object/action combinations.
  • Alternative event strategy: Poll GET /v1/users with updated_since filter for change detection if webhooks are not available on lower-tier plans.
  • Webhook events: user.added, user.updated, user.deleted, person.added, person.updated, deal.added, deal.updated

SCIM API status

  • SCIM available: Yes

  • SCIM version: 2.0

  • Plan required: Ultimate (formerly Enterprise); SSO must be configured first

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

  • Supported operations: GET /Users – list users, GET /Users/{id} – get user, POST /Users – provision user, PUT /Users/{id} – replace user, PATCH /Users/{id} – update user attributes, DELETE /Users/{id} – deprovision user, GET /Groups – list groups (roles), GET /ServiceProviderConfig, GET /Schemas

Limitations:

  • Requires Ultimate plan with SAML SSO configured (Okta, Microsoft Entra ID supported).
  • SCIM token is separate from the REST API token; generated in Security settings.
  • Group provisioning maps to Pipedrive roles; not all role attributes are writable via SCIM.
  • Password management is not supported via SCIM (SSO handles authentication).
  • Deprovisioning sets active=false; it does not permanently delete the user or reassign their data automatically.

Common scenarios

Provisioning a new user requires a POST /v1/users call with name, email, and active_flag: true. The user receives an invitation email automatically - there is no way to suppress this or set a password via API.

Role assignment is a separate call: POST /v1/roles/{role_id}/assignments with the returned user_id. Omitting this step leaves the user without a role assignment.

Deactivating a departing employee requires resolving their numeric user ID first - use GET /v1/users/find?term=user@example.com&search_by_email=1. Then send PUT /v1/users/{id} with {"active_flag": false}. Deactivation does not automatically reassign owned deals, activities, or contacts; these must be explicitly reassigned via separate API calls to /deals, /activities, etc.

SCIM 2.0 is available at https://api.pipedrive.com/scim/v2 and supports full user provisioning and deprovisioning, including Okta and Microsoft Entra ID. It requires the Ultimate plan with SAML SSO active. The SCIM bearer token is generated separately in Security settings and is distinct from the REST API token. SCIM group push maps to Pipedrive roles by name - a mismatch between Okta group names and Pipedrive role names causes silent failures or unintended role creation.

Provision a new employee and assign a role

  1. POST /v1/users with name, email, active_flag=true to create the user (admin token required).
  2. Capture the returned user id from the response.
  3. GET /v1/roles to retrieve available role IDs.
  4. POST /v1/roles/{role_id}/assignments with {user_id: } to assign the appropriate role.
  5. Verify by calling GET /v1/users/{id}/roleAssignments.

Watch out for: The new user receives an invitation email automatically on POST /users. Role assignment is a separate API call; the user is created without a role if you omit this step.

Deactivate a departing employee

  1. GET /v1/users/find?term=user@example.com&search_by_email=1 to resolve the user's numeric ID.
  2. PUT /v1/users/{id} with body {"active_flag": false} to deactivate the account.
  3. Optionally reassign open deals: GET /v1/deals?user_id={id}&status=open, then PATCH each deal with a new user_id.
  4. Confirm deactivation: GET /v1/users/{id} and verify active_flag is false.

Watch out for: Deactivation does not automatically reassign owned deals, activities, or contacts. Data remains attributed to the deactivated user until explicitly reassigned.

Sync users via SCIM with Okta

  1. Confirm the Pipedrive account is on the Ultimate plan with SAML SSO enabled.
  2. In Pipedrive Security settings, generate a SCIM bearer token.
  3. In Okta, add the Pipedrive application from the Okta Integration Network.
  4. Configure SCIM provisioning in Okta: set SCIM connector base URL to https://api.pipedrive.com/scim/v2, authentication type Bearer Token, paste the SCIM token.
  5. Enable Okta provisioning features: Push New Users, Push Profile Updates, Deactivate Users.
  6. Assign users or groups in Okta to trigger provisioning to Pipedrive.

Watch out for: SCIM group push maps Okta groups to Pipedrive roles. If the role name in Pipedrive does not exactly match the Okta group name, group assignment will fail silently or create a new role.

Why building this yourself is a trap

The PUT /v1/users/{id} endpoint uses HTTP PUT but behaves as a partial update in practice - only supplied fields are modified. This is non-standard and can cause confusion when building integrations that assume PUT requires a full object payload.

Rate limits are enforced at 80 requests per 2 seconds and 80,000 requests per day across all plans. The X-RateLimit-Reset header returns a Unix timestamp, not a seconds-until-reset delta - a common misread that causes incorrect backoff timing. Pipedrive returns HTTP 429 on breach; implement exponential backoff.

Webhook delivery is not guaranteed. The user.added, user.updated, and user.deleted events are available, but idempotent handlers and periodic reconciliation via GET /v1/users polling are necessary for any provisioning workflow that requires correctness.

Pagination uses offset-based start and limit parameters with a default page size of 100 and a maximum of 500; the additional_data.pagination.next_start field drives iteration.

Automate Pipedrive 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 11, 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