SMeet Bots · Bot API v1
Your bot answers in SMeet, and runs on your server.
Create a bot in SMeet BotFather, connect a program in Python, Node.js or any other language, and it talks to people in private chats: text, buttons, photos and documents. SMeet carries the chat and the delivery; what the bot says is up to you.
“Create a bot” opens My bots in the SMeet web app, so sign in first. The documentation is open to everyone.
/start
Hi! This is the Acme help desk. Choose a question:
Orders ship within two working days. You get a message when yours leaves the warehouse.
And order A-1042?
A-1042 left the warehouse this morning. The courier comes today, 14:00-16:00.
What bots are for
The questions your team answers ten times a day.
A bot is at its best where the answer follows a rule or lives in one of your systems. People ask in the chat they already have open, and your program answers.
Support desk
Answer the common questions straight away, collect the order number or the error text, and pass the rest to your team with everything already written down.
Request status
Someone presses Notify me once, and the bot writes when their request or order changes status. No press, no notifications.
FAQ with buttons
Topics as buttons under the message. A press answers or narrows the question, so nobody has to guess what to type.
Internal tools
A bot only your colleagues can see: the on-call rota, a lookup in your CRM, the status of an order. It lives in the organisation’s space and nowhere else.
Requests in a few questions
The bot asks one thing at a time and hands a complete request to your system: an IT ticket, a leave request, a delivery address.
Documents both ways
Receive a scan or a photo, send back a PDF: invoices, receipts, contracts. Every file passes an antivirus check before the other side gets it.
From zero to the first reply
Five steps, and the bot answers.
Nobody reviews each new bot by hand, and there is no SDK to install. You need a SMeet account with a confirmed e-mail and a computer with Python 3.9+ or Node.js 22.13+.
- Create the bot in SMeet BotFatherOpen My bots in the web app, or a chat with
@smeet_botfather. Send/newbot, a name for people and an address that ends in_bot. - Get the tokenPress Get the token. It opens a protected screen and shows the token once; BotFather never posts it into the chat.
- Run an examplePut the token into
SMEET_BOT_TOKENand start the echo bot from the quick start, in Python or Node.js.$ python echo_bot.py Running as @acme_help_bot, delivery mode polling - Press StartOpen your bot in SMeet and press Start. The bot receives
/startand answers; send any text and it comes back. - Move it to a serverA bot answers only while its program runs. Long polling needs only outgoing HTTPS, so any server works, even one behind NAT. Want SMeet to call you instead? Switch to a webhook.
/newbot
What should the bot be called? People will see this name, for example “Support helper”.
Acme help desk
Now the bot’s address: Latin letters, digits and _, ending with _bot. For example: support_helper_bot.
acme_help_bot
Done: @acme_help_bot is created. Status: not connected.
Next, get the token on the protected screen and run the quick start example. I never post tokens in this chat.
Version 1
What the first release does, and what it does not.
Private chats in the public space and in organisations, with everything a support desk or an internal tool needs. Groups, channels and payments are not part of it.
In the chat
Private chats
One person and your bot, after the person presses Start. A bot never writes first.
Text, replies and edits
Messages of up to 4096 characters, replies to a message, and edits of the bot’s own messages with their buttons.
Command menu
The list people see when they type “/”, set in BotFather or from your program.
Buttons under a message
A callback button your bot answers, or an https link that opens in the browser.
Photos and documents
Photos up to 10 MiB and documents up to 20 MiB, in both directions, each checked by an antivirus scanner.
For your program
Bot API over HTTPS
https://messenger.scrile.com/bot-api/v1/<method>with JSON, and the token in the Authorization header as a Bearer token.Two ways to receive updates
Long polling with getUpdates, or a webhook to your HTTPS address. One mode at a time; the owner switches it in My bots.
A queue that waits
Undelivered updates wait up to 7 days, and an Idempotency-Key keeps a retried call from sending a message twice.
Examples that run
Python and Node.js: an echo bot, an FAQ with buttons, status notifications, files and a webhook with a signature check.
A published contract
The whole API as openapi.json, to generate a client or to test against.
Where it works
Public space and organisations
A bot lives in exactly one space: the public one, or one organisation.
Web, iOS and macOS
The SMeet web app and SMeet for iOS and macOS show bots with their buttons and files.
Android later
Support for Android comes in a later release. Until then other apps show a bot’s messages as plain text.
Not in version 1
Groups and channels, payments, a no-code builder and bots that write first.
For organisations
An organisation’s bot stays inside the organisation.
Every bot belongs to exactly one space. A bot of an organisation is visible to its members only, and its token cannot reach chats, people or files anywhere else.
- Two separate switches for the organisation’s owners and administrators: creating bots and running bots. Both stay off until the organisation turns them on.
- Turning creation off stops new bots only. Turning running off stops every bot of the organisation at once and cancels the updates still waiting for them.
- When the owner of a bot leaves the organisation, the bot stops. When a member leaves, their chats with the organisation’s bots end.
- People can report a bot from its profile. SMeet administrators review reports and can suspend a bot or revoke its token.
Bots in Acme
What the organisation’s owners and administrators see in the web app. The labels are the app’s own.
Safety
A bot gets what it needs, and nothing more.
The server checks access on every call. Nothing depends on a bot behaving well, and the person on the other side keeps the last word.
How webhook signatures work- The token is shown onceSMeet keeps only a hash of it. Lost or leaked? Revoke it or issue a new one, and the old one stops working at once.
- Signed webhooksUpdates go to public HTTPS addresses only, and every request carries an HMAC-SHA256 signature in the X-SMeet-Signature header.
- An antivirus check on every fileNeither the bot nor the person gets a file before a clean scan. Files are kept in a private store with no public link, and every download checks the rights again.
- Rate limitsOne message a second per chat and ten a second per bot, with short bursts. Over the limit, the API says when to try again.
- No reading of other chatsA bot sees only its own chats with people who pressed Start. It never receives their e-mail, phone number, contacts or other conversations.
- The person decidesStop and Block work on the platform side. The bot’s code cannot undo them, and a bot cannot start a conversation.
Documentation
Everything a developer needs, in English and Russian.
Guides, the API reference and runnable examples. Reading them needs no account. Prefer Russian? Документация на русском.
Questions and answers
What people ask before they build one.
Where does the bot’s code run?
On your side: a server, a container or a cloud function. SMeet carries the chat and delivers updates, but it never runs bot code. Long polling needs only outgoing HTTPS; a webhook needs a public HTTPS address.
Which programming languages can I use?
Any language that can send HTTPS requests and read JSON. The documentation has runnable examples in Python and Node.js, and the contract is published as openapi.json.
Is the SMeet Bot API compatible with Telegram?
No. It is SMeet’s own API, and Telegram client libraries do not work with it. The ideas will feel familiar, though: a helper bot for setup, commands and buttons.
Can a bot write to someone first?
No. A bot writes only after the person has pressed Start, and only in its private chat with that person. Stop or Block ends that at once, and the bot’s code cannot undo it.
Can I add a bot to a group or a channel?
Not in the first release. Bots work in private chats, in the public space and inside organisations.
What does a bot learn about the people it talks to?
Their display name and public address, the messages and files they send in the chat with the bot, and their button presses. Never their e-mail address, phone number, contacts or other chats.
How many bots can I create?
Up to 5 per person. You need a confirmed e-mail address and permission to create bots in the space where you open SMeet BotFather.
What if the token leaks?
Issue a new token in My bots, and the old one stops working at once; /revoke in SMeet BotFather ends it without a replacement. If the webhook secret may have leaked too, the emergency reset replaces both in one step.
Which apps show bots?
The SMeet web app and SMeet for iOS and macOS, with buttons and files. Android support comes in a later release; until then other apps show a bot’s messages as plain text.
Your first reply is a few minutes away.
BotFather, a token, an example in Python or Node.js, and Start. The quick start walks through each step.
“Create a bot” opens My bots in the SMeet web app. Sign in first, then SMeet BotFather takes it from there.