Guides

Viber Business API Guide 2026: REST Bot API, Setup & Country Markets

Published on
Updated on
16 min read
By Hemant Nagar
Smartphone messaging interface representing Viber Business API bots

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_webhook probes 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 subscribed callback)
  • 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:

  1. Active Viber account on iOS/Android (becomes bot admin)
  2. Active commercial bot — free/self-serve bot creation ended; apply commercially through Rakuten or verified partners
  3. Authentication token — More → Settings → Bots → Edit Info → Your app key
  4. 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_KEY

Missing 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 webhook check callback; your server must answer HTTP 200 or setup fails (invalidUrl)
  • Omit event_types to receive all events; empty array = mandatory only (message, subscribed, unsubscribed)
  • send_name / send_photo respect 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) or user.id (subscribed / conversation_started)
  • First user message → auto-subscribe, but you get a message callback, not subscribed
  • subscribed fires 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.

TypeNotes
textUp to 7,000 chars; supports Viber text formatting
pictureJPEG/PNG/static GIF; iOS ≤1 MB, Android ≤3 MB
videoMP4/H264, ≤26 MB, duration ≤180s
file≤50 MB; many executable extensions forbidden
location / contact / sticker / urlMaps, vCard-style contact, sticker IDs, link/GIF
rich_mediaCarousel; 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

  1. User opens chat via Message button or deeplink → conversation_started
  2. Bot may send one welcome via send_message within 5 minutes
  3. 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

CodeNameMeaning
5 / 6receiverNotRegistered / NotSubscribedBad ID or no opt-in
10webhookNotSetSet webhook before chat
12tooManyRequestsRate limit
21unsupportedCountryDestination country blocked for that message
23 / 24freeMessagesExceeded / noBalanceCommercial 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:

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 APIWhatsApp Cloud API
OwnerRakuten ViberMeta
AccessCommercial bot + tokenWABA via BSP / Meta
Cold CRM by phoneBusiness Messages (partners)Approved templates + opt-in
Session modelSubscribe + billing_status24h service window + templates
Best marketsCEE, Balkans, Greece, PHIndia, LatAm, MENA, most global
OminiflowStrategy / WhatsApp sibling channelNative product

Suggested architecture for multi-market brands

  1. Map messenger share by destination country
  2. Run WhatsApp on Ominiflow for India, UAE, US diaspora, LatAm, etc.
  3. Run Viber bots + Business Messages via a Rakuten partner for Ukraine / Greece / Balkans / PH
  4. Unify CRM identity (phone E.164); keep channel preference per contact
  5. 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.

Need help? Chat with AI