Failover endpoints — which API to use

Routee provides three send APIs for multi-channel Failover. They share the same idea — ordered steps, failover when a channel does not succeed — but differ in what you can put on Viber steps, which channels are supported, and how you track results.

Use this page to pick the right endpoint before you integrate.


Quick decision guide

Your message is…Use this API
A one-time password (login, payment, recovery) with Viber OTP templates and optional SMS backupFailover OTP
A transactional notification (order update, appointment reminder, …) with approved Rakuten BM templates on Viber, plus Sms/Voice fallbackTransactional Failover
Promotional or rich session Viber (free text, image, button, file, video) plus Sms and/or Voice fallbackStandard Failover

July 1, 2026: Template-based transactional Viber in Failover must use POST /failover/transactional, not the standard endpoint.


All send endpoints at a glance

APIMethod & pathBase URL
Standard FailoverPOST /failoverhttps://connect.routee.net
Transactional FailoverPOST /failover/transactionalhttps://connect.routee.net
Failover OTPPOST /failover-otp/otp/send-failoverhttps://connect.routee.net/failover-otp

API reference: Standard · Transactional · OTP

How-to guides: Standard · Transactional


Side-by-side comparison

Standard FailoverTransactional FailoverFailover OTP
When to useMarketing, rich Viber session messages, campaignsCompliant transactional Viber (BM templates) + fallbackOTP / verification codes only
Viber step typeFree-form message (text, media, action, file, …)BM template fields only (templateId, templateLang, templateParams)ViberOtp step (templateId, pin, templateType, …)
Sms in flowYesYesYes
Voice in flowYesYesNo
ServiceRoutee FailoverRoutee Failover (same service)Failover OTP (dedicated service)
Create response idtrackingIdtrackingId + flowKind: transactionalflowId (UUID)
TrackingGET/POST …/failover/trackingSame URLs; filter by flowKind: transactionalGET …/failover-otp/otp/failover/{id}
Callbackscallback.strategy + callback.url; payload includes flowKindSame as standardOptional callback.url; OTP tracking JSON shape
AuthBearer + Routee roles (MT_ROLE_FAILOVER, channel roles)Same as standardBearer (Routee access token)

Standard Failover

Endpoint: POST https://connect.routee.net/failover

Choose this when you send promotional or session Viber content — text, images, action buttons, files, or video — and want Sms and/or Voice as backup channels.

Typical scenarios

  • Abandoned-cart reminder: Viber rich message → SMS if undelivered
  • Promotional offer with image and CTA → Voice call as last step
  • Session-style Viber chat notifications with free-form body

Viber rules

  • Use the message object (text, imageUrl, action, etc.)
  • Do not send BM transactional template fields — they are rejected (400)

Not for: OTP codes (use Failover OTP) or BM transactional templates (use Transactional Failover).


Transactional Failover

Endpoint: POST https://connect.routee.net/failover/transactional

Choose this when Viber steps must use approved Rakuten BM transactional templates (compliance), and you may still fall back to Sms or Voice.

Typical scenarios

  • Order shipped / delivered notification with approved template → SMS backup
  • Appointment reminder (template) → Voice if Viber expires
  • Account alert that must not use promotional Viber formatting

Viber rules

  • Required: templateId, templateLang, senderInfoTrackingId
  • Optional: templateParams, deliveryScope, seq
  • Free-form Viber message and client label are rejected (400)

Prerequisite: Rakuten Viber transactional templates

Not for: OTP with Viber OTP templates (use Failover OTP) or promotional rich media (use Standard Failover).


Failover OTP

Endpoint: POST https://connect.routee.net/failover-otp/otp/send-failover

Choose this when the payload is a verification code delivered via Viber OTP templates and/or SMS — not general notifications or promotional Viber.

Typical scenarios

  • Login / 2FA: ViberOtp first → SMS if Expired / Failed / Undelivered
  • Password reset with dedicated OTP templates
  • Payment confirmation code with optional SMS fallback

Flow step types

  • ViberOtpsenderInfoTrackingId, templateId, pin, optional templateType and related fields
  • Smsmessage.body (and optional from)

Differences from Standard / Transactional

  • Separate service and base URL (/failover-otp)
  • No Voice steps
  • Tracking uses flowId and /failover-otp/otp/failover/… (not /failover/tracking)
  • Template list: GET /failover-otp/otp/templates

Not for: Marketing messages, BM transactional notifications, or Voice failover.


Standard vs Transactional (same Failover service)

Both use https://connect.routee.net, the same tracking URLs, and the same callback model. Only Viber step shape differs:

RulePOST /failoverPOST /failover/transactional
Viber message (text, media, action)AllowedRejected (400)
Viber templateId / templateLang / templateParamsRejected (400)Required on Viber steps
Client Viber labelOptionalRejected (400)
flowKind in response / callbacksstandardtransactional

Sending the wrong shape to the wrong endpoint always returns 400 — the APIs are intentionally strict so compliant traffic uses the right path.


Scenario examples

Business needRecommended APIExample flow
“Your code is 847291” for app loginFailover OTPViberOtp (pin) → Sms
“Your order #1234 has shipped” (approved BM template)Transactional FailoverViber (template) → Sms
“Flash sale — 50% off today” with Viber image + buttonStandard FailoverViber (message + imageUrl + action) → Sms
OTP + Voice reminder (unsupported)Failover OTP for OTP only; Voice is not available on OTP APIViberOtp → Sms only
Transactional template + Voice call if Viber failsTransactional FailoverViber (template) → Voice

Tracking & callbacks (summary)

APITrack a single flowSearch / listWebhooks
StandardGET /failover/tracking/{trackingId}POST /failover/trackingOptional; see Callbacks
TransactionalSame as standardSame; use flowKind: transactional filterSame; flowKind in payload
Failover OTPGET /failover-otp/otp/failover/{flowId or token}GET /failover-otp/otp/failover?…Optional callback.url on create

Full endpoint list: Resource Overview


Related documentation

TopicPage
Failover overviewFailover
Standard how-toHow to send a Failover message
Transactional how-toHow to send a transactional Failover message
CallbacksCallbacks (Webhook)
Status codesFailover Statuses