v0.2 — Telegram + Max

Push notifications
via messengers

One API — instant delivery to Telegram and Max. Notifications, OTP codes, mass broadcasts. Free to start.

curl
curl -X POST https://api.zapnoty.com/v1/send \
  -H "Authorization: Bearer zn_aBcDeFgH..." \
  -H "Content-Type: application/json" \
  -d '{
    "subscriber_id": "550e8400-...",
    "text": "Order #1042 shipped!",
    "buttons": [[{"text": "Track", "url": "https://..."}]]
  }'

Features

Everything you need for
notifications

Telegram Max

Two messengers, one API

Telegram and Max through a single interface. Subscribers choose the channel, you send the same way.

Telegram
Max

OTP without SMS

Verification codes via messenger. Cheaper than SMS, instant delivery, attempt control. Custom template with {{code}}.

OTP Code
4
8
2
9
1
6

Broadcast with progress

Mass delivery through a queue. Track status, sent/failed in real time.

sent 2,847
failed 12
status completed

Bot Auth

OAuth user authentication via Telegram and Max. Static links, API sessions with state, QR-polling for cross-device.

1 Click link
2 Confirm in bot
3 Data received

Helpdesk

Built-in ticket system. Customers message the bot — you reply via API or dashboard. SLA timers, statuses, webhooks.

#1024 new

Multilingual

Bot responds in subscriber's language. Built-in ru/en locales, switch via /lang.

RU EN

Scheduled Messages

Delayed messages, automatic drip chains on subscription, and recurring broadcasts on schedule

Delayed
Drip chains
🔄 Recurring

Granular permissions

Notification types at the project level. Subscribers control what they receive.

Deep link subscription

Link like t.me/bot?start=proj_SLUG. One-click subscription with subscriber_id binding.

Media & buttons

Photos, videos, documents. Inline buttons with URL or callback_data. Up to 3 rows of 3 buttons.

Message templates

Create a template with variables: {{order_id}}. Reuse without duplicating text.

Webhooks

12 event types: subscriptions, delivery, broadcasts, buttons, auth, helpdesk. HMAC-SHA256 signature. Configure via dashboard or API.

Markdown & HTML

Text formatting: bold, italic, code, links. Support for plain, markdown, and html formats.

Sender branding

Signature with name, description, and logo. Auto-messages on subscribe and unsubscribe in two languages.

Delivery analytics

Sending statistics: total, failed, by channel, by day for 30 days.

Segments (tags)

Predefined tags for segmentation. CRUD via dashboard and API, up to 20 per project.

API

Simple REST API

Bearer token, JSON in/out. A handful of endpoints cover all scenarios.

api.zapnoty.com
POST /v1/send
 
{
"subscriber_id": "550e8400-...",
"text": "Order #1042 shipped!",
"buttons": [[{
"text": "Track",
"url": "https://..."
}]]
}
POST /v1/send
POST /v1/otp/send
POST /v1/otp/verify
POST /v1/broadcast
GET /v1/subscribers
PUT /v1/subscribers/:id/tags
GET /v1/auth/link
POST /v1/auth/verify
POST /v1/helpdesk/tickets
POST /v1/helpdesk/tickets/:id/reply
GET /v1/templates
PUT /v1/webhook

How it works

From sign-up to first notification in 5 minutes

Create a project

Sign up with Yandex or VK, create a project and get an API key.

Connect subscribers

Send users a deep link. They subscribe in one click via Telegram or Max bot.

Start sending

One HTTP request with a Bearer token — and the notification is delivered instantly.

Free to start

Three lines of code — and notifications just work

No credit card required. First 1,000 notifications per month free. Integrate in 5 minutes.

curl -X POST /v1/send
-H "Authorization: Bearer zn_..."
-d {"text": "Hello!"}
Get started free

FAQ

Frequently asked questions

Yes, subscribers need Telegram or Max. They follow a deep link, tap Start in the bot — and they're subscribed. No sign-up or extra apps required.

First 1,000 notifications per month are free. No credit card required. Paid plans for higher volumes coming soon.

Notifications are delivered via messengers, not SMS. It's free for senders, instant, and supports buttons, media, and formatting. SMS costs money and is limited to plain text.

The /stop command in the bot unsubscribes from all projects. Subscribers can also manage subscriptions via /settings.

Yes, the API works globally. Server is in Russia, but you can send notifications to subscribers in any country where Telegram or Max is available.

Yes. You can send inline buttons with URL or callback_data, as well as images, videos, and documents via the media field.

POST /v1/otp/send generates a 6-digit code and sends it to the subscriber. POST /v1/otp/verify checks the entered code. Built-in brute-force protection: max 5 attempts, 5-minute TTL.

Yes. The limit is 300 requests per minute per project. Exceeding it returns 429 with a Retry-After header and retryable: true in JSON. All API errors include a retryable field to help decide whether to retry.

Yes. The Management API provides CRUD operations for templates, permissions, tags, and webhook. Similar to setWebhook in Telegram Bot API. See the "Management (API)" section in the docs.

The user clicks a bot link → confirms login in the messenger → automatically subscribes to notifications → your server receives user data (name, username, subscriber_id). Three options: static link, API session with state, QR-polling for cross-device. See the "User Auth" section in the docs.

Helpdesk is a built-in ticket support system. Customers message the bot — a ticket is created and the user is automatically subscribed to notifications. You reply via API (POST /v1/helpdesk/tickets/{id}/reply) or dashboard. Includes statuses (new, in_progress, waiting, closed), ticket types (Bug, Suggestion, Question, Finance — customizable), SLA timers, and webhook events. Supports virtual channel for tickets from website/app users without a messenger — replies are delivered via webhook. Enable in project settings.

Yes! Zapnoty supports three types: scheduled send (specific date/time), drip chains on subscription, and recurring broadcasts (every N hours).