What is the Viber Business API and how do bots work in 2026?
The Viber REST Bot API (Rakuten Viber) lets verified commercial bots send and receive 1:1 messages with subscribed users. You need an active Viber account, a commercial bot (required since 5 February 2024), an authentication token sent as X-Viber-Auth-Token, and a HTTPS webhook via set_webhook. Users must subscribe (first message or “Receive messages”) before you can send freely; conversation_started allows one welcome message. For outreach by phone number against an existing CRM, Viber offers Business Messages through official partners. Message types include text, picture, video, file, location, sticker, contact, URL, rich media carousels, and keyboards. Broadcast supports up to 300 receivers per request. Ominiflow is a WhatsApp Cloud API platform — use this guide when Viber is the local default, and pair with WhatsApp where Meta dominates.
Last updated: 4 September 2026
WhatsApp owns most of the world’s business chat. Viber still owns pockets of Eastern Europe, the Balkans, Greece, and parts of Southeast Asia — often at 70–90% smartphone penetration. If you sell or support customers in those markets, ignoring Viber is like ignoring WhatsApp in India.
This guide explains the official Viber REST Bot API: how to get started, webhooks, send/broadcast, subscription rules, Business Messages, billing-related status codes, and which countries to prioritise. Ominiflow runs WhatsApp Cloud API — we publish this so multi-market teams pick the right channel per country, not one messenger for everywhere.
Talk WhatsApp + channel strategy → WhatsApp API guide
Too long? Start here
- Viber bots are commercial-only since 5 February 2024 — apply via Rakuten Viber or an official partner
- Auth = HTTP header
X-Viber-Auth-Token(app key from bot settings) - Webhook must be HTTPS with a trusted CA (no self-signed);
set_webhookprobes your URL for HTTP 200 - You can message users only after they subscribe (first inbound message auto-subscribes; that first message does not fire a
subscribedcallback) conversation_started→ one welcome message within 5 minutes — not a full session- Phone-number CRM blasts → Business Messages via partners (not raw Bot API alone)
- Country deep dives: Ukraine · Greece · Bulgaria · Serbia · Philippines · Belarus
What is the Viber Business / Bot API?
Rakuten Viber’s REST API lets a business bot:
- Receive callbacks (messages, delivered, seen, subscribed, unsubscribed, conversation started, failed)
- Send 1:1 messages to subscribed users (
send_message) - Broadcast to up to 300 subscribed receivers per request (
broadcast_message, rate limit ~500 requests / 10 seconds) - Attach custom keyboards and rich media / carousel layouts
- Fetch account info, user details, and online status
Base host for bot calls: https://chatapi.viber.com/pa/. Primary docs: Get Started.
Get started (official checklist)
Per Viber’s developer docs you need:
- Active Viber account on iOS/Android (becomes bot admin)
- Active commercial bot — free/self-serve bot creation ended; apply commercially through Rakuten or verified partners
- Authentication token — More → Settings → Bots → Edit Info → Your app key
- Webhook URL — set once so Viber can push events
Supported clients: iOS/Android Viber 6.5+, desktop 6.5.3+. Promote the bot with a deeplink, Viber Ads, stickers, or lenses — not only in-app discovery.
Authentication token
Every request must include:
X-Viber-Auth-Token: YOUR_APP_KEYMissing header → missing_auth_token. Treat the token like a production secret; rotate via admin if leaked.
Webhooks (set_webhook)
Endpoint: POST https://chatapi.viber.com/pa/set_webhook
{
"url": "https://your.host/viber/webhook",
"event_types": ["delivered", "seen", "failed", "subscribed", "unsubscribed", "conversation_started"],
"send_name": true,
"send_photo": true
}- URL must use SSL from a CA on the Sun Java trusted root list — self-signed fails
- Viber sends a
webhookcheck callback; your server must answer HTTP 200 or setup fails (invalidUrl) - Omit
event_typesto receive all events; empty array = mandatory only (message,subscribed,unsubscribed) send_name/send_photorespect user privacy (Content Personalisation). Opt out if you don’t need PII- Remove webhook (disable 1:1 button): post
{"url":""}
Callbacks are signed with HMAC-SHA256 of the JSON body using your auth token; verify header X-Viber-Content-Signature. Offline webhooks get up to 10 retries with exponential backoff (10s → 900s).
Subscription model (critical)
- Store every subscriber ID yourself — there is no API to list all subscribers
- IDs appear in
sender.id(message) oruser.id(subscribed / conversation_started) - First user message → auto-subscribe, but you get a message callback, not
subscribed subscribedfires when an unsubscribed user opens Chat Info → Receive messages- Resubscribe clears prior
context/tracking_data
Send message & message types
Endpoint: POST https://chatapi.viber.com/pa/send_message. Max JSON body ~30 KB.
Common fields: receiver, type, sender.name (max 28 chars), optional sender.avatar, tracking_data, min_api_version.
| Type | Notes |
|---|---|
| text | Up to 7,000 chars; supports Viber text formatting |
| picture | JPEG/PNG/static GIF; iOS ≤1 MB, Android ≤3 MB |
| video | MP4/H264, ≤26 MB, duration ≤180s |
| file | ≤50 MB; many executable extensions forbidden |
| location / contact / sticker / url | Maps, vCard-style contact, sticker IDs, link/GIF |
| rich_media | Carousel; Viber 6.7+; no forward; no location-picker / share-phone actions |
Response includes billing_status (0–5) so you know session vs out-of-session / charged traffic. Attach a keyboard on any message type for predefined replies.
Broadcast message
Endpoint: POST https://chatapi.viber.com/pa/broadcast_message. Same message types; add broadcast_list (max 300 subscribed IDs). Placeholders: replace_me_with_receiver_id, replace_me_with_url_encoded_receiver_id, replace_me_with_user_name. Failed receivers return in failed_list with status codes (e.g. not subscribed).
Welcome message flow
- User opens chat via Message button or deeplink →
conversation_started - Bot may send one welcome via
send_messagewithin 5 minutes - Full messaging still requires subscription
Deeplink context example: viber://pa?chatURI=your_bot_URI&context=campaign_id
Business Messages (phone-number API)
Bot API alone cannot cold-message arbitrary phone numbers. For CRM-driven outreach by MSISDN, Viber’s Business Messages product is sold through official partners covering your geography. Apply via partner; they handle commercial terms and delivery rules.
Errors ops teams hit
| Code | Name | Meaning |
|---|---|---|
| 5 / 6 | receiverNotRegistered / NotSubscribed | Bad ID or no opt-in |
| 10 | webhookNotSet | Set webhook before chat |
| 12 | tooManyRequests | Rate limit |
| 21 | unsupportedCountry | Destination country blocked for that message |
| 23 / 24 | freeMessagesExceeded / noBalance | Commercial quota / billing |
Full table: Error codes.
Where Viber wins by country (2026)
Industry analyses (Infobip, Sinch, Similarweb-based market notes) consistently put Viber at or near #1 in:
- Ukraine — largest traffic share of Viber globally
- Greece, Bulgaria, Serbia, Belarus — often cited ~90% phone penetration
- Philippines — top-tier messenger alongside Facebook Messenger
Elsewhere (India, Brazil, most of LatAm, much of SEA), lead with WhatsApp Business API on Ominiflow.
Viber Bot API vs WhatsApp Cloud API
| Viber REST Bot API | WhatsApp Cloud API | |
|---|---|---|
| Owner | Rakuten Viber | Meta |
| Access | Commercial bot + token | WABA via BSP / Meta |
| Cold CRM by phone | Business Messages (partners) | Approved templates + opt-in |
| Session model | Subscribe + billing_status | 24h service window + templates |
| Best markets | CEE, Balkans, Greece, PH | India, LatAm, MENA, most global |
| Ominiflow | Strategy / WhatsApp sibling channel | Native product |
Suggested architecture for multi-market brands
- Map messenger share by destination country
- Run WhatsApp on Ominiflow for India, UAE, US diaspora, LatAm, etc.
- Run Viber bots + Business Messages via a Rakuten partner for Ukraine / Greece / Balkans / PH
- Unify CRM identity (phone E.164); keep channel preference per contact
- Never blast purchased lists on either network
FAQ
Is the Viber Bot API free in 2026? expand_more
No. Since 5 February 2024 bots are commercial. Expect partner or Rakuten commercial terms, quotas (freeMessagesExceeded), and balance checks (noBalance).
Can I message any Viber user by phone number? expand_more
Not with Bot API alone. Users must subscribe, or you use Business Messages through an official partner against an opted-in database.
Do I need a webhook? expand_more
Yes for production 1:1 chat. Without a valid webhook, conversation UX and callbacks break (webhookNotSet).
Does Ominiflow send on Viber? expand_more
Ominiflow is a WhatsApp Cloud API Revenue OS (inbox, bots, CRM, Meta fees at cost). Use this cluster to plan Viber where it is default, and Ominiflow where WhatsApp is default.
Which country guides should I read next? expand_more
Ukraine, Greece, Bulgaria, Serbia, Philippines, Belarus.
Next step
Building for WhatsApp-first markets (India and global)? Start Ominiflow trial · Book a channel strategy call · WhatsApp by country.
Updated 4 September 2026. API behaviour summarised from Rakuten Viber REST Bot API docs v7.3. Confirm live commercial terms with Viber or an official partner. Market penetration figures are industry estimates and change over time.