Once you successfully installed Pyrogram, you will still have to follow a few steps before you can actually use the library to make API calls. This section provides all the information you need in order to set up a project with Pyrogram.

API Keys

The very first step requires you to obtain a valid Telegram API key (API id/hash pair). If you already have one you can skip this step, otherwise:

  1. Visit and log in with your Telegram Account.
  2. Fill out the form to register a new Telegram application.
  3. Done. The API key consists of two parts: App api_id and App api_hash.


This API key is personal and should be kept secret.


The API key obtained in the previous step defines a token for your application allowing you to access the Telegram database using the MTProto API — it is therefore required for all authorizations of both Users and Bots.

Having it handy, it’s time to configure your Pyrogram project. There are two ways to do so, and you can choose what fits better for you:

  • Create a new config.ini file at the root of your working directory, copy-paste the following and replace the api_id and api_hash values with your own. This is the preferred method because allows you to keep your credentials out of your code without having to deal with how to load them:

    api_id = 12345
    api_hash = 0123456789abcdef0123456789abcdef
  • Alternatively, you can pass your API key to Pyrogram by simply using the api_id and api_hash parameters of the Client class. This way you can have full control on how to store and load your credentials:

    from pyrogram import Client
    app = Client(


The examples below assume you have created a config.ini file, thus they won’t show the api_id and api_hash parameters usage.

User Authorization

In order to use the API, Telegram requires that Users be authorized via their phone numbers. Pyrogram automatically manages this access, all you need to do is create an instance of the Client class by passing to it a session_name of your choice (e.g.: “my_account”) and call the run() method:

from pyrogram import Client

app = Client("my_account")

This starts an interactive shell asking you to input your phone number (including your Country Code) and the phone code you will receive:

Enter phone number: +39**********
Is "+39**********" correct? (y/n): y
Enter phone code: 32768

After successfully authorizing yourself, a new file called my_account.session will be created allowing Pyrogram executing API calls with your identity. This file will be loaded again when you restart your app, and as long as you keep the session alive, Pyrogram won’t ask you again to enter your phone number.


Your *.session files are personal and must be kept secret.

Bot Authorization

Bots are a special kind of users and are authorized via their tokens (instead of phone numbers), which are created by BotFather. Bot tokens replace the Users’ phone numbers only — you still need to configure a Telegram API key with Pyrogram, even when using Bots.

The authorization process is automatically managed. All you need to do is pass the bot token as session_name. The session file will be named after the Bot user_id, which is 123456.session for the example below.

from pyrogram import Client

app = Client("123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11")