SMeet Bot API
API changelog
Every change of the Bot API contract is recorded here, newest first. The contract itself is published as openapi.json.
How changes are recorded#
- The version of the path,
/bot-api/v1, changes only when a working program could break. Withinv1SMeet adds: new fields, new update types, new values ofreasonandstatus, new error codes. Programs ignore what they do not know (Versions and compatibility). - Each entry gives the date and the version and lists what is new, what was fixed, what is deprecated and what a program has to change.
- A deprecated feature keeps working in
v1; its entry says what to use instead. - The machine-readable contract of the current version is openapi.json.
1.0.0 (2026-09-26)#
The first public version of the SMeet Bot API, at https://messenger.scrile.com/bot-api/v1.
New#
- Methods: getMe, getUpdates, rejectUpdate, sendMessage, editMessageText, answerCallbackQuery, getMyCommands, setMyCommands, getDeliveryInfo, getWebhookInfo, uploadFile, sendPhoto, sendDocument, getFile, and file downloads at
/files/<file_id>/content. - Update types:
message,message_edited,message_deleted,callback_query,chat_access_changedandfile_status_changed. - Long polling with one receiver per bot (
consumer_id, lease,epoch), confirmation byoffset, server-issuednext_offsetandskippedranges. A call with a foreign epoch confirms nothing, and everyCONSUMER_CONFLICTcarriesretry_after. - Webhook delivery signed with HMAC-SHA256, with an error budget per update and a circuit breaker. Answers only the owner can fix (a secret that does not match, an address that is gone, a redirect, a certificate) pause delivery until the owner presses Resume delivery in My bots; nothing is lost meanwhile, and SMeet BotFather tells the owner about a pause and about updates moved to FAILED.
- An
Idempotency-Keyon every method that changes something; keys are kept for 7 days. - Buttons under messages (callback buttons and
https://links) and editing of the bot's own messages. - Photos and documents in both directions, checked by an antivirus scanner.
- The FAILED list with replay by the owner;
event_idstays the same across repeats and replays.
Fixed#
Nothing: this is the first version.
Deprecated#
Nothing.
Migration#
Nothing to migrate. Programs written against a preview of the contract should compare their requests with the API reference, which is generated from the published contract. The differences that matter most: a webhook's 401, 403, 404 and 410 pause delivery until the owner resumes it instead of moving updates to FAILED; getMe id is the bot's account id, the same value as from.id of its messages; a call with a foreign epoch confirms nothing; User has no language_code, and a file has no uploading status.