## Send a request

To communicate with our API, you'll need to build HTTP requests. You can use the programming language of your choice to achieve this. We provide examples of scripts using [Python](https://www.python.org/)!

, but most of the content you'll work with will be in [JSON](https://en.wikipedia.org/wiki/JSON)!

## Get your API access token

To gain access to our API, you will need your **Client ID** and **Client Secret**. Instructions for getting these values can be found in [Use the API](https://docs.certn.co/api/guides/use-the-api). You should take special precautions to keep your client secret a secret. In the example below (using our demo environment `https://demo-api.certn.co`), we show you how you can use secrets stored in a `.env` file.

First, make a request to get your access token. This token will be required to make all other API requests. For this step, make a GET request to our `/token/` endpoint. If you're new to HTTP requests, visit [W3Schools](https://www.w3schools.com/tags/ref_httpmethods.asp)!

```python
import requests
from dotenv import dotenv_values

# An example of how to manage your Client ID and Client Secret, using a .env file
secrets = dotenv_values(".env")

client_id = secrets["CLIENT_ID"]
client_secret = secrets["CLIENT_SECRET"]

# add the
headers = {
    "Content-Type": "application/x-www-form-urlencoded"
}
body = {"grant_type": "client_credentials"}

# url to retrieve your access token
url = "https://demo-api.certn.co/token/"

# Send the HTTP request to the API via POST,
# including your Client ID and Client Secret for authentication
response = requests.post(
    url,
    headers=headers,
    auth=(client_id, client_secret),
    data=body
)

# retrieve the access token
access_token = response.data.get("access_token")
```

With everything set properly and a good internet connection, you should receive a `response.status_code` of `200 OK`. The `response.data` object should look something like:

**200 OK**

```
{
    "access_token": "string",
    "expires_in": 36000,
    ...
}
```

You'll need this access_token as a bearer token in headers for all requests to our API. Let's see how to use this to [Understand your general resources](https://docs.certn.co/api/start/demo-account/understand-your-general-resources).

## Errors

Please see [Get and use an Authorization Token](https://docs.certn.co/api/guides/use-the-api/authorization-header) and [Error codes](https://docs.certn.co/api/api-reference/resources/error-codes) for more details on types of errors, and how to resolve them.
