Fork me on GitHub Starting Out — Twython 3.8.0 documentation

Starting Out

This section is going to help you understand creating a Twitter Application, authenticating a user, and making basic API calls


First, you’ll want to head over to and register an application!

After you register, grab your applications Consumer Key and Consumer Secret from the application details tab.

Now you’re ready to start authentication!


Twython offers support for both OAuth 1 and OAuth 2 authentication.

The difference:

  • OAuth 1 is for user authenticated calls (tweeting, following people, sending DMs, etc.)
  • OAuth 2 is for application authenticated calls (when you don’t want to authenticate a user and make read-only calls to Twitter, i.e. searching, reading a public users timeline)

OAuth 1 (User Authentication)


Again, if your web app is planning on using interacting with users, this IS the authentication type for you. If you’re not interested in authenticating a user and plan on making read-only calls, check out the OAuth 2 section.

First, you’ll want to import Twython

from twython import Twython

Now, you’ll want to create a Twython instance with your Consumer Key and Consumer Secret

Obtain Authorization URL


Only pass callback_url to get_authentication_tokens if your application is a Web Application

Desktop and Mobile Applications do not require a callback_url


twitter = Twython(APP_KEY, APP_SECRET)
auth = twitter.get_authentication_tokens(callback_url='')

From the auth variable, save the oauth_token_secret for later use (these are not the final auth tokens). In Django or other web frameworks, you might want to store it to a session variable

OAUTH_TOKEN = auth['oauth_token']
OAUTH_TOKEN_SECRET = auth['oauth_token_secret']

Send the user to the authentication url, you can obtain it by accessing


Handling the Callback


If your application is a Desktop or Mobile Application oauth_verifier will be the PIN code

After they authorize your application to access some of their account details, they’ll be redirected to the callback url you specified in get_autentication_tokens

You’ll want to extract the oauth_verifier from the url.

Django example:

oauth_verifier = request.GET['oauth_verifier']

Now that you have the oauth_verifier stored to a variable, you’ll want to create a new instance of Twython and grab the final user tokens

twitter = Twython(APP_KEY, APP_SECRET,

final_step = twitter.get_authorized_tokens(oauth_verifier)

Once you have the final user tokens, store them in a database for later use!

OAUTH_TOKEN = final_step['oauth_token']
OAUTH_TOKEN_SECRET = final_step['oauth_token_secret']

OAuth 2 (Application Authentication)


Just a reminder, this authentication type is for when you don’t want to authenticate and interact with users and make read-only calls to Twitter

OAuth 2 authentication is 100x easier than OAuth 1. Let’s say you just made your application and have your Consumer Key and Consumer Secret

First, you’ll want to import Twython

from twython import Twython

Obtain an OAuth 2 Access Token


twitter = Twython(APP_KEY, APP_SECRET, oauth_version=2)
ACCESS_TOKEN = twitter.obtain_access_token()

Save ACCESS_TOKEN in a database or something for later use!

Use the Access Token


twitter = Twython(APP_KEY, access_token=ACCESS_TOKEN)

Now that you have your OAuth 2 access_token, maybe you’ll want to perform a search or something

The Twython API Table

The Twython package contains a file which holds a Mixin of all Twitter API endpoints. This is so Twython’s core isn’t cluttered with 50+ methods.

Dynamic Function Arguments

Keyword arguments to functions are mapped to the functions available for each endpoint in the Twitter API docs. Doing this allows us to be incredibly flexible in querying the Twitter API, so changes to the API aren’t held up from you using them by this library.

What Twython Returns

Twython returns native Python objects. We convert the JSON sent to us from Twitter to an object so you don’t have to.

Now that you have a little idea of the type of data you’ll be receiving, briefed on how arguments are handled, and your application tokens and user oauth tokens (or access token if you’re using OAuth 2), check out the basic usage section.