Skip to main content

Viber

Viber reaches 1 billion users worldwide. Orbit offers two non-overlapping tiers — pick the one that matches your use case. Both tiers share the same POST /api/v1/messages/viber endpoint — the platform routes through the right provider based on your tenant configuration. You don’t need to change client code when you upgrade from Tier 1 to Tier 2.

Tier 1 — One-way Basic Messaging

Tier 1 is wholesale Viber-over-SMPP termination. Devotel maintains the upstream aggregator relationship, so every paying tenant gets outbound Viber the moment their account is wired into the platform’s SMPP route — no per-tenant Viber Business signup is required.

How it works

  • Routing: messages flow apps/api → Jasmin HTTP API → SMPP client smppc(viber) → upstream aggregator → Viber.
  • Sender identity: an alphanumeric sender ID (up to 11 characters, e.g. OrbitDemo). Sender IDs must be allow-listed by Devotel before first use — submit yours during onboarding.
  • Direction: outbound only. Inbound replies are not delivered to your webhook in this tier.
  • Billing: charged on DLR delivered. Submit-time and rejected messages are free.
  • Throughput: subject to your plan’s /messages/viber rate-limit row (see Rate Limits).

Send a Tier 1 message

status: "queued" means the message is persisted and accepted, not yet delivered — the terminal delivered / failed state arrives later via the delivery-status webhook (and in Tier 2, inbound replies arrive at your webhook too). Poll GET /api/v1/messages/{id} if you can’t consume webhooks. The sender ID is passed in the from field (the allow-listed alphanumeric ID — there is no sender_name field). Tier 1 is text-only. Rich media (attach a media_url) and inbound replies require Tier 2. The Tier 1 request body is deliberately small:

Tier 2 — Two-way Advanced Messaging

Tier 2 uses the Viber Business HTTP API directly with a per-tenant authentication token. You get a branded sender (verified business name, logo), inbound replies routed to your webhook, and media-rich messages (image attachments via media_url).

How to enable

Tier 2 is not self-serve — branded Viber Business sender activation requires sender registration directly with Rakuten Viber, which Orbit cannot bypass. The registration is coordinated out-of-band by your Devotel account manager. Typical end-to-end onboarding is 5-10 business days, sometimes longer if Rakuten Viber requests additional brand verification artifacts (trademark proof, domain ownership, sample message content). To provision your tenant:
  1. Email support@devotel.io or contact your Devotel account manager with your organization ID, the business name + logo you want on the sender profile, and the destination markets you plan to message.
  2. Devotel submits the Rakuten Viber sender registration on your behalf and shepherds the application through Rakuten’s review.
  3. Once Rakuten approves the sender, Devotel attaches the issued auth token to your tenant configuration via the admin panel.
  4. You’re live and the same POST /api/v1/messages/viber endpoint starts routing through the Business HTTP API instead of SMPP — no code change required.
Why the timeline matters: Rakuten Viber gates every branded Business Messages sender behind a manual approval queue. Expedited onboarding is not available — plan campaign launch dates around the 5-10 business-day window and have Tier 1 (SMPP) ready as a fallback for time-sensitive transactional traffic during the wait.

Send a Tier 2 rich message

The envelope is the same in both tiers — the routes share the same POST /api/v1/messages/viber endpoint and the same row shape (id, status, channel). Upgrade from Tier 1 to Tier 2 without changing your client code. The basic request body is the same simple shape on both tiers — to, body, an optional from (branded sender), and an optional media_url for an image or other media attachment. For a plain text or media message, put any call-to-action link inline in body.

Tier 2 media

Tier 2 rich cards, carousels, and keyboards

Tier 2 also sends Viber’s structured message types — rich cards (buttons with images, prices, and tap actions), multi-card carousels, and reply keyboards. You supply the native Viber payload through two metadata keys on the same POST /api/v1/messages/viber request: metadata values are strings, so pass each payload as a JSON string. The platform parses it and forwards the native structure to Viber unchanged, so any field the Viber Business REST API accepts is supported.
To attach a reply keyboard instead of (or in addition to) a rich card, set metadata.keyboard to a JSON-encoded Viber keyboard object:
If Viber rejects the structure — e.g. a malformed rich_media type or a keyboard object failing a business-rule check — the send returns HTTP 502 with the machine-readable code MESSAGE_SEND_FAILED:
Rich cards, carousels, and keyboards require a Tier 2 branded sender — a Tier 1 SMPP tenant can only send text and inline links. If Viber rejects the structure, the send returns a 502 with the provider’s status code in details.viberStatus; check your payload against the linked Viber reference.

Inbound webhook semantics (Tier 2)

When a Viber user replies to your Tier 2 branded sender, Viber POSTs the event to the platform’s inbound route POST /api/v1/webhooks/inbound/viber and Orbit relays it to the webhook URL you set under Settings → Webhooks on the standard inbound event. Replies arrive with channel: "viber" and direction: "inbound". Tier 1 is outbound-only — no inbound replies and no inbound webhooks in that tier. The from ↔ to mapping is symmetric with the outbound send: from is the replying Viber user’s phone number, to is your branded sender. To answer a reply, send POST /api/v1/messages/viber with the inbound from value as the outbound to and your branded sender as from.
Inbound (P2A) replies only reach accounts with Viber chatbot capabilities. Standard Viber Business Message accounts are outbound-only (A2P) — Viber does not forward user replies to them. This is a Viber platform limitation, not an Orbit limitation. Ask your Devotel account manager to confirm chatbot capability during sender registration if your flow depends on replies.
A typical inbound payload:
Viber DLR callbacks (delivered, seen, failed) land on a separate platform route that the sender registration wires automatically — you only ever configure your own URL under Settings → Webhooks.

Onboarding & provisioning

Tier 1 — sender-ID allow-list (self-serve on first send)

Tier 1 is auto-provisioned: no per-tenant Viber Business signup and no platform onboarding step — every paying tenant is wired into the shared SMPP termination route the moment their account is active, and the first send works out of the box. The only per-tenant artifact is your alphanumeric sender ID (up to 11 characters, e.g. OrbitDemo). Sender IDs must be allow-listed by Devotel before first use:
  1. Pick your sender ID and email support@devotel.io (or your Devotel account manager) with your organization ID and the ID you want allow-listed.
  2. Devotel registers the ID with the upstream Viber aggregator. Once allow-listed, the ID participates in SMPP sender resolution for every send.
  3. There is no separate Viber status page — check general channel configuration under Settings → Channels. An ID sent before allow-listing is rejected by the aggregator and surfaces as a failed delivery status on the message and on your status webhook.

Tier 2 — Rakuten Viber Business registration

Tier 2 requires Rakuten Viber to approve a branded Business sender — Orbit cannot register on your behalf silently, but your Devotel account manager coordinates the whole application:
  1. Send your account manager the registration artifacts Rakuten requires: the business display name, the sender profile logo (used as your sender avatar), the destination markets you plan to message, and — when Rakuten’s review asks for verification — trademark or domain ownership proof plus sample message content.
  2. Devotel submits the Rakuten Viber sender registration and shepherds it through Rakuten’s manual review. Expect 5-10 business days end to end.
  3. Rakuten returns your issued Viber Business auth token, an approved sender name, and an approved avatar. Devotel stores them encrypted under your organization’s settings.channels.viber .businessAccount and attaches the token to your tenant through the admin panel.
  4. From that moment the same POST /api/v1/messages/viber endpoint routes your sends through the Viber Business HTTP API instead of SMPP — no code change required. Sends made before the token lands keep routing through Tier 1, so OTP and other time-critical traffic is never blocked on the application.
Plan campaign launches around the queue: Rakuten gates every branded Business sender behind a manual approval queue and there is no expedited path. Start Tier 1 traffic first, then flip to Tier 2 the day the token is attached.

Rate limits & throughput

Keep sustained throughput below the lease your Rakuten quota grants and split campaigns across the campaigns API so one-off bursts never collide with transactional traffic.

Common errors


Pricing

Tier 1 (SMPP) bills on delivered at your plan’s per-message Viber rate — submit-time and rejected messages are free. Tier 2 rides the own-token BYO policy: Rakuten bills your Business account directly, and Devotel attaches the issued token at the platform rate for BYO tokens (see the pricing page for your plan’s per-channel rows). Your plan’s /messages/viber rate-limit row applies to both tiers.

Delivery & fallback (Tier 1 and Tier 2)

When a Viber message cannot be delivered (recipient does not have Viber installed, sender ID is not allow-listed in the destination market, the upstream aggregator returns a permanent failure, or — for Tier 2 — the Rakuten Viber Business HTTP API rejects the send), Orbit can automatically retry the send over another channel (typically SMS) without changing your request. The fallback chain is configured per organization, not per request. Once configured, every Viber send transparently retries the next channel in the chain when delivery fails for a Viber-specific reason.

Configure Viber → SMS fallback

The cross-channel fallback chain lives on the organization, under settings.cross_channel_fallback. Enable it once from the dashboard:
  1. Open Settings → Channels → Cross-Channel Fallback.
  2. Add a rule with Primary: Viber and Fallback: SMS (you can chain more channels — e.g. Viber → WhatsApp → SMS — and they will be tried in order).
  3. Save. The change takes effect on the next send; no redeploy or send-path change is required.

What triggers the fallback

  • Recipient is not reachable on Viber — the destination number is not registered with Viber, or (Tier 2) the Viber Business API returns a capability error. The router advances to the next channel in the chain.
  • All Viber providers fail — every registered Viber provider (Tier 1 SMPP and any Tier 2 HTTP API) returns a non-retryable error within the configured retry budget.
  • TCPA opt-out re-check — when the chain falls through to SMS, Orbit re-runs the SMS opt-out + DNC check against the recipient. If they have opted out of SMS (even though they accepted Viber), the message is suppressed rather than delivered over SMS.
The request body for /messages/viber does not accept a fallback field — passing one is ignored. Fallback behavior is entirely driven by the organization-level configuration so it stays consistent across every send path (API, campaigns, journeys, inbox replies) without requiring callers to remember to set a flag. The fallback runs through the standard SMS billing path — see the Messaging API reference for the full envelope.

Termination plane

The two tiers above differ in how they terminate, not just what they allow: Tier 1 egresses as SMPP through the dedicated orbit-vib account on Devotel’s SMPP hub, while Tier 2 posts to the Rakuten Viber Business HTTP API with your per-organization token — and the retired __VIBER__: content-prefix mechanism predates both. The Viber termination model concept page documents the termination-plane split, what your tier setting flips at send time, and how delivery receipts and sender registration differ between the two paths.