Push API

The Push API registers mobile app installations with the SMSBAT omni push service and collects the delivery callbacks that the cascade depends on.

Base URL

https://restapi.smsbat.com

Getting this wrong is the first thing to rule out. An earlier integration pointed at omni.smsbat.com, where every request was swallowed without an error — registration appeared to succeed and nothing was ever stored.

Authentication

Every request carries the application key issued for your app in the Omni panel:

X-Push-App-Key: <application key>
Content-Type: application/json

Endpoints

EndpointPurpose
POST /api/push/registerInstallationRegister an installation on sign-in
POST /api/push/unregisterInstallationUnregister an installation on logout
POST /api/push/notifications/{guid}/statusReport delivered / seen
GET /api/push/notificationsRead the notification inbox

The three identifiers

More integration time is lost to these three being confused than to anything else. They are not interchangeable:

IdentifierLooks likeWhat it is for
Firebase installation id (FID)fA9kQ2xRTb2mLp0WYs4nEvIdentifies the installation. Upsert key. Not deliverable.
FCM registration tokenfA9kQ2xRTb2mLp0WYs4nEv:APA91b… (~163 chars)The only value message.token accepts.
Expo push tokenExponentPushToken[…]Expo’s own service — a different transport entirely, not used here.

The registration token begins with the FID, which is exactly why the two get mixed up. Registration must send both.

Why the callbacks matter

Messages are delivered data-only, and the cascade waits on a delivered callback before falling through to Viber or SMS. A missing callback means the client is charged for a message the user already read on screen.