Project Setup ============= We have just `installed Pyrogram`_. In this page we'll discuss what you need to do in order to set up a project with the library. Let's see how it's done. API Keys -------- The very first step requires you to obtain a valid Telegram API key (API id/hash pair): #. Visit https://my.telegram.org/apps and log in with your Telegram Account. #. Fill out the form to register a new Telegram application. #. Done! The API key consists of two parts: **api_id** and **api_hash**. .. important:: The API key is personal and must be kept secret. .. note:: The API key is unique for each user, but defines a token for a Telegram *application* you are going to build. This means that you are able to authorize multiple users (and bots too) to access the Telegram database through the MTProto API by a single API key. Configuration ------------- Having the API key from the `previous step <#api-keys>`_ in handy, we can now begin to configure a Pyrogram project. There are two ways to do so, and you can choose what fits better for you: - First option (recommended): 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: .. code-block:: ini [pyrogram] 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 (e.g.:, you can load the credentials from the environment variables and directly pass the values into Pyrogram): .. code-block:: python from pyrogram import Client app = Client( "my_account", api_id=12345, api_hash="0123456789abcdef0123456789abcdef" ) .. note:: To keep code snippets clean and concise, from now on it is assumed you are making use of the ``config.ini`` file, thus, the *api_id* and *api_hash* parameters usage won't be shown anymore. .. _installed Pyrogram: install.html