# Tokens

## Generate tokens

<mark style="color:green;">`POST`</mark> `https://api.petje.af/v1/oauth2/tokens`

This endpoint allows you to exchange an `authorization_code` or `refresh_token` for a valid `access_token`\
\
**Use `application/x-www-form-urlencoded` for the POST request**

#### Request Body

| Name           | Type   | Description                                                                                                                                                                                     |
| -------------- | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| client\_id     | string | The client ID from your client app                                                                                                                                                              |
| client\_secret | string | The client secret key from your Client App                                                                                                                                                      |
| grant\_type    | string | If you wish to exchange your auth code for an access token, use grant type `authorization_code`. If you wish to renew your access token with your refresh token, use grant type `refresh token` |
| code           | string | The authorization code you've received when creating the authorization. This field is required when using gran type `authorization_code`                                                        |
| refresh\_token | string | The refresh token you've received when creating the authorization. This field is required when using grant type `refresh_token`                                                                 |

{% tabs %}
{% tab title="200 Tokens successfully retrieved. The access\_token is a JSON Web Token with the name, email and id after decoding." %}

```
{
    "access_token": "ACCESS TOKEN (JWT)",
    "token_type": "Bearer",
    "expires_in": 3599,
    "refresh_token": "REFRESH TOKEN",
    "scope": "memberships.read"
}
```

{% endtab %}

{% tab title="400 There was an error while creating your tokens" %}

```
{
    "status": 400,
    "title": "Bad Request",
    "detail": "Invalid grant: authorization code is invalid",
    "_links": {
        "documentation": {
            "href": "https://docs.petje.af",
            "type": "text/html"
        }
    }
}
```

{% endtab %}
{% endtabs %}
