Which operations are server-side
Every operation below requires the Org-API-Key. A member token on any of them returns403.
| Operation | SDK method | Documented in |
|---|---|---|
| Exchange for a member token | exchangeToken(...) | Authentication |
| Credit points / mint | creditPoints(...) | Points and wallet |
| Upsert a member | setMember(...) | Members and tiers |
| Read a member summary | getMember(...) | Members and tiers |
| Remove a member | removeMember(...) | Members and tiers |
| Program analytics | analyticsSummary(), analyticsOffers(), analyticsTimeseries(...) | Analytics |
| Manage webhooks | createWebhook(...), list, delete | Webhooks |
Why the boundary exists
The two credentials carry very different authority, and that difference is the whole reason for the split.Org-API-Key
A long-lived secret with full authority over your org: it can mint tokens
for any member, move points, change tiers, and read every member’s data. It
must stay on your backend.
Member token
A short-lived credential scoped to a single member. If it leaks it
exposes one member for a few minutes; it cannot touch other members or any
org-wide operation.
exchangeToken.
Member mode vs server mode
| Member mode | Server mode | |
|---|---|---|
| Credential | Member token (Bearer) | Org-API-Key (Bearer) |
| Runs in | The app / SDK client | Your backend only |
| Scope | One member, short-lived | The whole org |
| Example operations | listOffers, createRedemption, checkEligibility, getWallet, concierge | exchangeToken, creditPoints, setMember, analyticsSummary, createWebhook |
| Wrong credential | Server-side endpoints return 403 | - |
Construct the server client
Initialize the SDK with the Org-API-Key as its token. The server-mode methods are additionally guarded client-side against being called with a member token.curl
The
403 is enforced on the server: even if a member token reached one of
these endpoints, the API rejects it. The client-side guard in the SDK is a
second layer that fails fast before the request is sent.Security checklist
The Org-API-Key is read only on your backend, never bundled into an app.
The app receives only member tokens (from
exchangeToken), with their expiry.Server-side calls - mint, credit, member management, analytics, webhooks - originate from your backend.
The Org-API-Key is stored as a backend secret, not in client-shipped environment variables or source.
If an Org-API-Key is ever exposed, rotate it immediately - it carries full org authority.
Server-side pages
Authentication
Exchange the Org-API-Key for short-lived member tokens and refresh them.
Members and tiers
Upsert profiles and tiers, read member summaries, and remove members.
Points and wallet
Mint and credit points into a member’s wallet from your backend.
Analytics
Program-wide rollups: summary, per-offer, and timeseries.
Webhooks
Register signed, retried event deliveries to your backend.