Build bots for Qivuna
Qivuna is a messenger with end-to-end encrypted chats and private groups. Its bots work over a plain HTTPS API and are added to rooms only with the rights an admin grants. End-to-end encrypted bots are designed and documented here, but not open yet.
At launch: long polling only
Bots receive updates with
getUpdates (long polling). Webhooks and encrypted bots are documented here but not open yet: setWebhook answers 400 webhooks_disabled, and every new bot is a plain (not end-to-end encrypted) bot. The changelog will say when they open.This documentation describes Bot API 1.0. Changes are listed in the changelog.
Start here#
- Getting startedCreate a bot with @qivbot, get its token, and run an echo bot in Node.js or Python.
- ConceptsBots are not members. Grants, consent receipts, privacy mode and pseudonymous ids.
- API referenceAll 37 methods with parameters, limits and error codes.
- Encrypted botsNot open yet. What end-to-end encryption to a bot protects, and what it does not.
Guides#
- Updates and long pollingUpdate types,
getUpdates, ordering and expiry. - WebhooksNot open yet. The ownership challenge, HMAC signatures, retries and auto-disable.
- Keyboards and callbacksInline buttons, presses and answers.
- Commands and scopesThe “/” menu, scopes, languages, and which bot a command reaches.
- Moderation and rightsDeleting, banning, muting, pinning and invite links.
- Media and getFileSending photos, videos and documents; downloading what the bot receives.
- SDKs and test vectorsNode.js and Python SDKs, and the cryptographic test vectors.
- Rate limitsPer bot, per chat, per room, and the platform ceiling.
What is different here#
- Bots are not room members. An admin adds a bot with a list of rights. Each change creates a consent receipt and a visible line in the room. Bots never appear in member lists.
- Privacy mode is on by default. In groups a bot sees only commands, mentions of it and replies to it, unless the bot turns privacy mode off and an admin of a public group grants “read all messages”.
- Bots never see phone numbers. People appear under ids that are different for every bot owner, with only the name that members of a shared room already see.
- Encrypted bots (not open yet). When they open, messages to an encrypted bot are sealed on the person's phone to a key that only the bot's server holds. Qivuna's server relays them and cannot read them.
- Tokens go in a header, never in a URL. A token seen in a URL is revoked on the spot.
If you have built Telegram bots, most of this will feel familiar. The differences from Telegram are listed on the overview page.