---
title: REST API Quick Start Example
slug: rm/rest-api-quick-start-example
docTags: 
createdAt: 2026-06-09T13:38:46.039Z
---

In this tutorial, we're going to walk through some sample code that shows you how to authenticate using the API. This example will demonstrate how you can request a token and then submit a request to obtain a list of Blueprint projects.

# Request a Token

We'll start by obtaining a token by submitting an [REST API - Authenticate Request](docId\:xFWH5-PdillyWazkMg3z1) request.

The authentication request must be sent to `http://today/authentication/v1/login` using the GET method. The request header must contain an Authorization header in the following format:

```ruby
Authorization: Basic <EncodedCredentials>
```

... where \<EncodedCredentials> is the Base 64 encoded string for the credentials in the following format:

```ruby
<username>:<password>
```

:::hint{type="info"}
**Example**
If the username is **jsmith** and the password is **Pa55w0rd**, you must calculate the Base 64 encoded string for:

jsmith\:Pa55w0rd

The Base 64 encoded string is **anNtaXRoOlBhNTV3MHJk**, and therefore the authorization header looks like this:

Authorization: Basic anNtaXRoOlBhNTV3MHJk
:::

If your credentials are correct, the response contains the access token that you can use to submit API requests. If the `Authorization` header is not formatted correctly or if your credentials are incorrect, the service returns a `401 Unauthorized call` error.

You can obtain the token expiry by viewing the header of the Authenticate response. The token expiry is stored in the `blueprinttokenexpirydate` parameter of the Authenticate response header.

## Python Example

The following code demonstrates how you can obtain an access token using Python:

```python
def get_token():
# Of course, we wouldn't normally hardcode credentials
username = "api_docs_user"
password = "Pa55w0rd"

# concatenate the username and password with : as required by rfc2617
auth_string = username + ':' + password
# encode in utf-8 and perform base64 encoding
auth_byte = auth_string.encode('utf-8')
auth_encode = base64.b64encode(auth_byte)
# decode in utf-8 string for the header
auth = auth_encode.decode('utf-8')

request_uri = 'https://production.blueprintcloud.com/authentication/v1/login'
request_header={
        'Authorization' : 'Basic ' + auth,
        'Accept' : 'application/json'
}

# make the request using GET
response = requests.get(request_uri, headers=request_header)
token = response.json()
return token
```

# Submit Request

With a request token in hand, you can now submit a request (example: [REST API - List Projects Request](docId\:a1jUPmRIhXM4wzBhP7IvP)) to obtain data from Blueprint. You must include your access token in the `Authorization` header of every request.

The authorization header must look like this:

```ruby
Authorization: BlueprintToken <TokenValue>
```

...where \<TokenValue> is the token obtained from the authentication call.

:::hint{type="info"}
**Example**

Authorization: BlueprintToken 3L7b+nMqXlpE/dBptnomyZiZpZc\[...Truncated...]a6cpdsCS+uWMIB5fODHItoo0fCiwP
:::

## Python Example

The following code demonstrates how you can obtain a list of Blueprint projects using Python:

```python
def list_projects():
# obtain a token from our get_token() function
token = get_token()

# build the resource URI
resource_uri = 'https://production.blueprintcloud.com/api/v1/projects'

# build the request header
request_header={
        'Authorization' : 'BlueprintToken ' + token,
        'Accept' : 'application/json'
}

# specify the URI parameters
uri_parameters_list={
        'Location' : 'True'
}

# create the request uri
request_uri = resource_uri + '?' + urllib.parse.urlencode(uri_parameters_list)
output_requesturi(request_uri)

# submit the request using HTTP GET method
response = requests.get(request_uri, headers=request_header)
return response
```

# Parse the Result

After you receive a response, you will need to parse the XML or JSON data. For example, if you requested a list of projects, you will probably want to store the project data in a python list.
