> For the complete documentation index, see [llms.txt](https://docs.bravostudio.app/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.bravostudio.app/connect-api/browse-by-backend/xano/setting-up-the-xano-log-in-snippet/refresh-token.md).

# Refresh Token

The refresh token enables your app to automatically update your access token without requiring the user to log in again.&#x20;

This token securely requests a new access token from the authentication server when needed, keeping users logged in continuously.

To get started with this tutorial, we strongly advise having user authentication already configured and installing the Log in Snippet. If you haven't configured it yet, please refer to these guides:

{% content-ref url="/pages/p2CSlrruHANEOWOpU7Vz" %}
[Setting up the Xano Log in Snippet](/connect-api/browse-by-backend/xano/setting-up-the-xano-log-in-snippet.md)
{% endcontent-ref %}

{% content-ref url="/pages/Sv4cxwDosZQRrsbvH2Vb" %}
[Authentication with custom backend](/integrations/user-authentication/authentication-with-custom-backend.md)
{% endcontent-ref %}

### Design&#x20;

For this use case, we'd recommend following this Figma file design. Find how to set up a Log in and Sign in page [here](https://docs.bravostudio.app/integrations/user-authentication/authentication-with-custom-backend#1.-setting-up-the-ui).&#x20;

{% embed url="<https://www.figma.com/design/Q1FyAaJOIdrEbl2dVGNQSa/Xano-with-refresh?node-id=0-1&t=HhjinrxZ6nt6ftoz-0>" %}
Figma Sample: Authentication with Refresh Token
{% endembed %}

### API collection's setup

To start, your app should already have login, sign-up, and user information features set up with [custom backend authentication](/integrations/user-authentication/authentication-with-custom-backend.md).

Additionally, ensure the snippet is installed in your Xano backend. Locate the following endpoints:

* `generate_jwt_secret`: Use this function to generate a JWT secret and set it as the environment variable.
* `/auth/token`: This endpoint contains the refresh token.

1. Run the `generate_jwt_secret` endpoint in Xano to obtain a key.&#x20;
2. Save this key in your Xano workspace environment variables. Name it `refresh_token_secret` and enter the key in the value field.
3. Now, go to your Bravo Studio's API collection page and create a new `POST` request in Bravo named `Refresh token`.
4. Paste the `/auth/token` endpoint URL into the request URL field in Bravo.
5. Add the following JSON body to the newly created request:

   ```json
   {
     "refreshToken": "${refreshToken}"
   }
   ```
6. To add test values for the refresh token, follow these steps:
   * Go to your **Login request** and click **Send**. This should return an `accessToken` and a `refreshToken`.
   * Navigate to **Debug & Inspect response**, scroll to the response body, and copy the refresh token.&#x20;
   * Paste this token into the `refreshToken` Test Values.
7. Go to your app's Integrations, scroll to the Refresh Token field, and link the Refresh Token API request from the collection.
8. Specify your preferred token expiration time in seconds.
9. The endpoint should return a variable named `accessToken`. Ensure to update the variable name in the Output Variables of the API request.
10. Finally, click on the **Save** button.

{% embed url="<https://www.loom.com/share/81676ffef6394c7ea2fb1dca4ea09bb7>" %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.bravostudio.app/connect-api/browse-by-backend/xano/setting-up-the-xano-log-in-snippet/refresh-token.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
