--- title: Create an OAuth JWT API endpoint for external clients \(machine to machine integration\) description: OAuth JWT bearer token enables the client web applications to authenticate with your instance seamlessly using the inbound JWT grant type instead of requiring the end user to manually log in or share the password. locale: en-US canonical_url: https://www.servicenow.com/docs/r/australia/platform-security/authentication/create-jwt-endpoint.html release: australia product: Authentication classification: authentication topic_type: task last_updated: "2026-03-12" reading_time_minutes: 5 breadcrumb: [Old Inbound integrations experience, OAuth Inbound, OAuth authentication, Authentication, Access Management] --- # Create an OAuth JWT API endpoint for external clients \(machine to machine integration\) OAuth JWT bearer token enables the client web applications to authenticate with your instance seamlessly using the inbound JWT grant type instead of requiring the end user to manually log in or share the password. ## Before you begin The supported algorithms for JSON Web Token \(JWT\): RS256, RS384, RS512, ES256, ES384, ES512. Generate a JWT with the following claims at the client side: - `aud`: Must match the value of the Client ID. - `sub`: Must be a user identifier, such as the user's mail that you want to associate the token with. - `iss`: Recommended matching the value of the Client ID. If the `aud` and `iss` isn’t matching, then add the `iss` value in the claim validation. - `exp`: Any desired expiration. \[Omitted image "example-jwt.png"\] Alt text: Example decoded JSON Web Token ## Configuration in ServiceNow ## About this task Since using the JWT grant type doesn’t include the password in the request, it enables a greater security between web services. For example, you can develop an external application and use tokens to authenticate inbound requests to your ServiceNow instance. Role required: oauth\_admin For more information about JSON Web Tokens, see [https://jwt.io/](https://jwt.io/). ## Procedure 1. Add the public key of the client app to the **sys\_certificate** table. 2. Set up the configuration in your ServiceNow instance to verify the incoming JWT. 1. Navigate to **System OAuth** > **Application Registry**. 2. Select **Create an OAuth JWT API endpoint for external clients**. 3. Complete the form with information about your token.
| Field | Description |
|---|---|
| Name | A unique name that identifies the application that you require JWT OAuth access for. |
| Client ID | The auto-generated unique ID of the application. The system uses the value of this field to retrieve the public or shared key and validate the JWT. The value of this field should match the value of the issuer and audience claims in the JWT. |
| Client Secret | The shared secret string that both the instance and the client application or website use to authorize communications with one another. Leave this field empty to have the instance auto-generate a client secret. To display existing client secrets, select the lock icon.**Note:** If **Public Client** is selected, you can omit the **Client Secret**. |
| User Field | Field in the User \(sys\_user\) table that the system uses to match the value of the subject claim in the JWT. For example, if you add a token that has a subject claim value of user.name@example.com, then you would set the **User Field** to **Email**. This field tells the system to search the email field for the user.name@example.com value and use the matching user record in the inbound request. |
| Enable JTI Verification | Select to require a new token every token exchange. Default: Selected. |
| Application | Read-only application scope. This field is auto-populated. |
| Accessible from | Cross-scope access policy. For more information, see [Application access settings](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/application-development/c_ApplicationAccessSettings.md). |
| Access Token Lifespan | Amount of time that the token is valid. Unit: Seconds |
| Token Format | Format of the token to generate. The format determines the structure of a token and the information it includes. |
| Subject Claim | Field in the User \(sys\_user\) table that's used to populate the value of the subject \(sub\) claim of a JWT token. The sub claim is a piece of information that identifies the subject, or user, of the JWT token. This field only applies if the **Token Format** is JWT. |
| Clock Skew | Allowed time difference between the server and client clocks when validating the `exp` and `nbf` claims in the JWT.Unit: Seconds Default: 300 |
| Enforce Token Restrictions | Select to only enable tokens to be used with APIs set to enable the authentication profile. You can set grant access using an API access policy. For more information, see [Create REST API access policy](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/platform-security/authentication/create-api-access-policy.md).Default: Unselected. |
| Comments | Additional information to associate with the application. |
| Public Client | Add this field to the form if the JWT client is public. When selected, you don’t need to include a **Client Secret**.Default: Unselected. |
| Client Type | Choose the client type, based on the type of your client. Options:- **iframe Embedded** - **Integration as a User** - **Integration as a Service** To know more, see [Configure client type for OAuth and SSO records](https://raw.githubusercontent.com/ServiceNow/ServiceNowDocs/australia/markdown/australia/platform-security/authentication/client-type.md). |