<iframe src="https://www.googletagmanager.com/ns.html?id=GTM-M74D8PB" height="0" width="0" style="display:none;visibility:hidden">
Loading
Skip to NavigationSkip to Main Content
0D5WR00002APVTR0A5Okta Identity EngineIdentity Threat ProtectionAnswered2026-09-22T18:48:49.000Z2026-09-22T16:58:50.000Z2026-09-22T18:48:49.000Z

EricK.85454 (Customer) asked a question.

403 insufficient_scope when updating user risk through Identity Threat Protection API

Hi Okta Community,

We are receiving a 403 Forbidden error when our automation attempts to update a user’s risk through the Okta Identity Threat Protection User Risk API.

The failing module is:

oktaitp.upsertUserRisk_******

The API response includes the following authentication header:

WWW-Authenticate: Bearer

authorization_uri="https://abcd-dev.okta-gov.com/oauth2/v1/authorize",

realm="https://abcd-dev.okta-gov.com",

scope="okta.userRisk.manage",

error="insufficient_scope",

error_description="The access token provided does not contain the required scopes.",

resource="/api/v1/users"

Other relevant details:

HTTP status: 403 Forbidden

Endpoint family: /api/v1/users

Error type: HTTP Request Error

Okta request ID: ********

Timestamp: Mon, 21 Sep 2026 16:45:42 GMT

We understand the request requires the okta.userRisk.manage OAuth scope. We are looking for confirmation of the complete required configuration for a service integration to perform user-risk updates:

  1. Must okta.userRisk.manage be granted to the OIDC/API service app and included in the token request?
  2. Is a particular admin role or custom role permission also required for the service app—for example, User Risk management permission or Super Admin?
  3. Are there any Identity Threat Protection feature, entitlement, or API-access prerequisites that must be enabled?
  4. After updating the app’s scopes/roles, is minting a new token sufficient, or are there additional steps needed for the integration?

We have not included tokens, client credentials, or user identifiers. Any guidance or a reference configuration for this API would be appreciated.

Thank you.


  • Paul S. (Okta, Inc.)

    Hello @EricK.85454 (Customer)​ Thank you for posting on our Community page!

     

    You are receiving a 403 Forbidden error with an insufficient_scope

    error when your service integration attempts to call the Okta Identity Threat Protection User Risk API to update user risk levels, and you need confirmation of the complete OAuth scope, role, and feature configuration required for this integration to succeed.

     

    The error indicates that your access token does not include the okta.userRisk.manage

    OAuth scope. Here is the complete configuration checklist:

     

    Solution:

    1. Confirm the okta.userRisk.manage scope is granted to your service app. Yes, the okta.userRisk.manage OAuth scope must be explicitly granted to your OIDC or API service application. This scope is required in the token request and must be present in the access token returned by the authorization server. Verify in your Okta Admin Console that the scope is listed under the app's API Scopes or OAuth 2.0 Scopes configuration. If you are using a custom authorization server, ensure the scope is also defined and granted there.
    2. Verify the service app has the required admin role or permission. In addition to the OAuth scope, the service app's associated service account or user must have an admin role that includes the User Risk management permission. This is typically granted through a role such as User Risk Administrator or a custom role with the Manage User Risk permission. Assign the appropriate role to the service app's user account in the Admin Console under Users or Service Accounts (depending on your Okta version).
    3. Confirm Identity Threat Protection is enabled and licensed. Identity Threat Protection must be enabled as a feature in your Okta organization, and your organization must have the appropriate license or entitlement. Verify in the Admin Console under Security → Identity Threat Protection that the feature is active. If it is not visible or enabled, contact your Okta account team to confirm your organization has the ITP entitlement.
    4. Mint a new access token after updating scopes and roles. After you grant the okta.userRisk.manage scope to the app and assign the required admin role, the changes take effect immediately. However, any existing access tokens will not be updated retroactively. You must request a new access token from the authorization endpoint using the client credentials flow (or the appropriate OAuth flow for your integration). The new token will include the okta.userRisk.manage scope and will be valid for calls to the User Risk API.

     

    Additional verification steps:

    • Confirm that your token request is explicitly requesting the okta.userRisk.manage scope in the scope parameter of the authorization request.
    • If you are using a custom authorization server, verify that the scope is included in the server's scope list and that the app is granted access to it.
    • Test the new token by making a simple GET request to /api/v1/users/{userId}/risk
    • first to confirm the scope is present before attempting an upsert operation.
    • If the 403 error persists after minting a new token, verify the Okta request ID in your logs and contact Okta Support with that ID to confirm there are no organization-level restrictions or feature flags affecting the User Risk API.

     

    We hope this resolves the issue.

     

    Thank you for reaching out to our Community and have a great day!

    --

    Help others in the community by liking or hitting Select as Best if this response helped you.

    Expand Post

Loading
403 insufficient_scope when updating user risk through Identity Threat Protection API