Negatively Proportional Model
Miss any of our Open RFC calls?Watch the recordings here! »


3.4.0 • Public • Published


NPM Travis Downloads Telegram channel

Telegram API JS (MTProto) client library for browser and nodejs


yarn add @mtproto/core -E
# or 
npm i @mtproto/core -E

Quick start

You need api_id and api_hash. If you do not have them yet, then get them according to the official instructions: creating your Telegram application.

const { MTProto } = require('@mtproto/core');
const api_id = 'YOU_API_ID';
const api_hash = 'YOU_API_HASH';
// 1. Create an instance
const mtproto = new MTProto({
// 2. Get the user country code'help.getNearestDc').then(result => {



new MTProto({ api_id, api_hash, test, customLocalStorage }) => mtproto

api_id: number and api_hash: string

api_id and api_hash are required. If you do not have them yet, then get them according to the official instructions: creating your Telegram application.

test: boolean

Default: false. Use test data centers. On test servers, you can use test phone numbers.

customLocalStorage: localStorage

Default for browser: window.localStorage. Default for nodejs: node-localstorage. Custom storage for save auth data. Your localStorage must follow this API:

class MyAsyncLocalStorage {
  setItem(key: string, value: string): Promise<void>;
  getItem(key: string): Promise<string|null>;

We have ready-made storage:

  1. tempLocalStorage only stores data while the script is running


const { tempLocalStorage } = require('@mtproto/core/src/storage/temp');
const mtproto = new MTProto({
  customLocalStorage: tempLocalStorage,
});, params, options) => Promise

method: string

Method name from methods list.

params: object

Parameters for method from{method}#parameters.

If you need to pass a constructor use _. Example for users.getFullUser:

const params = {
  id: {
    _: 'inputUserSelf',

options.dcId: number

Specific DC id. By default, it is 2. You can change the default value using mtproto.setDefaultDc method.

options.syncAuth: boolean

Default: true. Copy authorization to all DC if the response contains auth.authorization.

Example:'help.getNearestDc', {}, {
  dcId: 1
}).then(result => {
  console.log('result:', result);
  // { _: 'nearestDc', country: 'RU', this_dc: 1, nearest_dc: 2 }
}).catch(error => {
  console.log('error.error_code:', error.error_code);
  console.log('error.error_message:', error.error_message);

mtproto.updates.on(updates, listener)

Method for handles updates.

Example of handling a updateShort with updateUserStatus:

mtproto.updates.on('updateShort', message => {
  const { update } = message;
  if (update._ === 'updateUserStatus') {
    const { user_id, status } = update;
    console.log(`User with id ${user_id} change status to ${status}`);

mtproto.setDefaultDc(dcId) => Promise

If a migration error occurs, you can use this function to change the default data center. You can also use options.dcId.

See the example in the authentication.

getSRPParams({ g, p, salt1, salt2, gB, password }) => { A, M1 }

Function to calculate parameters for 2FA (Two-factor authentication). For more information about parameters, see the article on the Telegram website.

See the example in the authentication.

Useful references


npm i @mtproto/core

DownloadsWeekly Downloads






Unpacked Size

1.12 MB

Total Files


Last publish


  • avatar