Skip to content

Popups & Interactions

Mini Apps provide various popup and interaction methods for displaying messages, scanning QR codes, reading clipboard, handling payments, and more.

Popups

showPopup

javascript
Telegram.WebApp.showPopup(params, callback)

Displays a custom popup.

ParameterTypeRequiredDescription
paramsObjectYesPopup parameters
params.titleStringNoPopup title, max 64 characters
params.messageStringYesPopup message text, max 256 characters
params.buttonsArrayNoButton list, max 3 buttons
callbackFunctionNoClose callback with button ID parameter

Button Object

FieldTypeRequiredDescription
idStringNoButton ID, max 64 characters, defaults to empty string
typeStringNoButton type: "default", "ok", "close", "cancel", "destructive"
textStringConditionalButton text (required when type is "default" or "destructive")
javascript
Telegram.WebApp.showPopup({
  title: 'Confirm Action',
  message: 'Are you sure you want to proceed?',
  buttons: [
    { id: 'confirm', type: 'default', text: 'Confirm' },
    { id: 'cancel', type: 'cancel' }
  ]
}, (buttonId) => {
  if (buttonId === 'confirm') {
    // User clicked confirm
  }
});

showAlert

javascript
Telegram.WebApp.showAlert(message, callback)

Displays an alert popup with an "OK" button.

ParameterTypeRequiredDescription
messageStringYesAlert message text
callbackFunctionNoCallback after user clicks "OK"
javascript
Telegram.WebApp.showAlert('Operation successful!', () => {
  console.log('User acknowledged');
});

showConfirm

javascript
Telegram.WebApp.showConfirm(message, callback)

Displays a confirmation popup with "OK" and "Cancel" buttons.

ParameterTypeRequiredDescription
messageStringYesConfirmation message text
callbackFunctionNoCallback with confirmed (Boolean) parameter
javascript
Telegram.WebApp.showConfirm('Are you sure you want to delete?', (confirmed) => {
  if (confirmed) {
    deleteItem();
  }
});

QR Code Scanning

showScanQrPopup

javascript
Telegram.WebApp.showScanQrPopup(params, callback)

Displays a QR code scanning popup. Bot API 6.9+

ParameterTypeRequiredDescription
paramsObjectNoScan parameters
params.textStringNoHint text for the scan interface
callbackFunctionNoScan success callback with scanned text. Return true to close the popup
javascript
Telegram.WebApp.showScanQrPopup({ text: 'Scan QR Code' }, (text) => {
  console.log('Scan result:', text);
  return true; // Close the scan popup
});

closeScanQrPopup

javascript
Telegram.WebApp.closeScanQrPopup()

Closes the QR code scanning popup. Bot API 6.9+

Clipboard

readTextFromClipboard

javascript
Telegram.WebApp.readTextFromClipboard(callback)

Reads text content from the clipboard. Bot API 6.9+

ParameterTypeRequiredDescription
callbackFunctionNoCallback with text (String | null) parameter
javascript
Telegram.WebApp.readTextFromClipboard((text) => {
  if (text) {
    console.log('Clipboard content:', text);
  }
});

Invoices & Payments

openInvoice

javascript
Telegram.WebApp.openInvoice(url, callback)

Opens the invoice payment interface.

ParameterTypeRequiredDescription
urlStringYesInvoice link
callbackFunctionNoPayment callback with status parameter
javascript
Telegram.WebApp.openInvoice('https://t.me/$invoice_id', (status) => {
  if (status === 'paid') {
    showSuccess('Payment successful');
  } else if (status === 'cancelled') {
    showInfo('Payment cancelled');
  }
});

Payment status values:

StatusDescription
paidPayment successful
cancelledUser cancelled payment
failedPayment failed
pendingPayment processing

Sharing

shareToStory

javascript
Telegram.WebApp.shareToStory(media_url, params)

Shares content to a story. Bot API 7.8+

ParameterTypeRequiredDescription
media_urlStringYesMedia file URL
paramsObjectNoShare parameters
params.textStringNoAdditional text
params.widget_linkObjectNoWidget link
params.widget_link.urlStringNoLink URL
params.widget_link.nameStringNoDisplay name

shareMessage

javascript
Telegram.WebApp.shareMessage(msg_id, callback)

Shares a message prepared by the Bot. Bot API 8.0+

ParameterTypeRequiredDescription
msg_idStringYesPrepared message ID
callbackFunctionNoCallback with sent (Boolean) parameter

Emoji Status

setEmojiStatus

javascript
Telegram.WebApp.setEmojiStatus(custom_emoji_id, params, callback)

Sets a custom emoji status for the user. Bot API 8.0+

ParameterTypeRequiredDescription
custom_emoji_idStringYesCustom emoji ID
paramsObjectNoParameters
params.durationIntegerNoDuration in seconds
callbackFunctionNoCallback with set (Boolean) parameter

requestEmojiStatusAccess

javascript
Telegram.WebApp.requestEmojiStatusAccess(callback)

Requests permission to set emoji status. Bot API 8.0+

ParameterTypeRequiredDescription
callbackFunctionNoCallback with granted (Boolean) parameter

File Download

downloadFile

javascript
Telegram.WebApp.downloadFile(params, callback)

Requests a file download. Bot API 8.0+

ParameterTypeRequiredDescription
paramsObjectYesDownload parameters
params.urlStringYesFile URL
params.file_nameStringYesSuggested file name
callbackFunctionNoCallback with accepted (Boolean) parameter
javascript
Telegram.WebApp.downloadFile({
  url: 'https://example.com/report.pdf',
  file_name: 'report.pdf'
}, (accepted) => {
  if (accepted) {
    console.log('User accepted the download');
  }
});

Permission Requests

requestWriteAccess

javascript
Telegram.WebApp.requestWriteAccess(callback)

Requests write access to send messages to the user. Bot API 6.9+

ParameterTypeRequiredDescription
callbackFunctionNoCallback with granted (Boolean) parameter

requestContact

javascript
Telegram.WebApp.requestContact(callback)

Requests the user's contact information (phone number). Bot API 6.9+

ParameterTypeRequiredDescription
callbackFunctionNoCallback with sent (Boolean) parameter