openapi: 3.0.1 info: title: HubSpot Settings User Provisioning description: Basepom for all HubSpot Projects version: 2026-03 x-hubspot-product-tier-requirements: marketing: FREE sales: FREE service: FREE cms: FREE commerce: FREE crmHub: FREE dataHub: FREE x-hubspot-api-use-case: You manage employee access data in a system outside of HubSpot, and you want to ensure that specific users are dynamically allocated to the right teams in your HubSpot account. x-hubspot-introduction: Use the user provisioning API to create and manage users in your HubSpot account, along with their associated teams and roles. servers: - url: https://api.hubapi.com tags: - name: Basic - name: Roles - name: Teams - name: Users paths: /settings/users/2026-03: get: tags: - Basic operationId: get-/settings/users/2026-03_/settings/users/v3 parameters: - name: after in: query required: false style: form explode: true schema: type: string - name: limit in: query required: false style: form explode: true schema: type: integer format: int32 responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/CollectionResponsePublicUserForwardPaging' default: description: '' $ref: '#/components/responses/Error' security: - oauth2: - settings.users.read - oauth2: - crm.objects.users.read post: tags: - Basic operationId: post-/settings/users/2026-03_/settings/users/v3 parameters: [] requestBody: content: application/json: schema: $ref: '#/components/schemas/UserProvisionRequestMarch2026' required: true responses: '201': description: successful operation headers: Location: description: URL of the newly created resource style: simple explode: false schema: type: string content: application/json: schema: $ref: '#/components/schemas/PublicUser' default: description: '' $ref: '#/components/responses/Error' security: - oauth2: - crm.objects.users.write - oauth2: - settings.users.write /settings/users/2026-03/roles: get: tags: - Roles summary: Retrieves the roles on an account description: Retrieves the roles on an account operationId: get-/settings/users/2026-03/roles_getAll parameters: [] responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/CollectionResponsePublicPermissionSetNoPaging' default: description: '' $ref: '#/components/responses/Error' security: - oauth2: - settings.users.read - oauth2: - crm.objects.users.read /settings/users/2026-03/teams: get: tags: - Teams summary: See details about this account's teams description: View teams for this account operationId: get-/settings/users/2026-03/teams_getAll parameters: [] responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/CollectionResponsePublicTeamNoPaging' default: description: '' $ref: '#/components/responses/Error' security: - oauth2: - settings.users.teams.read /settings/users/2026-03/{userId}: get: tags: - Users summary: Retrieves a user description: Retrieves a user identified by `userId`. `userId` refers to the user's ID by default, or optionally email as specified by the `IdProperty` query param. operationId: get-/settings/users/2026-03/{userId}_getById parameters: - name: userId in: path description: '' required: true style: simple explode: false schema: type: string - name: idProperty in: query description: '' required: false style: form explode: true schema: type: string enum: - EMAIL - USER_ID responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/PublicUserMarch2026' default: description: '' $ref: '#/components/responses/Error' security: - oauth2: - settings.users.read - oauth2: - crm.objects.users.read put: tags: - Users summary: Modifies a user description: Modifies a user identified by `userId`. `userId` refers to the user's ID by default, or optionally email as specified by the `IdProperty` query param. operationId: put-/settings/users/2026-03/{userId}_update parameters: - name: userId in: path description: '' required: true style: simple explode: false schema: type: string - name: idProperty in: query description: '' required: false style: form explode: true schema: type: string enum: - EMAIL - USER_ID requestBody: content: application/json: schema: $ref: '#/components/schemas/PublicUserUpdateMarch2026' required: true responses: '200': description: successful operation content: application/json: schema: $ref: '#/components/schemas/PublicUserMarch2026' default: description: '' $ref: '#/components/responses/Error' security: - oauth2: - crm.objects.users.write - oauth2: - settings.users.write delete: tags: - Users summary: Removes a user description: Removes a user identified by `userId`. `userId` refers to the user's ID by default, or optionally email as specified by the `IdProperty` query param. operationId: delete-/settings/users/2026-03/{userId}_archive parameters: - name: userId in: path description: '' required: true style: simple explode: false schema: type: string - name: idProperty in: query description: '' required: false style: form explode: true schema: type: string enum: - EMAIL - USER_ID responses: '204': description: No content content: {} default: description: '' $ref: '#/components/responses/Error' security: - oauth2: - crm.objects.users.write - oauth2: - settings.users.write components: schemas: CollectionResponsePublicPermissionSetNoPaging: required: - results type: object properties: results: type: array items: $ref: '#/components/schemas/PublicPermissionSet' CollectionResponsePublicTeamNoPaging: required: - results type: object properties: results: type: array items: $ref: '#/components/schemas/PublicTeam' CollectionResponsePublicUserForwardPaging: required: - results type: object properties: paging: $ref: '#/components/schemas/ForwardPaging' results: type: array items: $ref: '#/components/schemas/PublicUser' Error: required: - category - correlationId - message type: object properties: category: type: string description: The error category context: type: object additionalProperties: type: array items: type: string description: Context about the error condition example: '{invalidPropertyName=[propertyValue], missingScopes=[scope1, scope2]}' correlationId: type: string description: A unique identifier for the request. Include this value with any error reports or support tickets format: uuid example: aeb5f871-7f07-4993-9211-075dc63e7cbf errors: type: array description: further information about the error items: $ref: '#/components/schemas/ErrorDetail' links: type: object additionalProperties: type: string description: A map of link names to associated URIs containing documentation about the error or recommended remediation steps message: type: string description: A human readable message describing the error along with remediation steps where appropriate example: An error occurred subCategory: type: string description: A specific category that contains more specific detail about the error description: Represents an error response returned by the API when an operation fails. This component is used in various endpoints to provide detailed information about the error encountered. example: message: Invalid input (details will vary based on the error) correlationId: aeb5f871-7f07-4993-9211-075dc63e7cbf category: VALIDATION_ERROR links: knowledge-base: https://www.hubspot.com/products/service/knowledge-base ErrorDetail: required: - message type: object properties: code: type: string description: The status code associated with the error detail context: type: object additionalProperties: type: array items: type: string description: Context about the error condition example: '{missingScopes=[scope1, scope2]}' in: type: string description: The name of the field or parameter in which the error was found. message: type: string description: A human readable message describing the error along with remediation steps where appropriate subCategory: type: string description: A specific category that contains more specific detail about the error description: Represents detailed information about an error that occurred in the API. This component is used to provide additional context and specifics about errors, typically as part of an error response. ForwardPaging: type: object properties: next: $ref: '#/components/schemas/NextPage' description: Paging information for forward-only pagination. Contains the next page reference when more results are available; omitted or empty on the last page. NextPage: required: - after type: object properties: after: type: string description: A paging cursor token for retrieving subsequent pages. link: type: string description: A URL that can be used to retrieve the next page results. description: Specifies the paging information needed to retrieve the next set of results in a paginated API response PublicPermissionSet: required: - id - name - requiresBillingWrite type: object properties: id: type: string description: The role's unique ID name: type: string description: The role's name requiresBillingWrite: type: boolean description: Whether this role has a paid seat and requires the billing-write scope to assign/unassign to users PublicTeam: required: - id - name - secondaryUserIds - userIds type: object properties: id: type: string description: The team's unique ID name: type: string description: The team's name secondaryUserIds: type: array description: Secondary or additional members of this team items: type: string userIds: type: array description: Primary members of this team items: type: string PublicUser: required: - email - id - roleIds - superAdmin type: object properties: email: type: string description: The user's email. firstName: type: string description: The user's first name. id: type: string description: The user's unique ID. lastName: type: string description: The user's last name. primaryTeamId: type: string description: The user's primary team roleId: type: string description: The user's role. roleIds: type: array description: A list of role IDs assigned to the user. items: type: string seatNames: type: array items: type: string secondaryTeamIds: type: array description: The user's additional teams. items: type: string sendWelcomeEmail: type: boolean description: Whether a welcome email was sent to the user. This value will only be populated in response to a provisioning request. Subsequent queries will be false. superAdmin: type: boolean description: Whether the user has super admin privileges. PublicUserMarch2026: required: - email - id - roleIds - superAdmin type: object properties: email: type: string firstName: type: string id: type: string lastName: type: string primaryTeamId: type: string roleId: type: string roleIds: type: array items: type: string secondaryTeamIds: type: array items: type: string sendWelcomeEmail: type: boolean superAdmin: type: boolean PublicUserUpdateMarch2026: type: object properties: firstName: type: string lastName: type: string primaryTeamId: type: string roleId: type: string secondaryTeamIds: type: array items: type: string UserProvisionRequestMarch2026: required: - email - sendWelcomeEmail type: object properties: email: type: string firstName: type: string lastName: type: string primaryTeamId: type: string roleId: type: string secondaryTeamIds: type: array items: type: string sendWelcomeEmail: type: boolean responses: Error: description: An error occurred. content: '*/*': schema: $ref: '#/components/schemas/Error' securitySchemes: developer_hapikey: type: apiKey name: hapikey in: query oauth2: type: oauth2 flows: authorizationCode: authorizationUrl: https://app.hubspot.com/oauth/authorize tokenUrl: https://api.hubapi.com/oauth/v1/token scopes: crm.objects.users.write: '' settings.users.read: '' settings.users.teams.read: '' private_apps: type: apiKey name: private-app in: header private_apps_legacy: type: apiKey name: private-app-legacy in: header x-hubspot-available-client-libraries: - Node - Python - Ruby - PHP x-hubspot-product-tier-requirements: marketing: FREE sales: FREE service: FREE cms: FREE commerce: FREE crmHub: FREE dataHub: FREE