Telegram and Max —
one API for both

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

@zapnotybot
Telegram
POST /v1/send channel: telegram
2
messengers, one API
< 500 ms
median delivery time
retries with exponential backoff
12
webhook event types

Without us

Why writing for Telegram and Max separately hurts

Two SDKs, two tokens, two error streams

Telegram Bot API and Max API differ in buttons, media, formatting and error shapes. Supporting both doubles your code and tests.

Retry, rate limit, webhooks on you

Telegram 429 with Retry-After, Max 5xx, bot blocked, chat not found — each needs classification and retry logic.

Users are forced to pick a channel

Only-Telegram loses Max users, only-Max loses Telegram users. Supporting both natively takes weeks of work.

What's inside

Unified interface on top of two messengers

Single /v1/send endpoint

One POST, Zapnoty picks the channel by subscriber_id. Text, media, buttons, formatting — identical JSON for Telegram and Max.

Media + inline buttons

Photos, videos, documents. URL buttons and callback_data with button.clicked webhook. Up to 3 rows × 3 buttons in both channels.

Plain, Markdown, HTML

Switch format: plain/markdown/html — Zapnoty translates to the format each messenger accepts.

Sender branding

Project name, description and logo appear automatically. Welcome and farewell messages — in two languages.

Deep link subscription

t.me/zapnotybot?start=proj_SLUG — one-click subscription with subscriber_id, permissions and tags.

Automatic webhooks

subscription.created, delivery.success/failed, button.clicked — all with HMAC-SHA256 signature and 3× retry.

How it works

From sign-up to first send — 5 minutes

01

Create a project and get a key

Sign up via Yandex, VK or email magic link. API key in the zn_ + 32 chars format is created with one click.

02

Drop a deep link

Users click t.me/zapnotybot?start=proj_SLUG → subscribed in one click. Same pattern for Max.

03

Send via /v1/send

One Bearer token, one JSON body. Text or template, optional media and buttons. Retry and webhook events — automatic.

FAQ

Frequently asked

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.

Free to start

Hook up in 5 minutes

No credit card. 100 free credits per month — enough to try every feature.