SMeetBot API

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. Within v1 SMeet adds: new fields, new update types, new values of reason and status, 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_changed and file_status_changed.
  • Long polling with one receiver per bot (consumer_id, lease, epoch), confirmation by offset, server-issued next_offset and skipped ranges. A call with a foreign epoch confirms nothing, and every CONSUMER_CONFLICT carries retry_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-Key on 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_id stays 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.