---
title: "Refresh an access token"
description: "Regenerates a Call AI access token from a refresh token, without creating a new authorization code."
contentType: "api-reference"
url: "https://developer.mindtickle.com/docs/call-ai/authentication/refresh-an-access-token/"
---

## Prerequisites

1. [Authentication](/docs/call-ai/authentication/): Client credentials and the authentication base URL from Mindtickle Support.
2. [Generate an access token](/docs/call-ai/authentication/generate-an-access-token/): The refresh token returned with the access token.

## Endpoint

```http
POST /token
```

Base URL: the authentication base URL Mindtickle Support provides for issuing tokens.

Headers: `Content-Type: application/json`.

## Request

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `client_id` | string | Not specified | Your unique client identifier. |
| `client_secret` | string | Not specified | Your client secret. |
| `grant_type` | string | Required | Must be set to `refresh_token` for this step. |
| `refresh_token` | string | Required | The refresh token returned when the access token was generated. |

### Request example

```json
{
  "client_id": "CLIENT_ID",
  "client_secret": "CLIENT_SECRET",
  "grant_type": "refresh_token",
  "refresh_token": "REFRESH_TOKEN"
}
```

## Response

| Field | Type | Description |
| --- | --- | --- |
| `status` | number | Status code in the response body. Check the HTTP status separately. |
| `access_token` | string | The bearer token to send with Call AI requests. |
| `refresh_token` | string | The token used to regenerate an access token. |
| `token_type` | string | The token type, `Bearer`. |
| `expires_in` | Not specified | Time until the access token expires. Confirm the value type and unit with [Mindtickle Support](mailto:support@mindtickle.com) before using this field to schedule token renewal. |

### Response example

Token values and `EXPIRES_IN` are placeholders. Do not infer the type or unit of `expires_in` from this example.

```json
{
  "status": 200,
  "access_token": "ACCESS_TOKEN",
  "refresh_token": "REFRESH_TOKEN",
  "token_type": "Bearer",
  "expires_in": "EXPIRES_IN"
}
```

## Notes

- **Limits:** The new `access_token` is valid for 1 day. You can repeat this call indefinitely while your refresh token is valid.
- **Expiration behavior:** If the `refresh_token` itself expires, the call returns a 401 `Refresh token expired` error. Restart the flow from [Get an authorization code](/docs/call-ai/authentication/get-an-authorization-code/).

## Related

- [Get an authorization code](/docs/call-ai/authentication/get-an-authorization-code/): Restart the flow when the refresh token expires.
- [Validate a token](/docs/call-ai/authentication/validate-a-token/): Check the user and client details tied to the token.
