The UP API offers OAuth 2.0 authentification, which requires user interaction to allow access of third-party services. kiefer aims to make this process as easy as possible.

Before you start, go to the Jawbone developer page and create an account and an app, if you haven’t done yet. Be sure to use an HTTPS Redirect URI.

Getting the access token

Before we can start with the authentication process, we need to create a JSON config file. This config needs values for the following keys:

  • client_id
  • client_secret
  • redirect_uri
  • scope

You can copy the client_id and client_secret from your app page. For a list of available scopes have a look at Jawbone’s authentication docs.


You can find a config file template here.

After creating the config we can start authentication:

from kiefer.auth import KieferAuth

auth = KieferAuth('PATH_TO_CONFIG_FILE')
access_token, refresh_token = auth.get_access_token()

When calling the get_access_token() method, you will be prompted to visit an authorization url. After permitting access copy-paste the full redirect URL into the command line prompt and you’re done.

Your access token and a refresh token are returned. The refresh token is needed to issue a new access token to you, when it expires.

Refreshing the access token

Currently, UP API access tokens are valid for 1 year. After that time, the token expires and you need to get a new one using your refresh token.

If you have a valid access token and forgot your refresh token, you can retrieve it using:

refresh_token = auth.get_refresh_token()

After your access token is expired you can issue a new one like that:

access_token, refresh_token = auth.refresh_access_token()


The KieferAuth object needs to have a valid refresh token set. You can either put the refresh token in your config (see Storing tokens) or you can set the it using the set_refresh_token() method.

Existing access token

If you already have a valid access token, you can skip the whole authentication process and use the Client directly.

Storing tokens

Although there is no option to save the access token and refresh token yet, you can put them in your config file and KieferAuth will recognize them during initialization:

from kiefer.auth import KieferAuth

auth = KieferAuth('PATH_TO_CONFIG_FILE')
access_token = auth.access_token
refresh_token = auth.refresh_token