Use tdweb on steroids.

Usage no npm install needed!

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


Airgram for tdweb

Use tdweb on steroids.


  • Strictly typed;
  • Documentation out of the box;
  • Supports models;
  • Built on middleware;

All TDLib classes and methods are described and have suitable wrappers in Airgram. There are only two differences:

  • All parameter names are represent in "camelCase".
  • Parameter @type renamed to _.


Check out airgram documentation:

TDLib API reference:


npm install tdweb-airgram



This section describes the options you can pass to Airgram constructor:

import { Airgram } from 'tdweb-airgram'

const airgram = new Airgram({
  // options

TDLib options

Key Type Note
useTestDc boolean If set to true, the Telegram test environment will be used instead of the production environment
databaseDirectory string The path to the directory for the persistent database
filesDirectory string The path to the directory for storing files
useFileDatabase boolean If set to true, information about downloaded and uploaded files will be saved between application restarts
useChatInfoDatabase boolean If set to true, the library will maintain a cache of users, basic groups, supergroups, channels and secret chats. Implies useFileDatabase
useMessageDatabase boolean If set to true, the library will maintain a cache of chats and messages. Implies useChatInfoDatabase
useSecretChats boolean If set to true, support for secret chats will be enabled
apiId number Application identifier for Telegram API access, which can be obtained at https://my.telegram.org
apiHash string Application identifier hash for Telegram API access, which can be obtained at https://my.telegram.org
systemLanguageCode string IETF language tag of the user's operating system language
deviceModel string Model of the device the application is being run on
systemVersion string Version of the operating system the application is being run on
applicationVersion string Application version
enableStorageOptimizer boolean If set to true, old files will automatically be deleted
ignoreFileNames boolean If set to true, original file names will be ignored. Otherwise, downloaded files will be saved under names as close as possible to the original name
databaseEncryptionKey string Encryption key

tdweb options:

Key Type Note
instanceName string Name of the TDLib instance. Currently only one instance of TdClient with a given name is allowed. All but one instances with the same name will be automatically closed. Usually, the newest non-background instance is kept alive. Files will be stored in an IndexedDb table with the same name.
isBackground boolean Pass true, if the instance is opened from the background. Default: false
jsLogVerbosityLevel string The initial verbosity level of the JavaScript part of the code (one of 'error', 'warning', 'info', 'log', 'debug'). Default: info
logVerbosityLevel number The initial verbosity level for the TDLib internal logging (0-1023). Default: 2
useDatabase boolean Pass false to use TDLib without database and secret chats. It will significantly improve loading time, but some functionality will be unavailable. Default: true
readOnly boolean For debug only. Pass true to open TDLib database in read-only mode. Default: false
mode string For debug only. The type of the TDLib build to use. 'asmjs' for asm.js and 'wasm' for WebAssembly. If mode == 'auto' WebAbassembly will be used if supported by browser, asm.js otherwise. Default: auto

Other options

Key Type Note
models Function Contains function, which converts plain JSON objects to models. Details.
contextFactory Function Function that returns custom middleware context. Details.

API reference

This section describes public API of an Airgram instance:

Key Type Note
api Object Contains wrappers for all TDLib methods.
config Object Airgram configuration. Readonly.
catch (handler) => void Overrides default error handler. Argument handler takes a function: (error: Error, ctx?: Record<string, any>) => void


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