# Get New Access Token Using Existing Refresh Token

Endpoint Name: `getaccesstokenfromrefreshtoken`

Request type : `POST`

Authorization : Bearer Token as header

<mark style="color:red;">Note: Please call this endpoint at certain interval before the token expiration time, 10 mins will be an appropriate amount of  time as per our implementation. An expired access token can give 401 unauthorized error.</mark>

Endpoint Details: The `getaccesstokenfromrefreshtoken` endpoint will be used to get access token from refresh token.

<table data-header-hidden><thead><tr><th width="116"></th><th></th></tr></thead><tbody><tr><td>Method</td><td>URL</td></tr><tr><td>POST</td><td><code>URL/access/klearstack/getaccesstokenfromrefreshtoken</code></td></tr></tbody></table>

<table data-header-hidden><thead><tr><th width="175.54547119140625"></th><th width="96.45452880859375"></th><th width="103.18182373046875"></th><th></th></tr></thead><tbody><tr><td>Parameters</td><td>Values</td><td>Required </td><td>Description</td></tr><tr><td>refresh_token</td><td>string</td><td>Yes</td><td>Refresh token must be passed in request body to get new access token.</td></tr><tr><td>company_name</td><td>string</td><td>Yes</td><td>Name of the company for which the user is logging in.</td></tr></tbody></table>

## Request Code samples

### Shell

* Request Body

```sh
curl --location "URL/access/klearstack/getaccesstokenfromrefreshtoken" \
  --header "Authorization: Bearer YOUR_EXISTING_ACCESS_TOKEN" \
  --form "refresh_token=Replace_Refresh_Token_Here" \
  --form "company_name=Replace_Company_Name_Here"
```

### Python

* Request Body

```python
import requests

url = "URL/access/klearstack/getaccesstokenfromrefreshtoken"

payload = {'refresh_token': 'Replace_Refresh_Token_Here',
'company_name': 'Replace_Company_Name_Here'}
files=[

]
headers = {
  'Authorization': 'Bearer YOUR_EXISTING_ACCESS_TOKEN'
}

response = requests.request("POST", url, headers=headers, data=payload, files=files)

print(response.text)
```

### Java (OkHttp)

* Request Body

```java
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = new MultipartBody.Builder().setType(MultipartBody.FORM)
  .addFormDataPart("refresh_token","Replace_Refresh_Token_Here")
  .addFormDataPart("company_name","Replace_Company_Name_Here")
  .build();
Request request = new Request.Builder()
  .url("URL/access/klearstack/getaccesstokenfromrefreshtoken")
  .method("POST", body)
  .addHeader("Authorization", "Bearer YOUR_EXISTING_ACCESS_TOKEN")
  .build();
Response response = client.newCall(request).execute();
```

### Node.js (Axios)

* Request Body

```javascript
const axios = require('axios');
const FormData = require('form-data');
let data = new FormData();
data.append('refresh_token', 'Replace_Refresh_Token_Here');
data.append('company_name', 'Replace_Company_Name_Here');

let config = {
  method: 'post',
  maxBodyLength: Infinity,
  url: 'URL/access/klearstack/getaccesstokenfromrefreshtoken',
  headers: { 
    'Authorization': 'Bearer YOUR_EXISTING_ACCESS_TOKEN', 
    ...data.getHeaders()
  },
  data : data
};

axios.request(config)
.then((response) => {
  console.log(JSON.stringify(response.data));
})
.catch((error) => {
  console.log(error);
});
```

### JavaScript (XHR)

* Request Body

```javascript
// WARNING: For POST requests, body is set to null by browsers.
var data = new FormData();
data.append("refresh_token", "Replace_Refresh_Token_Here");
data.append("company_name", "Replace_Company_Name_Here");

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function() {
  if(this.readyState === 4) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "URL/access/klearstack/getaccesstokenfromrefreshtoken");
xhr.setRequestHeader("Authorization", "Bearer YOUR_EXISTING_ACCESS_TOKEN");

xhr.send(data);
```

### API Response

<table data-header-hidden><thead><tr><th width="138"></th><th></th></tr></thead><tbody><tr><td>Status code</td><td>Example Response</td></tr><tr><td>200</td><td><p><code>{</code></p><p><code>"access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0b2tlbl90eXBlIjoiYWNjZXNzIiwiZXhwIjoxNjU2NTc2MDM4LCJpYTY1NzU5MTgsImp0aSI6IjQwMWZlYmJhODg4NDQ1MmRhN2Q3ZTA5ZjEwZmYwOWFkIiwidXNlcl9pZCI6MjZ9.sjU6iVbRRp7dTDt-l4rj7K7tKpPpaL7yskjstAUn2Zs",</code></p><p><code>"release_version": “7.8.9”</code></p><p><code>}</code></p></td></tr><tr><td>500</td><td>One or Many Required parameters from company name must be missing, E.g error “refresh_token”,</td></tr></tbody></table>
