> ## Documentation Index
> Fetch the complete documentation index at: https://docs-staging.auth0-mintlify.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Refresh Access Token

> Refresh an Access Token using a Refresh Token obtained during authorization.

export const ResponseSchema = ({statusCode, type = "{}", children}) => {
  const [open, setOpen] = useState(false);
  return <div className="border border-gray-100 dark:border-gray-800 rounded-lg mb-3 overflow-hidden">
      <div className={`flex items-center gap-2.5 px-4 py-2.5 cursor-pointer select-none ${open ? "bg-gray-50 dark:bg-gray-800" : ""}`} onClick={() => setOpen(!open)}>
        {statusCode && <span className="border border-gray-300 dark:border-gray-600 text-gray-700 dark:text-gray-300 font-mono text-xs px-1.5 py-0.5 rounded">
            {statusCode.startsWith("default") ? "default" : statusCode}
          </span>}
        <span className="text-gray-500 dark:text-gray-400 text-sm font-mono">
          {type}
        </span>
        <span className="text-gray-400 dark:text-gray-500 text-sm italic">
          application/json
        </span>
        <svg className={`ml-auto opacity-50 transition-transform duration-200 ${open ? "rotate-180" : ""}`} width="16" height="16" viewBox="0 0 16 16" fill="none">
          <path d="M4 6l4 4 4-4" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round" />
        </svg>
      </div>
      {open && <div className="px-4 pt-1 pb-3 border-t border-gray-100 dark:border-gray-800">
          {children}
        </div>}
    </div>;
};

## Endpoint

`POST /oauth/token`

Use this endpoint to refresh an Access Token using the Refresh Token you got during authorization.

## Learn More

* [Refresh Tokens](https://auth0.com/docs/secure/tokens/refresh-tokens)

## Headers

<ParamField header="DPoP" type="string">
  A DPoP proof for the request. This is optional and only required if your application uses Demonstrating Proof-of-Possession.
</ParamField>

## Body Parameters

<div className="prose-sm prose-gray dark:prose-invert">
  <span data-as="p">The request body is in `application/x-www-form-urlencoded` format.</span>
</div>

<ParamField body="grant_type" type="string" required>
  Specifies the flow being used. For refreshing an access token, this must be set to `refresh_token`.

  Allowed values: `refresh_token`
</ParamField>

<ParamField body="client_id" type="string" required>
  The Client ID of your application, which identifies the application making the request.
</ParamField>

<ParamField body="client_secret" type="string">
  The Client Secret of your application. Required when the Token Endpoint Authentication Method is set to `Post` or `Basic`.
</ParamField>

<ParamField body="refresh_token" type="string" required>
  The refresh token that was previously issued to the client. This token is used to obtain a new access token.
</ParamField>

<ParamField body="scope" type="string">
  A space-delimited list of requested scope permissions. If omitted, the original scopes will be used; otherwise, you can request a reduced set of scopes. Note that this must be URL encoded.
</ParamField>

## Response Schema

<ResponseSchema>
  <ResponseField name="access_token" type="string">
    The newly issued access token.
  </ResponseField>

  <ResponseField name="refresh_token" type="string">
    The refresh token.
  </ResponseField>

  <ResponseField name="id_token" type="string">
    The ID token, if applicable.
  </ResponseField>

  <ResponseField name="token_type" type="string">
    The type of token. Usually `Bearer`.
  </ResponseField>

  <ResponseField name="expires_in" type="integer">
    The access token lifetime in seconds.
  </ResponseField>

  <ResponseField name="scope" type="string">
    Access token scopes.
  </ResponseField>
</ResponseSchema>

## Response Messages

| Status | Description                                                                       |
| ------ | --------------------------------------------------------------------------------- |
| 200    | Access token successfully refreshed.                                              |
| 400    | Bad Request. The request is missing required parameters or is malformed.          |
| 401    | Unauthorized. The client credentials are invalid or the refresh token is invalid. |
| 403    | Forbidden. The refresh token is invalid or has expired.                           |
