Documentation available at [https://airgram.io](https://airgram.io).

Usage no npm install needed!

<script type="module">
  import airgramDevCore from 'https://cdn.skypack.dev/@airgram-dev/core';



This is a wrapper for Telegram Database library written in TypeScript.


  • Code style. TDLib follows a different coding convention than best practices in TypeScript or JavaScript. Airgram fixes it.
  • Methods. Each API method has convenient wrapper with description and JSDoc documentation.
  • Type checking. Airgram is a true TypeScript library. Everything has strict typings, so take full advantage of type checking and code completion.
  • Flexibility. Airgram relies on middleware. This gives a high degree of freedom. You can modify requests, save responses, perform any actions in the data flow.
  • Data models. You can extend standard TDLib objects and add some computed properties or whatever you want.
  • Use everywhere. Airgram is an environment agnostic library. It will work in the browser as well as in Node.js. You can write Telegram client or use it for a Telegram bot backend.

NPM Version TDLib js-standard-style NPM



  1. Build TDLib library according the instruction.
  2. Install node-gyp
  3. Install Airgram:
npm install airgram


npm install @airgram/web

Check out webpack config example.

Getting started

import { Airgram, Auth, prompt, toObject } from 'airgram'

const airgram = new Airgram({
  apiId: process.env.APP_ID,
  apiHash: process.env.APP_HASH

airgram.use(new Auth({
  code: () => prompt(`Please enter the secret code:\n`),
  phoneNumber: () => prompt(`Please enter your phone number:\n`)

void (async () => {
  const me = toObject(await airgram.api.getMe())
  console.log(`[me]`, me)

// Getting all updates
airgram.use((ctx, next) => {
  if ('update' in ctx) {
    console.log(`[all updates][${ctx._}]`, JSON.stringify(ctx.update))
  return next()

// Getting new messages
airgram.on('updateNewMessage', async ({ update }, next) => {
  const { message } = update
  console.log('[new message]', message)
  return next()


Guides and API-reference are available here.

Old version

If you are interested in v1.*, follow to corresponding branch.


The source code is licensed under GPL v3. License is available here.