The subscriber picks the channel. You hit one endpoint /v1/send — Zapnoty delivers to Telegram or Max depending on the subscription channel.
· Webhooks, retry and media included
Without us
Telegram Bot API and Max API differ in buttons, media, formatting and error shapes. Supporting both doubles your code and tests.
Telegram 429 with Retry-After, Max 5xx, bot blocked, chat not found — each needs classification and retry logic.
Only-Telegram loses Max users, only-Max loses Telegram users. Supporting both natively takes weeks of work.
What's inside
One POST, Zapnoty picks the channel by subscriber_id. Text, media, buttons, formatting — identical JSON for Telegram and Max.
Photos, videos, documents. URL buttons and callback_data with button.clicked webhook. Up to 3 rows × 3 buttons in both channels.
Switch format: plain/markdown/html — Zapnoty translates to the format each messenger accepts.
Project name, description and logo appear automatically. Welcome and farewell messages — in two languages.
t.me/zapnotybot?start=proj_SLUG — one-click subscription with subscriber_id, permissions and tags.
subscription.created, delivery.success/failed, button.clicked — all with HMAC-SHA256 signature and 3× retry.
How it works
Sign up via Yandex, VK or email magic link. API key in the zn_ + 32 chars format is created with one click.
Users click t.me/zapnotybot?start=proj_SLUG → subscribed in one click. Same pattern for Max.
One Bearer token, one JSON body. Text or template, optional media and buttons. Retry and webhook events — automatic.
FAQ
Telegram Bot API is low-level: SDK, polling/webhooks, manual retries, your own webhook server. Zapnoty is a SaaS layer: one REST endpoint, ready-made retries with exponential backoff, HMAC-signed outgoing events, rate limit, broadcast queue, dashboard with analytics and team roles.
For you — yes. Internally we translate the same JSON to different APIs (Max needs user_id instead of chat_id, different upload for media). You never touch those differences.
A MyChatMember event arrives, we automatically deactivate every subscription for that chat_id. A delivery.failed webhook fires with a clear reason. We don't retry — pointless.
Rate limit — 300 requests/min per project. Over that — HTTP 429 with Retry-After. Free tier is 100 credits (~100 sends) per month.
Yes. Business tiers support teams of 50-500, extended log retention (365 days), and priority support. Data is stored in Russia.
No. You use the shared @zapnotybot and its Max counterpart. Branding (project name, description, logo) appears automatically in every message. For full white-label — enterprise plan.
No credit card. 100 free credits per month — enough to try every feature.
Solutions & use cases
Common scenarios where Zapnoty replaces a stack of 3-4 separate services.
10× cheaper than SMS, higher reach than email
OTP, order status, abandoned cart, promos
Forms with instant Telegram notification — no forgotten inboxes
Drip lessons, reminders, Q&A and bot login
Support in Telegram/Max, no heavy chat widget