Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit

Correctly package evernote by excluding any bundled thrift modules from
installation and use install_requires to depend on the (PyPI) package
instead. This prevents package/installation conflicts between other
Python packages that depend on thrift.

Git stats


Failed to load latest commit information.

Evernote SDK for Python

Evernote API version 1.28

This SDK is intended for use with Python 2.X

For Evernote's beta Python 3 SDK see


This SDK contains wrapper code used to call the Evernote Cloud API from Python.

The SDK also contains a sample script. The code demonstrates the basic use of the SDK for single-user scripts. Real web applications must use OAuth to authenticate to the Evernote service.


In order to use the code in this SDK, you need to obtain an API key from You'll also find full API documentation on that page.

In order to run the sample code, you need a user account on the sandbox service where you will do your development. Sign up for an account at

In order to run the client client sample code, you need a developer token. Get one at

Getting Started - Client

The code in sample/client/ demonstrates the basics of using the Evernote API, using developer tokens to simplify the authentication process while you're learning.

  1. Open sample/client/

  2. Scroll down and fill in your Evernote developer token.

  3. On the command line, run the following command to execute the script:

    $ export PYTHONPATH=../../lib; python

Getting Started - Django with OAuth

Web applications must use OAuth to authenticate to the Evernote service. The code in sample/django contains a simple web apps that demonstrate the OAuth authentication process. The application use the Django framework. You don't need to use Django for your application, but you'll need it to run the sample code.

  1. Install django, oauth2 and evernote library. You can also use requirements.txt for pip.

  2. Open the file oauth/

  3. Fill in your Evernote API consumer key and secret.

  4. On the command line, run the following command to start the sample app:

    $ python runserver
  5. Open the sample app in your browser: http://localhost:8000

Getting Started - Pyramid with OAuth

If you want to use Evernote API with Pyramid, the code in sample/pyramid will be good start.

  1. Install the sample project using pip on your command line like this.

    $ pip install -e .
  2. Open the file development.ini

  3. Fill in your Evernote API consumer key and secret.

  4. On the command line, run the following command to start the sample app:

    $ pserve development.ini
  5. Open the sample app in your browser: http://localhost:6543



client = EvernoteClient(
    consumer_key='YOUR CONSUMER KEY',
    consumer_secret='YOUR CONSUMER SECRET',
    sandbox=True # Default: True
request_token = client.get_request_token('YOUR CALLBACK URL')

To obtain the access token

access_token = client.get_access_token(
    request.GET.get('oauth_verifier', '')

Now you can make other API calls

client = EvernoteClient(token=access_token)
note_store = client.get_note_store()
notebooks = note_store.listNotebooks()


Once you acquire token, you can use UserStore. For example, if you want to call UserStore.getUser:

client = EvernoteClient(token=access_token)
user_store = client.get_user_store()

You can omit authenticationToken in the arguments of UserStore functions.


If you want to call NoteStore.listNotebooks:

note_store = client.get_note_store()

NoteStore for linked notebooks

If you want to get tags for linked notebooks:

linked_notebook = note_store.listLinkedNotebooks()[0]
shared_note_store = client.getSharedNoteStore(linked_notebook)
shared_notebook = shared_note_store.getSharedNotebookByAuth()

NoteStore for Business

If you want to get the list of notebooks in your business account:

business_note_store = client.get_business_note_store()


Known Issues

Regular expressions

In general, the "re" regex module doesn't handle some of our regular expressions in Limits, but re2 does.