---
title: "Changes to OAuth token endpoint"
method: POST
path: "/oauth/2026-03/token"
---

# Changes to OAuth token endpoint

`POST /oauth/2026-03/token`

> Every recorded change to this operation, newest first.

## Timeline

Changed in 7 of 52 revisions.

- **2026-10-02** (2026-03) `4dd5ff826efe`: 2 info
- **2026-08-19** (2026-03) `8eb04f565f43`: 2 info
- **2026-06-15** (2026-03) `03dfd4737244`: 2 breaking, 7 warning, 1 info
- **2026-06-15** (2026-03) `33cdb28eb03d`: 1 breaking, 9 info
- **2026-05-22** (2026-03) `67126e6d75d4`: 9 info
- **2026-05-20** (2026-03) `ea1835acfb07`: 2 breaking, 19 info
- **2026-05-19** (2026-03) `a39c965bbf07`: 2 info

## Changes

- **2026-10-02** (2026-03) `4dd5ff826efe`: 2 info
  - added the new optional request property `assertion`
  - added the new `urn:ietf:params:oauth:grant-type:jwt-bearer` enum value to the request property `grant_type`
- **2026-08-19** (2026-03) `8eb04f565f43`: 2 info
  - added the new optional request property `client_assertion`
  - added the new optional request property `client_assertion_type`
- **2026-06-15** (2026-03) `03dfd4737244`: 2 breaking, 7 warning, 1 info
  - added `#/components/schemas/AccessTokenResponse, #/components/schemas/ClientCredentialsTokenResponse` to the response body `oneOf` list for the response status `200`
  - the response's body type changed from `object` to no type for status `200`
  - removed the optional property `accessToken` from the response with the `200` status
  - removed the optional property `expiresIn` from the response with the `200` status
  - removed the optional property `hubId` from the response with the `200` status
  - removed the optional property `idToken` from the response with the `200` status
  - removed the optional property `scopes` from the response with the `200` status
  - removed the optional property `tokenType` from the response with the `200` status
  - removed the optional property `userId` from the response with the `200` status
  - removed response discriminator for the response status `200`
- **2026-06-15** (2026-03) `33cdb28eb03d`: 1 breaking, 9 info
  - the response's body type changed from no type to `object` for status `200`
  - added response discriminator for the response status `200`
  - removed `#/components/schemas/AccessTokenResponse, #/components/schemas/ClientCredentialsTokenResponse` from the response body `oneOf` list for the response status `200`
  - added the optional property `accessToken` to the response with the `200` status
  - added the optional property `expiresIn` to the response with the `200` status
  - added the optional property `hubId` to the response with the `200` status
  - added the optional property `idToken` to the response with the `200` status
  - added the optional property `scopes` to the response with the `200` status
  - added the optional property `tokenType` to the response with the `200` status
  - added the optional property `userId` to the response with the `200` status
- **2026-05-22** (2026-03) `67126e6d75d4`: 9 info
  - the response property `oneOf[#/components/schemas/AccessTokenResponse]/access_token` became required for the status `200`
  - the response property `oneOf[#/components/schemas/AccessTokenResponse]/expires_in` became required for the status `200`
  - the response property `oneOf[#/components/schemas/AccessTokenResponse]/refresh_token` became required for the status `200`
  - the response property `oneOf[#/components/schemas/AccessTokenResponse]/token_type` became required for the status `200`
  - the response property `oneOf[#/components/schemas/AccessTokenResponse]/token_use` became required for the status `200`
  - the response property `oneOf[#/components/schemas/ClientCredentialsTokenResponse]/access_token` became required for the status `200`
  - the response property `oneOf[#/components/schemas/ClientCredentialsTokenResponse]/expires_in` became required for the status `200`
  - the response property `oneOf[#/components/schemas/ClientCredentialsTokenResponse]/token_type` became required for the status `200`
  - the response property `oneOf[#/components/schemas/ClientCredentialsTokenResponse]/token_use` became required for the status `200`
- **2026-05-20** (2026-03) `ea1835acfb07`: 2 breaking, 19 info
  - the `oneOf[#/components/schemas/AccessTokenResponse]/` response's property type changed from no type to `object` for status `200`
  - the `oneOf[#/components/schemas/ClientCredentialsTokenResponse]/` response's property type changed from no type to `object` for status `200`
  - added the optional property `oneOf[#/components/schemas/AccessTokenResponse]/access_token` to the response with the `200` status
  - added the optional property `oneOf[#/components/schemas/AccessTokenResponse]/expires_in` to the response with the `200` status
  - added the optional property `oneOf[#/components/schemas/AccessTokenResponse]/hub_id` to the response with the `200` status
  - added the optional property `oneOf[#/components/schemas/AccessTokenResponse]/id_token` to the response with the `200` status
  - added the optional property `oneOf[#/components/schemas/AccessTokenResponse]/refresh_token` to the response with the `200` status
  - added the optional property `oneOf[#/components/schemas/AccessTokenResponse]/scopes` to the response with the `200` status
  - added the optional property `oneOf[#/components/schemas/AccessTokenResponse]/token_type` to the response with the `200` status
  - added the optional property `oneOf[#/components/schemas/AccessTokenResponse]/token_use` to the response with the `200` status
  - added the optional property `oneOf[#/components/schemas/AccessTokenResponse]/user_id` to the response with the `200` status
  - added the optional property `oneOf[#/components/schemas/ClientCredentialsTokenResponse]/access_token` to the response with the `200` status
  - added the optional property `oneOf[#/components/schemas/ClientCredentialsTokenResponse]/expires_in` to the response with the `200` status
  - added the optional property `oneOf[#/components/schemas/ClientCredentialsTokenResponse]/hub_id` to the response with the `200` status
  - added the optional property `oneOf[#/components/schemas/ClientCredentialsTokenResponse]/id_token` to the response with the `200` status
  - added the optional property `oneOf[#/components/schemas/ClientCredentialsTokenResponse]/scopes` to the response with the `200` status
  - added the optional property `oneOf[#/components/schemas/ClientCredentialsTokenResponse]/token_type` to the response with the `200` status
  - added the optional property `oneOf[#/components/schemas/ClientCredentialsTokenResponse]/token_use` to the response with the `200` status
  - added the optional property `oneOf[#/components/schemas/ClientCredentialsTokenResponse]/user_id` to the response with the `200` status
  - removed `#/components/schemas/TokenResponseIF, subschema #2` from the `oneOf[#/components/schemas/AccessTokenResponse]/` response property `allOf` list for the response status `200`
  - removed `#/components/schemas/TokenResponseIF, subschema #2` from the `oneOf[#/components/schemas/ClientCredentialsTokenResponse]/` response property `allOf` list for the response status `200`
- **2026-05-19** (2026-03) `a39c965bbf07`: 2 info
  - added the new `client_credentials` enum value to the request property `grant_type`
  - added the success response with the status `200`

---

[Operation](https://skmtc.dev/hubspot/apis/auth-oauth/docs/oauth/2026-03/token/post.md) - [API](https://skmtc.dev/hubspot/apis/auth-oauth.md) - [Page](https://skmtc.dev/hubspot/apis/auth-oauth/changes/oauth/2026-03/token/post)
