Headers, auth, and the HTTP surface used by both SDKs.
API reference
Base URL: YOUR_API_URL
All JSON. Typical envelope: { "data": ... } or { "error": "code", "message": "..." }.
Headers
| Header | When |
|---|---|
Content-Type: application/json | body requests |
X-Application-Code: YOUR_APP_CODE | identify app |
X-Application-Id: <uuid> | alternative to code |
X-Public-Key: rb_pub_… | paywall, payments, CMS Site |
Authorization: Bearer <jwt> | user-scoped routes |
Public
Get paywall
GET /v1/applications/{app_code}/paywalls/{paywall_code}
X-Public-Key: YOUR_PUBLIC_KEY
Remote config
GET /v1/applications/{app_code}/config?platform=web&app_version=1.0.0
Branding
GET /v1/applications/{app_code}/branding
X-Public-Key: YOUR_PUBLIC_KEY
Banners
GET /v1/applications/{app_code}/banners/{banner_code}
X-Public-Key: YOUR_PUBLIC_KEY
GET /v1/sites/{site_code}/banners/{banner_code}
X-Public-Key: YOUR_CMS_SITE_KEY
Authenticated (end user)
Register / profile
POST /v1/applications/{app_code}/users/register
Authorization: Bearer YOUR_ACCESS_TOKEN
{
"platform": "web",
"display_name": "Ivan",
"avatar_url": "https://cdn.example.com/a.jpg",
"timezone": "Europe/Moscow",
"acquisition_source": "organic",
"explicit_consent": true,
"consents": [
{
"document_id": "YOUR_LEGAL_DOCUMENT_UUID",
"version": "1",
"checkbox_text": "I accept the User Agreement",
"accepted": true
}
]
}
GET /v1/applications/{app_code}/users/me/consents
Authorization: Bearer YOUR_ACCESS_TOKEN
POST /v1/applications/{app_code}/users/me/consents
Authorization: Bearer YOUR_ACCESS_TOKEN
{
"source_screen": "reconsent_modal",
"consents": [ /* document_id, version, checkbox_text, accepted */ ]
}
PATCH /v1/applications/{app_code}/users/me
Authorization: Bearer YOUR_ACCESS_TOKEN
{
"display_name": "Ivan P.",
"avatar_url": "https://cdn.example.com/a2.jpg"
}
Name and avatar_url sync into Platform admin. Geo (country_code, city, timezone) is filled from IP on first contact. Guide: Users & profile.
Entitlements
GET /v1/applications/{app_code}/entitlements/me
Authorization: Bearer YOUR_ACCESS_TOKEN
Create payment
POST /v1/payments
Authorization: Bearer YOUR_ACCESS_TOKEN
X-Public-Key: YOUR_PUBLIC_KEY
{
"application_code": "YOUR_APP_CODE",
"plan_price_id": "uuid",
"return_url": "https://your.app/return"
}
Paid only. Free prices → 400 free_plan_offline.
License key
POST /v1/applications/{app_code}/license-keys/activate
Authorization: Bearer YOUR_ACCESS_TOKEN
{ "key": "RB-....", "installation_id": "optional" }
Devices
POST /v1/devices/register
GET /v1/devices?application_code=YOUR_APP_CODE
DELETE /v1/devices/{device_id}
Features
GET /v1/applications/{app_code}/features?platform=android&app_version=1.0.0
Events
POST /v1/events
POST /v1/events/batch
Event application binding: application_id / application_code in the body or X-Application-Id / X-Application-Code headers (lookup via service role).
Webhooks (server)
Payment provider webhooks hit the Platform API (not the marketing site). Configure the provider URL to the Platform payments webhook path provided in your deployment docs. Never put provider secrets in the client SDK.
CMS Site (public read)
GET /v1/applications/YOUR_APP_CODE/sites/YOUR_SITE_CODE/blog/posts
GET /v1/applications/YOUR_APP_CODE/sites/YOUR_SITE_CODE/kb/tree
GET /v1/applications/YOUR_APP_CODE/sites/YOUR_SITE_CODE/downloads
GET /v1/applications/YOUR_APP_CODE/sites/YOUR_SITE_CODE/changelog
X-Public-Key: YOUR_PUBLIC_KEY
Guide: CMS Site.