# Authentication

The APIs described in this documentation utilize OAuth2 authentication. This means that all requests must include an access token, which is obtained through an authentication request using your Client ID and Client Secret.

## Retrieving Access token

To begin the backend integration process, you must first obtain an **access token**. This requires your **Client ID** and **Client Secret**, which are provided via email when you register for the Merchant Portal. If you have not received these credentials, please contact Getnet support for assistance.  

Please note that each access token is valid for **60 minutes**. It is recommended to implement a mechanism that automatically retrieves a new token before the current one expires to ensure uninterrupted access to the APIs.

To consume the APIs use the following DNS values for the `host_getnet_api` key:

* [**https://api.globalgetnet.com**](https://api.globalgetnet.com) (production environment)

**Request example with Curl**

```json
curl --location '{{host_getnet_api}}/authentication/oauth2/access_token' 
--header 'Content-Type: application/x-www-form-urlencoded' 
--header 'Accept: application/json' 
--data-urlencode 'grant_type=client_credentials' 
--data-urlencode 'client_id={{PUT_YOUR_CLIENT_ID_HERE}}' 
--data-urlencode 'client_secret={{PUT_YOUR_CLIENT_SECRET_HERE}}'
```

**Response**

```json
{
    "access_token": "eyJ0eXAiOiJKV1QiLCJraWQiOiI1amhLMy9xK0ZpK0tTRkIrRUwwN3VhMFYwdGM9Ii...",
    "scope": "name-scope:r",
    "token_type": "Bearer",
    "expires_in": 3599
}
```

**Request with Node.js with Axios example**

```json
const axios = require('axios');
const qs = require('qs');
let data = qs.stringify({
  'grant_type': 'client_credentials',
  'client_id': '{{client_id}}',
  'client_secret': '{{client_secret}}' 
});

let config = {
  method: 'post',
  maxBodyLength: Infinity,
  url: '{{host_getnet_api}}/authentication/oauth2/access_token',
  headers: { 
    'Content-Type': 'application/x-www-form-urlencoded', 
    'Accept': 'application/json'
  },
  data : data
};

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

**Request with PHP example**

```json
<?php
$client = new Client();
$headers = [
  'Content-Type' => 'application/x-www-form-urlencoded',
  'Accept' => 'application/json'
];
$options = [
'form_params' => [
  'grant_type' => 'client_credentials',
  'client_id' => '{{client_id}}',
  'client_secret' => '{{client_secret}}'
]];
$request = new Request('POST', '{{host_getnet_api}}/authentication/oauth2/access_token', $headers);
$res = $client->sendAsync($request, $options)->wait();
echo $res->getBody();
```

### Next Steps

Now that you have completed the authentication process, proceed to the next steps:

* [How to configure a payment link](/en/payment-link-api/first-step-plk/configure-link-plk)
* [Supported Payment Methods](/en/payment-link-api/first-step-plk/suported-payments-methods-plk)